POSIX1日1コマンド[part7]: basename
詳細はこちらの記事へ。1日1POSIXコマンドを実行してみようというやつです。
basename
とりあえず使ってみる
$ ls a.txt $ basename a.txt a.txt # suffixを指定 $ basename a.txt .txt a
$ pwd /home/vagrant/shells/006 $ basename `pwd` 006
$ ps aux | grep chronyd chrony 556 0.0 0.3 115640 1776 ? S Feb25 0:00 /usr/sbin/chronyd vagrant 3805 0.0 0.1 12448 676 pts/0 R+ 04:05 0:00 grep --color=auto chronyd ps aux | grep chronyd $ ps aux | grep chronyd | awk '{ print $11 }' | head -n 1 /usr/sbin/chronyd $ basename $(ps aux | grep chronyd | awk '{ print $11 }' | head -n 1) chronyd
basename を知る
ざっくり使い方
basename string [suffix]
ざっくりDESCRIPTION
パス名のディレクトリじゃない部分を返す。文字列のオペランドは XBD pathname
で定義されているパス名として扱われる。
文字列は、文字列中の最後のパス名に対応するファイル名に変換され、その後に接尾辞文字列接尾辞があればそれを削除するものとする。これは、次のステップに相当するアクションを順番に実行することによって行われます。
- stringがヌル字列の場合、結果の文字列が '.'かどうかは不明です。もしくは、ヌル文字列です。いずれの場合も、手順2〜6はスキップしてください。
- stringが"//"の場合、ステップ3〜6がスキップされるか処理されるかどうかは、実装定義である。
- stringが全てスラッシュで構成されている場合、文字列は単一のスラッシュ文字に設定されます。この場合は、手順4〜6をスキップしてください。
- stringの最後にスラッシュがある場合、それらは削除される
- stringにスラッシュが残っている場合、文字列中の最後のスラッシュまでの文字列の接頭辞は削除されます。
- suffixスオペランドが存在し、stringに残っている文字と同一ではなく、stringに残っている文字のsuffixと同じである場合、接尾辞,suffixは文字列から削除されます。それ以外の場合、このステップでは文字列は変更されません。文字列に接尾辞が見つからない場合は、エラーとみなされません。
補足資料
ざっくりOPTION
なし
ざっくりOPERANDS
basename <string>
basename <suffix>
ざっくりまとめ
パスを渡すと最後パスの最後の部分を抜き出してくれる。
正直basenameをいつ使うのか思いつきません。
いっぱいパス処理しないといけなくて、かつ拡張子が不必要な場合とかに使えるだろうか。
== 活用方法募集中 ==