GNU/Linux >> Linux Esercitazione >  >> Linux

Eseguire un comando specifico in una determinata directory senza accedervi?

Non so se conta, ma puoi creare una subshell:

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

La directory viene cambiata solo per quella subshell, quindi eviti il ​​lavoro di dover cd - successivamente.


Alcuni programmi hanno opzioni con le quali puoi dire loro di chdir(2) stessi (ad esempio GNU tar -C di /--directory ).

Al di fuori di tali programmi, però, qualcosa dovrà essere chdir . Potresti scrivere e usare una sorta di programma "binario" compilato invece di farlo fare alla shell, ma probabilmente non darebbe molti benefici.

In un commento in un'altra risposta, hai fornito un esempio:

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

Dal *.log pattern viene espanso dalla shell stessa (non da cp ), qualcosa dovrà chdir alla directory prima che una shell valuti il ​​tuo comando.

Se sei solo interessato a evitare di dover "cd back", allora puoi usare una subshell per isolare l'effetto del cd dalla tua istanza di shell funzionante.

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

Puoi impacchettarlo in una funzione di shell. (Ho eliminato il -d option dal tuo utilizzo di esempio poiché non ha molto senso questo comando se la directory è effettivamente facoltativa.)

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

Non per minare il valore delle risposte fornite da altre persone, ma credo che quello che vuoi sia questo:

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

Nota le parentesi per richiamare cd in una sotto-shell.


Linux
  1. PWD senza collegamenti simbolici?

  2. Shellscript per monitorare un file di registro se i trigger di parole chiave eseguono quindi un comando?

  3. Come utilizzare il comando 'mv' per spostare i file tranne quelli in una directory specifica?

  4. Come utilizzare il comando 'cp' per escludere una directory specifica?

  5. linux:come eseguire un comando in una determinata directory

Comando Cd in Linux (Cambia directory)

Du comando in Linux

Comando mv in Linux

Come passare automaticamente a una directory senza utilizzare il comando Cd in Linux

Diversi modi per elencare i contenuti della directory senza utilizzare il comando ls

Copia tipi di file specifici mantenendo la struttura delle directory in Linux