Bash selectコマンドを使用して他のディレクトリの内容を表示するには?

Bash selectコマンドを使用して他のディレクトリの内容を表示するには?

これまでにいくつかのBashの例を見つけました。選ぶ機能の使い方と論理構成オプションまたはアスタリスク一つ(つまりselect s in *)。最後のエントリには、実際のディレクトリの内容がすべて一覧表示されます。

だから、次のことを知りたいです。

  1. どういう意味ですか*

  2. 別のディレクトリの内容を表示するには?
    (試したがopt=$( ls path )失敗select s in "$opt[@]"

関連リンクや例を歓迎します。

ベストアンサー1

これは*…不利だ」全体的な状況そしてそれはbashによって「現在のディレクトリのすべてのファイル」に拡張されるので、デフォルトでは現在のディレクトリにあるすべてのファイルのスペースで区切られたリストに展開されます(これは通常多くのbash組み込みファイルで予想される形式構造です。フロー制御) 。

Globsはそれ自体で使用できるだけでなく式の一部としても使用できるため、bash変数にディレクトリが格納されているとします$searchdir(bash変数名を指定するときに誤って重要な環境変数を上書きしないように注意してください。$PATH

select s in "$searchdir"/*

「のすべてのファイル」に展開されます$searchdir

ノートただし、ディレクトリが空の場合、式は次のようになります。文字通りの意味 *(または文字通り/the/actual/value/pointed/to/by/searchdir/*)設定しない限りnullglobオプション渡す

shopt -s nullglob

その後、ディレクトリが空の場合、glob設定は通常、希望する空のリストに展開されます。

おすすめ記事