Bashスクリプトでbasenameコマンドを使用する

Popular:
サーバー設定をレベルアップ! AVAを適用 そして、次のように開始します 15%割引
プロモを使用:

Bashスクリプトでのbasenameコマンドの使用

Bashスクリプトでは、最も一般的なタスクの1つはファイルパスの操作です。特に、フルパスからファイル名だけを抽出したいときに便利です。そこで、basenameコマンドが登場します。一見シンプルに見えますが、basenameは、より複雑なスクリプト、オートメーションツール、ホスティングサービス、CI/CD環境で正しく使用すると強力なユースケースを持ちます。

basenameとは何ですか?

basenameコマンドは、ディレクトリパスを削除し、オプションでファイル拡張子を取り除き、ファイルパスの最終コンポーネントであるベース名のみを残します。

🔧 基本構文:

✅ シンプルな例:

スクリプトでbasenameを使用する理由は?

ここでは、実際のスクリプティングニーズのいくつかの例を示します:

Bashスクリプトでの実用的なユースケース

📁 1. ログ記録付きのファイルのループ処理

このスクリプトは、.logファイルをループ処理し、拡張子なしの名前を抽出し、各アクションをログに記録します。basenameは、複雑な文字列スライスなしでファイル名の処理を簡素化します。

📂 2. 動的ファイルパスのためのbasenameの使用

ユーザー入力や他のプロセスからフルパスを受け取るとしましょう:

basenameをスクリプトで使用することで、動的ファイルパスを扱う際の柔軟性が確保されます。特に、ログ、設定ファイル、バックアップが異なるディレクトリに存在する可能性のあるLinux VPSのような環境では、スクリプトが堅牢になります。これにより、/var/log/syslogのようなフルパスや、./config.txtのような相対ファイルが渡された場合でも、スクリプトは強力です。

🧪 3. basenameとdirnameの組み合わせ

パス要素を分離するために一緒に使用します:

basenameを使用したファイル拡張子の削除

既知の拡張子を削除したい場合:

⚠️ 注意:これは、サフィックスが正確に一致する場合にのみ機能します。したがって、.txtは機能しますが、.TXTや.tar.gzは明示的に指定しない限り機能しません。

複数の拡張子の場合、basenameを他のツールと組み合わせます:

または:

basenameとパラメータ展開

basenameは直感的ですが、サブプロセスを生成します。パフォーマンスが重要なスクリプトや大きなループでは、純粋なBashの代替手段を選択してください:

Bashネイティブの同等物:

ネイティブBashで拡張子を削除:

✅ 外部basenameを呼び出すよりも速いです。

例:ファイルを一括でリネーム

すべての.jpgファイルに今日の日付をプレフィックスとして追加したいとしましょう:

これはbasenameを使用して、元の名前を保持しながらカスタム文字列を前に追加します。

スクリプトイントロのためにbasename “$0″を使用