ファイル名メニューを表示し、ユーザーが番号を入力してファイルを選択できるようにします。

ファイル名メニューを表示し、ユーザーが番号を入力してファイルを選択できるようにします。

ユーザーがファイルをコピーして貼り付けて選択できるスクリプトを作成しました。次に、ファイルに対してgrepを実行します。ユーザーが数字だけを入力できるように、ディレクトリ内の各ファイルの前に数字を入れることができるかどうか疑問に思います。

私が試したこと:

  • ls -lその後、 ls | wc -lユーザーはそのファイル番号を選択するようにしましたが、幸運ではありませんでした。
  • 次に、ls -iファイルのノード番号を使用してgrepを試しましたが、成功しませんでした。

答え1

ではキーワードを使用bashできますkshzshselect

select file in *; do
  grep 'something' "$file"
done

selectリストを表示するときに使用方法の説明を提供するには、次のように設定します。$PS3 今後たとえば、次のようにselectなります。

PS3='number of file to grep in, ^C to exit: '

答え2

lsの前に行番号を入れる最も簡単な方法はおそらく

 ls -1 | cat -n

その後、ファイル番号Nを選択して試すことができます。

ls -1 | sed -n Np

答え3

ちなみに、inode番号を使用して次のものを使用できますls

ls -i

次のように出力されます。

 $ ls -i
13107210 file
13238318 dir
13109301 script.sh

しかし、この数値は韓国cat -nに比べると依然としてかなり大きな数値だ。ただし、この方法の最大の利点は、常に正しいファイルを見つけることができることです。一方cat -n、+ を使用すると、sed2 つのコマンドの間にディレクトリに新しいファイルが作成された場合は、別のファイルを使用できます。

答え4

また、percol、fzy、smenu、友達もチェックしてみてください。彼らは喜んで標準入力を取り、対話型フィルタを含むユーザーフレンドリーな選択メニューを提供してから、選択した行をパイプに戻します。

関連情報