Kommandoen echo "/some/directory/path" | xargs -n1 cd
virker ikke som forventet af flere grunde:
cd
er en indbygget kommando i shell (som bash eller zsh), og den ændrer kun det nuværende arbejdskatalog for den aktuelle shell-session. Når xargs
kører cd
, sker det i en separat subshell, og ændringen af arbejdskataloget påvirker ikke den oprindelige shell-session.xargs
til at køre en kommando, kører den kommandoen i en ny subshell. Ændringer foretaget i denne subshell, såsom at ændre arbejdskataloget med cd
, påvirker ikke den oprindelige shell-session.xargs -n1
betyder, at xargs
vil køre kommandoen én gang for hver linje af input. Men cd
tager kun ét argument, så det er ikke nødvendigt at bruge -n1
her.For at ændre det nuværende arbejdskatalog i den aktuelle shell-session, skal du bruge en anden tilgang. Her er nogle alternativer:
cd
direkte uden xargs
.
cd /some/directory/path
(cd /some/directory/path && other_commands)
pushd
og popd
.
pushd /some/directory/path
# Run your commands here
popd
Med Handyhand kan du nemt få hjælp til kommandolinjeopgaver. Opret din opgave gratis, og modtag bud fra dygtige hjælpere på få minutter. Uanset om det er installation, fejlfinding eller scripting, er der altid en, der kan assistere dig.