Se sentir comme un idiot en ce moment. Pourquoi cela ne fonctionne pas?
echo "/some/directory/path" | xargs -n1 cd
Se sentir comme un idiot en ce moment. Pourquoi cela ne fonctionne pas?
echo "/some/directory/path" | xargs -n1 cd
La commande cd
est une commande intégrée car les informations sur le répertoire courant sont liées à un processus et seule une commande intégrée au shell peut changer le répertoire courant du shell en cours d'exécution.
Il y a deux problèmes avec votre code:
xargs
ne peut pas exécuter la commande cd
car cd
est une commande intégrée et xargs
ne peut exécuter que des fichiers exécutables.cd
dans un sous-processus appelé par xargs
, cela n'aura aucun effet sur le processus parent comme expliqué ci-dessus.La solution est d'exécuter un sous-shell, à l'intérieur exécuter cd
et ensuite vous pouvez exécuter des commandes dans le nouveau répertoire courant.
ls | xargs -L 1 bash -c 'cd "$0" && pwd && ls'
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.