美文网首页程序员
Linux之cd命令在管道符中不起作用

Linux之cd命令在管道符中不起作用

作者: 蛋炒饭爱吃我 | 来源:发表于2018-08-13 17:36 被阅读0次
  • 前言
    曾几何时我一直在思考一个问题,如何写好一篇技术文章,大多数人并不会仔细的看一篇技术文章,通常都是在寻找“答案”,其实谁又不是哪?我也是在工作中出现问题的时候,才会到网上去搜索,但是你是否曾经对古龙的小说产生过兴趣哪?在《陆小凤传奇》系列中大家跟随着陆小凤破解一个一个的案子,你肯定也会好奇为什么西门吹雪要追杀陆小凤? 在《七种武器》中大家惊叹每一种武器背后的道理,所以我说的第一种武器,并不是剑,而是笑,只有笑才能真正的征服人心。所以当你懂得这道理,就应该收起你的剑来多笑一笑、在《欢乐英雄》中那个“房子”里的每一个人物都是来头不小,那又是为什么现在都看似碌碌无为、颓废度日哪?他们经历了什么哪?所以大家紧跟着作者的思维来看清每一个答案!
  1. 奇怪的一件事儿
    大家是否会有这样的感觉,那就是每天都在你身边的人,并且你自以为很了解他,但是突然有一天他做了一件让你意想不到的事,你开始对他“刮目相看”,你发现你并不是很了解他,他让你感到非常的陌生,这种感觉自然会让你很不爽,你会觉得非常的奇怪,哎~~~,那么为了满足自己的猎奇心理,你就开始探寻问题的答案,这件奇怪的事儿就是cd命令,这个每天差不多敲100遍的命令今天竟然失效了!!!,竟然切换不到指定的目录了,那么这是怎么一回事儿哪?

  2. 问题来了
    大家都知道find命令可以定位文件或目录的路径、cd命令可以切换当前的工作目录例:

etl@bejedw09:/home/etl/cya_2/as/one> find . -name dir_1
./dir_1
etl@bejedw09:/home/etl/cya_2/as/one> cd dir_1
etl@bejedw09:/home/etl/cya_2/as/one/dir_1

于是乎我写出了这样一段命令,以为这样可以一步切换到dir_1目录中

etl@bejedw09:/home/etl/cya_2/as/one> find . -name dir_1 | xargs cd
etl@bejedw09:/home/etl/cya_2/as/one

结果cd命令并没有改变当前的工作目录,我搜了好久类似这样的词条为什么cd命令在重定向语句中不起作用?cd命令不支持重定向等等,结果根本查不到我要的答案,似乎陷入了一个死胡同里,那么我当时是怎么解决这个问题的哪?

  1. 分化、瓦解
    看来直接搜问题的答案这条路走不通了,只能将问题分化开来,我首先关注的点是管道符,我一直觉得是管道符的问题,于是我查了管道符的使用
    (1) 管道命令只能处理前一个命令的标准输出,而不能处理标准错误;
    (2) 管道命令右边必须能够接收标准输入;

    咦~~~管道命令右边必须能够接收标准输入? 难道cd不能接收标准输入吗?继续查cd命令可以接收管道传来的数据吗发现了cd命令确实有些奇特,首先cd命令是通过终端的命令行读取数据的,那么怎么向cd这样的命令传值哪?可以使用反单引号`命令`或 $(命令) 这样的方式

etl@bejedw09:/home/etl/cya_2/as/one> cd `find . -name dir_1`
etl@bejedw09:/home/etl/cya_2/as/one/dir_1
etl@bejedw09:/home/etl/cya_2/as/one> cd $(find . -name dir_1)
etl@bejedw09:/home/etl/cya_2/as/one/dir_1

我在这里再解释一下这个命令find . -name dir_1 | xargs cd ,首先管道符|find命令的返回值作为标准输出传递给cd,而对于cd命令而言,find命令的返回值就是标准输入,而cd是通过终端的命令行读取数据的,不接受标准输入,所以cd命令失效!

  • 结尾
    “天涯远不远?”
    “不远!”
    “人就在天涯,天涯怎么会远?”

相关文章

  • Linux之cd命令在管道符中不起作用

    前言曾几何时我一直在思考一个问题,如何写好一篇技术文章,大多数人并不会仔细的看一篇技术文章,通常都是在寻找“答案”...

  • R语言也有管道符%>%

    在linux系统中我门常用‘|’管道符将上一条命令的输出,作为下一条命令的输入。 在R语言中与存在类似的管道符号,...

  • linux三剑客与管道

    一:什么是管道? linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右面命令的输入 什么...

  • 16. Linux 管道符( ‘|’ )

    利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意...

  • Linux命令: |

    | | 这个不是字母L,在Linux中叫做管道符,按住shift+\键 就出来了。管道符就是把上一条命令的输出,作...

  • linux中管道符的使用

    linux中管道符的使用非常普遍 管道符的用法是将第一个命令的结果传递给第二个命令作为输入 管道符的使用有两个条件...

  • Linux基础命令大全

    Linux教程Linux 常用命令学习 pwd 命令 pwd - 显示当前路径 cd 命令 cd - 切换目录cd...

  • 初学Linux命令

    cd命令 cd命令是Linux中的基本命令 用法及参数: 1.cd 回到用户主目录(cd ~一样) 2.cd te...

  • Linux命令-文件和目录一

    Linux命令-文件和目录之cd命令 cd命令用于打开文件夹(即文件目录) 语法 dirName:要切换的目标目录...

  • 稳固知识点Lunux cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上...

网友评论

    本文标题:Linux之cd命令在管道符中不起作用

    本文链接:https://www.haomeiwen.com/subject/gvrubftx.html