Linuxのdirnameコマンドは、最後のコンポーネントが削除されたファイルパスを出力します。これにより、基本的にファイルパスからディレクトリパスが得られます。
これは、長いファイルパスからディレクトリパスを抽出するbashスクリプトで特に役立ちます。
dirnameコマンドは、basenameコマンドを補完します。 basenameコマンドはパスからファイル名を抽出し、dirnameはディレクトリパスを抽出します。
いくつか例を挙げてお見せしましょう。
dirnameコマンドは単純な構文です。
dirname OPTION PATH
ファイルの絶対パスでdirnameコマンドを使用すると、ディレクトリパスが得られます:
dirname /home/user/data/filename.txt
/home/user/data
basenameコマンドと同様に、dirnameコマンドも実際にはばかげています。実際にはファイルパスを認識しません。スラッシュ(/)を探し、最後のスラッシュの前にあるものをすべて出力します。 基本的に、/を含む任意の文字列を指定でき、それで機能します。
たとえば、ここではファイル名を含まないランダムな文字列を使用しています。それでも同じように機能し、最後の/とその後のテキストを削除する文字列を出力することがわかります。
パスにスラッシュ(/)が含まれていない場合は、現在のディレクトリを示すドット(。)が出力されます。
複数のパスでdirnameを使用することもできます。新しい行の各パスの出力を返します:
-zオプションを使用して、出力がNULL文字で区切られた同じ行の結果を取得できます。
bashスクリプトでdirnameを使用する
dirnameコマンドの例をいくつか示しました。 bashスクリプトでのdirnameの使用について話しましょう。
ファイルパス変数があり、ファイルを含むディレクトリへのパスを取得するとします。これは単純なスクリプトである可能性があります:
pathname="/home/dir/data/filename"
result=$(dirname "$pathname")
echo $result
前述したように、dirnameコマンドはbasenameコマンドで補完されます。 dirnameとは異なり、basenameコマンドはパスの最後のコンポーネントのみを出力します。
このチュートリアルが気に入っていただけたでしょうか。いつものように、コメントセクションで質問したり提案したりしてください。
記事が気に入りましたか?それを共有して、私たちの成長を助けてください:)