~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
我想取消斜杠,以便shell不再打印目录的文件。我发现,echo:“为什么需要使用\而不是来取消/字符?”
~/Desktop $ echo *\/*
unix/junk unix/save unix/xyxxy
不起作用 ,而
~/Desktop $ echo *\\/*
*\/*
做这项工作。
有人可以解释为什么会发生这种情况吗?
~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
我想取消斜杠,以便shell不再打印目录的文件。我发现,echo:“为什么需要使用\而不是来取消/字符?”
~/Desktop $ echo *\/*
unix/junk unix/save unix/xyxxy
不起作用 ,而
~/Desktop $ echo *\\/*
*\/*
做这项工作。
有人可以解释为什么会发生这种情况吗?
其实,你'试图取消这里并不是\
角色的特殊行为,而是两个*
角色的特殊行为!
我,我会用
echo '*/*'
或
echo "*/*"
或者,如果你想使用\
,最好的方式做这将是
echo \*/\*
其实,因为几乎肯定没有名为“*”的文件或目录,所以通常可以离开w第i只
echo \*/*
或
echo */\*
当你写
echo *\\/*
你问到看到所有的任何子目录在子目录名称中\
结束的所有文件名。有可能没有任何这些,但如果你想,看看发生了什么事情,尝试调用
mkdir x\\
touch x\\/y
touch x\\/z
,然后你
echo *\\/*
再做。你应该看到x\/y x\/z
!
我之前的回答并没有让自己清楚。什么是与最后一个命令发生
~/Desktop $ echo *\\/*
*\/*
基本上\
是逃避未来\
和*\/*
才刚刚打印像任何其他普通字符串就像它*something
或任何其他字符串发生abc
单个反斜杠用于特殊序列,例如\n
。所以要插入一个真正的转义反斜杠,你必须写\\
。
如果你想要的是打印您的桌面内的文件夹,然后用echo */
echo *\\/*
将打印任何withing与\
而echo *\/*
将打印任何withing任何文件夹中的反斜杠结尾的文件夹(\
)是没有sc 012
您认为哪一种是上述最佳做法?使用''或\为什么? – Molnia
@Molnia:通常,我更喜欢在大部分时间使用''“',特别是如果我想要扩展shell变量的话。如果我绝对不想在内部扩展shell变量,或者在一些复杂的情况下嵌套''''和'''''',我会使用''''。如果可以的话,我通常会远离“自己”,因为他们中的不止两个人会感到困惑,并且难以真正快速阅读。 –