GNU/Linux >> Linux の 問題 >  >> Linux

cd を実行せずに、特定のディレクトリで特定のコマンドを実行しますか?

これが重要かどうかはわかりませんが、サブシェルを作成できます:

$ (cd /var/log && cp -- *.log ~/Desktop)

ディレクトリはそのサブシェルに対してのみ変更されるため、 cd - する必要がある作業を回避できます


一部のプログラムには、chdir(2) に指示できるオプションがあります。 それ自体 (例:GNU tar-C /--directory ).

ただし、そのようなプログラムの外では、chdir する必要があります。 .シェルに実行させる代わりに、ある種のコンパイル済み「バイナリ」プログラムを作成して使用することもできますが、おそらくあまりメリットはありません。

別の回答のコメントで、例を挙げました:

execindirectory -d /var/log "cp *.log ~/Desktop"

*.log 以降 パターンはシェル自体によって展開されます (cp ではありません) )、何かを chdir する必要があります シェルにコマンドを評価させる前にディレクトリに移動します。

「cd back」する必要がないようにしたい場合は、サブシェルを使用して cd の効果を分離できます。 作業中のシェル インスタンスから。

(cd /path/to/dir && some command)

これをシェル関数にパッケージ化できます (私は -d を削除しました)。 ディレクトリが実際にオプションである場合、このコマンドにはほとんど意味がないため、使用例のオプションです。)

runindir() { (cd "$1" && shift && eval "[email protected]"); }

runindir /var/log 'cp *.log ~/Desktop'  # your example
runindir /var/log cp \*.log \~/Desktop  # eval takes multiple args

runindir /var/log cp \*.log ~/Desktop   # it is okay to expand tilde first

他の人が与えた回答の価値を損なうものではありませんが、あなたが望んでいるのは これです:

(cd /path/to && ./executable [ARGS])

cd を呼び出す括弧に注意してください サブシェルで。


Linux
  1. 履歴に保存せずにシェルでコマンドを実行するにはどうすればよいですか? [Linuxのヒント]

  2. シンボリックリンクのないPwd?

  3. Linux ディレクトリ移動コマンド

  1. Unix では、最初にそのディレクトリに cd を実行せずにディレクトリで 'make' を実行できますか?

  2. 「mv」コマンドを使用して、特定のディレクトリ以外のファイルを移動する方法は?

  3. 「cp」コマンドを使用して特定のディレクトリを除外する方法は?

  1. 特定のディレクトリで特定のコマンドを実行しますか?

  2. パスワードなしでsshコマンドをsudoコマンドをリモートで実行する方法

  3. コマンド履歴から特定のコマンドを実行せずに呼び出す方法