GNU/Linux >> Belajar Linux >  >> Linux

Jalankan perintah tertentu dalam direktori yang diberikan tanpa cd'ing ke sana?

Saya tidak tahu apakah ini penting, tetapi Anda dapat membuat subkulit:

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

Direktori hanya diubah untuk subkulit itu, jadi Anda menghindari pekerjaan yang memerlukan cd - setelah itu.


Beberapa program memiliki opsi yang dapat Anda gunakan untuk memberi tahu mereka chdir(2) sendiri (misalnya GNU tar -C /--directory ).

Di luar program semacam itu, sesuatu harus chdir . Anda dapat menulis dan menggunakan semacam program “biner” terkompilasi alih-alih meminta shell melakukannya, tetapi mungkin tidak akan menghasilkan banyak manfaat.

Dalam komentar di jawaban lain, Anda memberi contoh:

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

Sejak *.log pola diperluas oleh shell itu sendiri (bukan cp ), sesuatu harus chdir ke direktori sebelum shell mengevaluasi perintah Anda.

Jika Anda hanya ingin menghindari "cd back", maka Anda dapat menggunakan subkulit untuk mengisolasi efek cd dari instance shell kerja Anda.

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

Anda dapat mengemasnya dalam fungsi shell.(Saya menjatuhkan -d opsi dari contoh penggunaan Anda karena ada sedikit gunanya perintah ini jika direktori sebenarnya opsional.)

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

Bukan untuk merusak nilai jawaban yang diberikan oleh orang lain, tapi saya yakin yang Anda inginkan adalah ini:

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

Perhatikan tanda kurung untuk memanggil cd dalam subkulit.


Linux
  1. Bagaimana Cara Menjalankan Perintah di Shell Tanpa Menyimpannya ke Riwayat? [Kiat Linux]

  2. Pwd Tanpa Symlink?

  3. Perintah Pindah Direktori Linux

  1. Shellscript untuk memantau file log jika kata kunci memicu lalu jalankan perintah?

  2. Bagaimana cara menggunakan perintah 'mv' untuk memindahkan file kecuali yang ada di direktori tertentu?

  3. linux:cara menjalankan perintah di direktori tertentu

  1. Jalankan Perintah Tertentu Dalam Direktori yang Diberikan Tanpa Melakukan Cd'ing Untuk Itu?

  2. Apakah ada perintah untuk mundur beberapa langkah dalam direktori, tanpa menggunakan cd?

  3. Cara mengeksekusi perintah ssh dari jarak jauh perintah sudo tanpa kata sandi