~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
我想取消斜杠,这样shell就不再打印目录的文件。我发现
~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
不起作用,而
~/Desktop $ echo *\/*
*/*
做这项工作。
有人能解释为什么会发生这种情况吗?
实际上,您在这里试图取消的不是字符的特殊行为,而是两个
*
字符的特定行为!
我,我会用
echo '*/*'
或
echo "*/*"
或者,如果你想使用,最好的方法是
echo */*
事实上,由于几乎可以肯定没有名为"*"的文件或目录,您通常可以只使用
echo */*
或
echo */*
当你写时
echo *\/*
您要求查看子目录名称以结尾的任何子目录中所有文件的所有名称。这些可能都没有,但如果你想看看发生了什么,试着调用
mkdir x\
touch x\/y
touch x\/z
然后做
echo *\/*
再次。你应该看看x/y x/z
!
单个反斜杠用于特殊序列,例如n
。因此,要插入一个真正的转义反斜杠,必须编写\
。
如果您只想在桌面中打印文件夹,请使用echo */
echo *\/*
将打印以结尾的文件夹中的任何内容而
echo */*
将打印任何文件夹中的任何内容,因为反斜杠((不是带转义的
我没有用前面的答案表明自己。最后一个命令发生了什么
~/Desktop $ echo *\/*
*/*
基本上是正在转义下一个
,而
*/*
只是像*something
或任何其他字符串abc
一样被打印出来