GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter une commande spécifique dans un répertoire donné sans y accéder ?

Je ne sais pas si cela compte, mais vous pouvez créer un sous-shell :

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

Le répertoire n'est modifié que pour ce sous-shell, vous évitant ainsi d'avoir à cd - après.


Certains programmes ont des options avec lesquelles vous pouvez leur dire de chdir(2) eux-mêmes (par exemple GNU tar -C de /--directory ).

En dehors de ces programmes cependant, quelque chose devra chdir . Vous pourriez écrire et utiliser une sorte de programme "binaire" compilé au lieu de laisser le shell le faire, mais cela n'apporterait probablement pas beaucoup d'avantages.

Dans un commentaire dans une autre réponse, vous avez donné un exemple :

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

Depuis le *.log le motif est développé par le shell lui-même (pas cp ), quelque chose devra chdir dans le répertoire avant qu'un shell évalue votre commande.

Si vous souhaitez simplement éviter d'avoir à "cd back", vous pouvez utiliser un sous-shell pour isoler l'effet du cd à partir de votre instance de shell de travail.

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

Vous pouvez empaqueter cela dans une fonction shell. (J'ai laissé tomber le -d option de votre exemple d'utilisation car il n'y a pas grand intérêt à cette commande si le répertoire est en fait facultatif.)

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

Je ne veux pas nuire à la valeur des réponses données par d'autres personnes, mais je crois que ce que vous voulez est ceci :

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

Notez les parenthèses pour invoquer cd dans un sous-shell.


Linux
  1. Pwd sans liens symboliques ?

  2. Commande de déplacement de répertoire Linux

  3. Shellscript pour surveiller un fichier journal si le mot-clé se déclenche, puis exécuter une commande ?

  4. linux :comment exécuter une commande dans un répertoire donné

  5. Existe-t-il une commande pour revenir en arrière d'un certain nombre d'étapes dans un répertoire, sans utiliser cd ?

Commande cd sous Linux (changer de répertoire)

Commande Du sous Linux

Commande mv sous Linux

Comment basculer automatiquement vers un répertoire sans utiliser la commande cd sous Linux

Différentes façons de répertorier le contenu du répertoire sans utiliser la commande ls

Copier des types de fichiers spécifiques tout en conservant la structure des répertoires sous Linux