overoot 发表于 2005-5-9 18:35:43

管道的问题

我放音乐的目录下,只有以个文件夹--许巍
我想通过管道的方式直接进入此目录
ls -l | grep "*d" |cd
这样显示出来的是目录的详细信息。要只提取许巍,可能还要用awk和sed了
所以,我暂时用以下命令测试了下,
ls | grep "许巍“ |cd
这样,显示出来的就只有许巍了,但怎么还进不去呢?不解
照理说,许巍已经通过管道传递给了cd 了啊?

zhy2111314 发表于 2005-5-9 19:54:14

这样试试:
cd `ls | grep "许巍“ `

ls | grep "许巍“ |cd
这样确实不行,具体原因我也讲不出来,等我查查看,可能与管道运行机制有关:)

overoot 发表于 2005-5-9 20:07:27

试过了,不行,
直接把ls |grep "许巍"当目录名了,

本来我想免去输入汉字的麻烦,看来这样,还是免了,呵呵。
如果用第一种方法,还要提取文本,更麻烦,看来我还是乖乖的
cd 许巍
更方便些,:)
但我只有这样一个目录,这样进去确实有些不甘。:P

zhy2111314 发表于 2005-5-9 20:12:54

不会吧,我的怎么行,你看清楚了是反引号,不是单引号!
cd `ls | grep "许巍“`

wolf0403 发表于 2005-5-10 09:16:15

cd 又不从 stdin 读取目标目录,管道当然不行……

panlm 发表于 2005-5-11 18:32:13

cd 又不从 stdin 读取目标目录,管道当然不行……

同意。 man cd
其中有一段:
STDIN
       Not used.

INPUT FILES
       None.

zhy2111314 发表于 2005-5-11 20:05:25

恩,不错 :-D

overoot 发表于 2005-5-11 20:50:37

呵呵,
cd ${ls | grep "许巍“}
看来得恶补下了。不然shell编程都忘完了
谢谢,楼上的所有兄弟

wolf0403 发表于 2005-5-12 07:37:09

${} 么?难道是 csh? BASH 下面应该是 $() 吧。

zhy2111314 发表于 2005-5-12 08:29:15

`command`
$(command)
命令替换:-D

overoot 发表于 2005-5-12 21:31:39

${command}也是可行的。我用的确实是bash
:P

zhy2111314 发表于 2005-5-12 21:38:50

${command}也是可行的。我用的确实是bash
:P这个头一次听说啊,明天试试!

wolf0403 发表于 2005-5-13 16:52:37

${var} 绝对不对。${} 是用来限定变量名称范围的。

ABC=a
ABCDE=b
echo ${ABC}DE
echo $ABCDE
看看就明白了

overoot 发表于 2005-5-13 21:12:32

确实是我搞错了。把${}和$()搞混了,我试了下,确实是错的。
:P
我想再问下,如题,假如我当前路径下,只有一个目录,不通过输入目录名,有简便的方法进去码?

wolf0403 发表于 2005-5-13 21:58:06

cd <TAB>
嘿嘿。最伟大的快捷键
页: [1] 2
查看完整版本: 管道的问题