HOWTO · Bash

Bashで現在のフォルダー名を見つける

このチュートリアルでは、Bash で現在のフォルダー名を見つける方法について説明します。

このページの内容

ディレクトリの検索は、Bash スクリプトを使用すると非常に簡単です。 しかし、現在のディレクトリ フォルダ名を正確に見つけるのは少し複雑です。

この記事では、ディレクトリからフォルダー名を見つける方法を 3つ紹介します。 また、トピックを簡単にするために必要な例と説明も表示されます。

Bashで現在のフォルダー名を見つける

この目的のために特別なキーワード PWD を使用します。 この Bash の組み込みキーワードは、現在の作業ディレクトリを見つけるために使用されます。

以下の例では、現在のフォルダー名を見つけます。 この例のコードは次のようになります。

current_dir=${PWD##*/}
echo "$current_dir"

上記は、タスクを実行する最も簡単な方法です。 しかし、次の例は少し複雑です。

以下の例を使用して、フォルダー名を見つけます。

Current_Dir=${PWD##*/}
Current_Dir=${Current_Dir:-/}
printf '%s\n' "${PWD##*/}"
printf '%q\n' "${PWD##*/}"

上記の例では、Current_Dir=${PWD##*/} という行で変数を割り当て、Current_Dir=${Current_Dir:-/} という行を通じて、PWD=/ のケースを修正しました。 .

その後、次の 2 行からいずれかの行を使用できます。 両方の行が stdout に出力されます。

しかし、最初の行は、シェル入力として使用するために 2 番目の行が引用符で囲まれている珍しい名前の echo よりも堅牢であり、隠し文字を読みやすくするのにも役立ちます。 上記のスクリプトを実行すると、現在のディレクトリ フォルダー名のみが取得されます。

以下の例で同様のタスクを実行することもできます。 ここでは、ディレクトリ全体を変数に取りました。

次の例のコードは、次のようなものです。

DirectoryStr=/path/to/somewhere//
shopt -s extglob
CurrentDir=${DirectoryStr%%+(/)}
CurrentDir=${CurrentDir##*/}
CurrentDir=${CurrentDir:-/}
printf '%s\n' "$CurrentDir"

この例を部分的に説明しましょう。

  1. 最初の行で、変数を作成し、ディレクトリへのパスを文字列として割り当てます。
  2. 次に、shopt -s extglob という行を介して、+(...) glob 構文を有効にしました。
  3. CurrentDir=${DirectoryStr%%+(/)} を通じて、文字列の末尾のスラッシュの数に関係なく、文字列をトリミングしました。
  4. CurrentDir=${CurrentDir##*/} という行を通して、最後の / より前のすべてを削除しました。
  5. CurrentDir=${CurrentDir:-/} という行でディレクトリの大文字と小文字を修正しました。
  6. 最後に、ディレクトリ フォルダーを印刷しました。

この記事で使用するコードはすべて Bash で記述されています。 Linux シェル環境でのみ動作します。