web-dev-qa-db-ja.com

bashスクリプトを見つけて実行する方法は?

script.shという名前のスクリプトがあります。ファイルシステムのどこにあるかはわかりませんが、存在することはわかります。

スクリプトを見つけて実行可能にして、コマンドラインから1行で実行するにはどうすればよいですか。

単一のコマンドで実行したいと思います。検索して実行可能にし、実行します。

3
Pythoncoder
  1. 家でfindコマンドを使用してください:

    find ~ -name script.sh 
    
  2. 上記で何も見つからなかった場合は、F/S全体でfindコマンドを使用します。

    find / -name script.sh 2>/dev/null
    

    2>/dev/nullを使用すると、不必要なエラーが表示されなくなります)。

  3. それを起動します。

    /<whatever_the_path_was>/script.sh
    

そして、すべて一度に与えるでしょう。 検索と実行の詳細

find / -name "script.sh" -exec chmod +x {} \; -exec {} \; 2>/dev/null 

(複数の "script.sh "、それらすべてを実行します)

6
J. Chomel

ファイルシステム上にまったく同じものと呼ばれるスクリプトがいくつかある場合があるため、名前に基づいてスクリプトを特定し、それを盲目的に実行することは、おそらく非常に悪い考えです。

それを見つけるには、質問の別の回答でJ. Chomelが示したようにfindを使用するか、locateを使用します。

$ locate script.sh

これにより、システムのデータベース検索に基づいて、すべてのユーザーが読み取り可能な場所にscript.shというすべてのファイルが見つかります。データベースは定期的に(設定に応じて毎日または週に1回)更新されるため、最後のファイルシステムスキャン以降に追加されたファイルは見つかりませんが、findよりもはるかに高速です。 。

selectを使用してメニューを生成し、そこから正しいスクリプトを選択して実行できます。

$ select script in $( locate script.sh ); do echo "$script"; break; done

名前を出力するだけでなく、選択したスクリプトを実際に実行するには、echocommandに変更します。

2
Kusalananda