尝试使用其他命令管道时,为什么cd命令不起作用?

ic2*_*205 -1 linux bash ls pipe

我试图用一个管道与cdls这样的:

ls -l | cd /home/user/someDir
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.

我试过了:

cd /home/user/someDir | ls -l
Run Code Online (Sandbox Code Playgroud)

似乎该cd命令ls -l在当前目录下工作时不执行任何操作.

我正在尝试打开的目录是有效的.

这是为什么?用cd/ 管道命令是否可能ls?使用管道时其他命令没有任何问题.

Pis*_*3.0 9

cd不接受任何输入并且不产生输出; 因此,在管道中使用它是没有意义的(它从左命令获取输出并将其作为输入传递给右命令).

你在找ls -l ; cd /somewhere

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

cd /somewhere && ls -l
Run Code Online (Sandbox Code Playgroud)

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

  • 不确定shell内置命令如何阻止使用管道,例如`echo | read`.这里的关键点是`cd`没有I/O. (4认同)