为什么 cd 命令在尝试使用另一个命令进行管道传输时不起作用

Why doesn't the cd command work when trying to pipe it with another command

我正在尝试使用带有 cdls 的管道,如下所示:

ls -l | cd /home/user/someDir

但什么也没发生。

我试过了:

cd /home/user/someDir | ls -l

似乎 cd 命令什么都不做,而 ls -l 将在当前目录上运行。

我尝试打开的目录有效。

这是为什么?是否可以使用 cd / ls 来传递命令? 使用管道时其他命令没有任何问题。

cd 没有输入也没有输出;因此,在管道中使用它没有意义(从左侧命令获取输出并将其作为输入传递给右侧命令)。

您在寻找 ls -l ; cd /somewhere 吗?

另一个选项(如果你需要列出目标目录)是:

cd /somewhere && ls -l

如果目标目录不存在,此处的'&&'将阻止执行第二个命令(ls -l)。