cd命令为何无法进入xargs管道输出的目录

今天在写shell脚本的时候,想用cd进入xargs管道输出的目录,但是提示报错。详情如下:

【环境描述】

目录结构:

[root@test1 nagiosclient_db]# ls -ltr

total 2488

-rw-r--r--.        1     root   root    405725   Mar  3 14:12   nrpe-2.12.tar.gz

-rw-r--r--.        1     root   root    2095419 Mar  3 14:12   nagios-plugins-1.4.15.tar.gz

drwxrwxrwx.   16   501  root    4096        Mar  3 14:36   nagios-plugins-1.4.15

drwxrwxr-x.     7     500  500    4096        Mar  3 14:37   nrpe-2.12

获取需要的目录:

[root@test1 nagiosclient_db]# ls | egrep 'nrpe-[0-9].[0-9]+.$'

nrpe-2.12

使用管道进入指定的目录:

[root@test1 nagiosclient_db]# ls | egrep 'nrpe-[0-9].[0-9]+.$' | xargs ls -ld | xargs cd

xargs: cd: No such file or directory

遇到报错提示。

修改命令:

[root@test1 nagiosclient_db]# cd "`ls | egrep 'nrpe-[0-9].[0-9]+.$' `"

[root@test1 nrpe-2.12]# pwd

/home/monitor/nagiosclient_db/nrpe-2.12

进入了指定的目录。

【为什么cd命令不能进入xargs管道输出的目录】

xargs牵涉写管道,而cd是内部命令。具体的牵涉shell的工作原理。

查看cd命令的绝对路径:

[root@test1 nrpe-2.12]# which cd

/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

查看xargs的绝对命令:

[root@test1 nrpe-2.12]# which xargs

/usr/bin/xargs

详情如上,因非系统工程师,故此处不对shell的原理做深入研究。

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/

作者:csdn博客 Jason_asia

时间: 2025-01-29 21:08:07

cd命令为何无法进入xargs管道输出的目录的相关文章

图解Linux命令:用CD命令定向到目录

也许朋友们还记得在 Dos 时代我们使用许多命令来完成工作.进入 Windows 时代后,由于计算机的易用性大大增强,用户也渐渐淡忘了命令.虽然如此,"命令"仍然在计算机领域中有重要的地位.朋友们也许会问:"计算机都使用图形界面这么多年了,命令在今天还有什么用?" 没错,普通用户离命令越来越远了.这也正是发明图形界面的初衷:简化操作.但是计算机软硬件与其它产品一样,都会有故障.那么出现故障后无法进入系统该怎么办呢?其中一个办法是启动一个简单的系统,比如 Dos.虽然

linux基础命令(2) cd命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行 操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首 先就要学好 cd 命令的使用方法技巧. 1. 命令格式: cd [目录 名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [root@localhost ~]# cd / 说明:进入系统根目录,上面 命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 命令:

linux中cd命令使用详解_php实例

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1. 命令格式: cd [目录名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [root@localhost ~]# cd /   说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 命令: cd

Linux中快捷键的使用,who命令,rm命令,ps命令,cd命令,kill命令,find命令,grep命令,tar命令(gz、tar、bz2),用户管理,vim部分配置,相关命令

    1.进入Ubuntu之后打开终端窗口的快捷键是:           ctrl + alt+t:通过这个命令可以打开终端.          ctrl + alt+t:通过这个命令可以打开终端.     再开一个tab选项卡式的终端的快捷键是:ctrl+shift+t,切换还窗口的方式是:Alt+序号     另外也可以通过ctrl+shift+n的方式打开另外一种终端   2.关闭一个终端窗口的方式是:           Alt +F4,在Ubuntu下还可以是exit     3.

Android shell命令行中过滤adb logcat输出的方法_Android

        我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单)        最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp:        adb logcat | grep MyAp

Android shell命令行中过滤adb logcat输出的几种方法_Android

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单)        最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp:        adb logcat | grep MyApp       

Android shell命令行中过滤adb logcat输出的方法

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法. 1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp        adb logcat | grep -i

dos命令:cd命令使用说明

我们已经使用过cd命令,大家肯定还记得吧.cd是英文change directory(改变目录)的缩写,也是最常用的命令之一.顾名思义,如果想要进入一个目录,显然该采用这个命令了. 在讲cd命令之前,我们先来谈谈提示符是什么意思.现在的提示符是 c:\> 这个 c: 说明现在的工作盘是c盘,即当前盘是硬盘.这个紧接着c:后面的 \ 告诉我们,当前的工作目录是根目录.这个 > 的作用只是为了把工作目录和我们要输入的命令分隔开来,没有其它的意义.这样,我们就可以从提示符上看出当前的工作盘和工作目录

PowerPoint 2007 “打包成 CD”命令不可用

  尝试对某个 PowerPoint 2007 演示文稿打包以便在 CD 上使用时,"Office 按钮"上的"发布"下面的"打包成 CD"命令不可用. 原因: 如果满足下列条件中的一个或多个,则会出现此问题: • 演示文稿已标记为最终状态. • 演示文稿位于网络共享中.而且,其中一位其他用户打开了演示文稿,或者演示文稿已经以只读方式打开. • 演示文稿包含受限制的嵌入式字体.而且,该演示文稿已经以只读方式打开. • 演示文稿已进行了数字签名.