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

MD Aminul Islam 2023年6月20日
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 シェル環境でのみ動作します。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

関連記事 - Bash Directory