使用 xargs cd 到目录

使用 xargs cd 到目录

现在感觉自己像个白痴。为什么这不管用?

echo "/some/directory/path" | xargs -n1 cd

答案1

管道在子进程中运行 xargs,而 xargs 在子进程中运行 cd。子进程中的更改不会传播到父进程。

答案2

该命令cd是内置命令,因为有关当前目录的信息与进程绑定,并且只有内置的 shell 可以更改正在运行的 shell 的当前目录。

您的代码有两个问题:

  1. xargs无法运行,cd因为cd是内置命令,xargs只能运行可执行文件。
  2. 即使您cd在名为 from 的子进程中运行xargs,它也不会对父进程产生任何影响,如上所述。

解决方案是运行一个子 shell,在其中运行cd,然后您可以在新的当前目录中执行命令。

ls | xargs -L 1 bash -c 'cd "$0" && pwd && ls'

相关内容