181 votes

Exécuter une commande depuis un autre répertoire en bash

Dites que je fais ça :

cd subdir
git init
cd ../

Existe-t-il un moyen de faire cela avec une seule commande, ou peut-être deux, plutôt que de devoir entrer et sortir d'un répertoire pour y exécuter une commande ?

(Je ne cherche pas une solution spécifique à git ; c'est juste un exemple).

2voto

Gaff Points 17889

Vous pouvez regrouper les commandes avec &&, c'est à dire

cd subdir && git init && cd ../

Si vous ne voulez pas dépendre du code de sortie de chaque commande, vous pouvez utiliser ; à la place, c'est-à-dire :

cd subdir ; git init ; cd ../

2voto

Scott Ritchie Points 191

Vous devez vous rendre dans votre répertoire cible si la commande n'a pas de paramètre de nom de fichier ou de répertoire.

Mais vous pouvez écrire un bash script qui prend le répertoire cible et la commande comme paramètres. Pour cela, vous pouvez jeter un coup d'œil à pushd et popd : http://ss64.com/bash/pushd.html

J'écrirais bien ce petit script pour vous, mais je n'ai pas de boîte Linux ici :)

2voto

Vlueboy Points 713

Les programmes ont différentes manières de gérer les arguments, donc certains auront un équivalent de -dossier=nom option. Au-delà de cette exception, la norme, même sous MS DOS, est simplement

$ programme sous-répertoire

Parfois, vous avez besoin

$ programme sous-répertoire/

Le programme ouvrira le dossier, travaillera avec lui de la même manière que vous travaillez avec un fichier, et une fois terminé, rendra le contrôle à votre Shell, qui est pointé vers votre répertoire standard d'origine. Les programmes gérés de cette façon ont le problème que les sorties d'erreur (comme les dumps du noyau) vont dans un fichier dans le répertoire courant de votre Shell (plutôt que dans le répertoire standard). sous-répertoire .)

Il n'y a pas de solution de rechange, à moins que le programme ne dispose de commutateurs de commande permettant de spécifier un autre endroit. Certains programmeurs prennent une licence artistique entre "le programme du répertoire était appelé par "et "le programme de l'annuaire était dit de travailler dans ."

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X