コマンドラインで作業しているとき(特にシェルスクリプトを処理しているとき)、ファイル名だけに関心がある場合がありますが、使用できるのはファイルの完全なパスです。したがって、要件はパスのディレクトリコンポーネントを削除することです。コマンドが存在することを知って喜ぶでしょう-basename -それがこの仕事をします。
このチュートリアルでは、わかりやすい例を使用して、「basename」の基本について説明します。ただし、それに進む前に、ここでのすべての例がUbuntu16.04LTSマシンでテストされていることを言及する価値があります。
Linuxベース名コマンド
basenameコマンドを使用すると、不要なファイル名からコンポーネントを取り除くことができます。ツールの構文は次のとおりです。
basename NAME [SUFFIX]
basename OPTION... NAME...
そして、manページには次のように書かれています:
basename - strip directory and suffix from filenames
Print NAME with any leading directory components removed. If specified, also remove a trailing
SUFFIX.
以下は、basenameコマンドがどのように機能するかについての良いアイデアを与えるはずのQ&Aスタイルの例です。
Q1。 basenameコマンドはどのように機能しますか?
デフォルトでは、ファイルへのフルパスを入力として「basename」コマンドを実行すると、コマンドはファイル名を出力に返します。たとえば、次のコマンドを実行した場合:
basename /home/himanshu/Downloads/analytics.pdf
次の出力が得られました:
analytics.pdf
Q2。 basenameは複数の入力を処理できますか?
はい、できます。ただし、これを行うには、-aコマンドラインオプションを使用する必要があります。たとえば、次のコマンドを実行した場合:
basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
そして、これが私が得た出力です:
analytics.pdf
test.png
Q3。ベース名のストリップファイル拡張子も作成するにはどうすればよいですか?
場合によっては、ファイル名のみを取得し、拡張子は取得したくない場合があります。これは、-sコマンドラインオプションを使用して実行できます(入力としてサフィックスを渡す必要があります)。
たとえば、次のコマンド:
basename -s .pdf /home/himanshu/Downloads/analytics.pdf
この出力を生成しました:
analytics
Q4。各行の出力をNULで終了させる方法は?
デフォルトでは、改行文字が出力の区切り文字として使用されます。ただし、必要に応じて、basenameでNULを区切り文字として使用するように強制できます。これは、-zコマンドラインオプションを使用して実行できます。
例:
basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
そして、これが出力です:
analytics.pdftest.png
したがって、ここにはNUL文字は表示されません。そのためには、出力をファイルにリダイレクトしてから、vimなどのエディターでファイルを開く必要があります。 vimが示したものは次のとおりです:
ご覧のとおり、basenameは機能が豊富なコマンドではありません。提供されるオプションは限られており、これらのほとんどはこのチュートリアルで説明されています。これらの練習が終わったら、ツールのマニュアルページにアクセスして詳細を確認してください。