String 在bash echo中*G*是什么意思?
不太经常,但足够频繁地让我恼火,当我将字符串String 在bash echo中*G*是什么意思?,string,bash,replace,echo,String,Bash,Replace,Echo,不太经常,但足够频繁地让我恼火,当我将字符串*G*放入变量并“回显”它时,我看到一些文件名,通常来自BASH指向的目录中的文本文件。我认为这可能是一个自动完成的功能,但在这些方面我找不到任何东西。有人能告诉我,当我回显一个包含这些字符组合的字符串时发生了什么吗?如果可能的话,我想“关掉它” 这是一个通配符文件名,*G*仅表示任意数量的字符(零个或更多),后跟G,后跟任意数量的字符 换句话说,任何包含G的文件名。如果没有包含G的文件,bash只会根据以下文本提供原始字符串: pax> mkd
*G*
放入变量并“回显”它时,我看到一些文件名,通常来自BASH指向的目录中的文本文件。我认为这可能是一个自动完成的功能,但在这些方面我找不到任何东西。有人能告诉我,当我回显一个包含这些字符组合的字符串时发生了什么吗?如果可能的话,我想“关掉它” 这是一个通配符文件名,*G*
仅表示任意数量的字符(零个或更多),后跟G
,后跟任意数量的字符
换句话说,任何包含G
的文件名。如果没有包含G
的文件,bash
只会根据以下文本提供原始字符串:
pax> mkdir qqq ; cd qqq ; touch paxfile
pax> ls -al
total 0
-rw-r--r-- 1 pax pax 0 Apr 3 10:05 paxfile
pax> echo *x*
paxfile
pax> echo *G*
*G*
您只需阻止shell扩展文件名即可将其关闭:
pax> echo '*x*'
*x*
或者,bash
有一个GLOBIGNORE
变量,该变量包含一个以冒号分隔的文件名列表,您不希望扩展这些文件名,因此您也可以使用它,尽管为任意目录设置它相当痛苦(是的,下面的方法不适用于带有嵌入空格的文件,因此,在您抱怨之前,它仅用于演示目的):
它是一个通配符文件名,
*G*
简单地表示任意数量的字符(零或更多),后跟G
,后跟任意数量的字符
换句话说,任何包含G
的文件名。如果没有包含G
的文件,bash
只会根据以下文本提供原始字符串:
pax> mkdir qqq ; cd qqq ; touch paxfile
pax> ls -al
total 0
-rw-r--r-- 1 pax pax 0 Apr 3 10:05 paxfile
pax> echo *x*
paxfile
pax> echo *G*
*G*
您只需阻止shell扩展文件名即可将其关闭:
pax> echo '*x*'
*x*
或者,bash
有一个GLOBIGNORE
变量,该变量包含一个以冒号分隔的文件名列表,您不希望扩展这些文件名,因此您也可以使用它,尽管为任意目录设置它相当痛苦(是的,下面的方法不适用于带有嵌入空格的文件,因此,在您抱怨之前,它仅用于演示目的):
这是一个通配符,将当前目录中的所有文件与其名称中的字符
G
进行匹配
这在本书的第二章中有解释
如果确实要禁用它,可以使用:
set -f
或
如前所述
但这是一个非常有用的特性,我鼓励您保持启用状态并学习使用它
如果要在单个命令中禁用它,可以使用引号或反斜杠转义任何特殊字符:
echo '*G*'
echo "*G*"
echo \*G\*
顺便说一句,此功能并不特定于echo
命令;它适用于shell中的所有命令。例如:
ls *.txt
为您提供名称以
.txt
结尾的所有文件的目录列表。这是一个通配符,将当前目录中的所有文件与其名称中的字符G
匹配
这在本书的第二章中有解释
如果确实要禁用它,可以使用:
set -f
或
如前所述
但这是一个非常有用的特性,我鼓励您保持启用状态并学习使用它
如果要在单个命令中禁用它,可以使用引号或反斜杠转义任何特殊字符:
echo '*G*'
echo "*G*"
echo \*G\*
顺便说一句,此功能并不特定于echo
命令;它适用于shell中的所有命令。例如:
ls *.txt
为您提供一个目录列表,其中列出了名称以
.txt
*
结尾的所有文件,这些文件在全局搜索时包含0个或多个字符。*
在全局搜索时包含0个或多个字符。当然,单引号可以获得纯文本。我自己应该想到这一点。感谢paxdiablo、Keith Thompson和alex。感谢Pumbaa80 f或者在我的OQ.BZT上做编辑当然,单引号来获得纯文本。我应该自己想到这一点。感谢paxdiablo、Keith Thompson和alex。感谢Pumbaa80在我的OQ.BZTKeith上做编辑-我不认为我会“参与”noglob选项。我经常在ls和其他命令中使用星号和字符串。我会坚持使用单引号或反斜杠方法。BZT@SilversleevesX:只是好奇:如果你一直在使用通配符,你怎么会不知道*G*
是什么意思呢?基思-我不认为我会“参与”noglob选项。我经常在ls和其他命令中使用星号和字符串。我会坚持使用单引号或反斜杠方法。BZT@SilversleevesX:只是好奇:如果你一直在使用通配符,你怎么不知道*G*
是什么意思?