这个问题 (如何从 kubuntu 12.04 安装中删除 gnome?)有带问号的命令:
sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?
他们的意思是什么?
答案1
一般来说,在 Bash 中,a?
是一个扩展为任意字符的 glob 模式。
例如:
$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2
它类似于*
,但*
会扩展为0 个或更多字符,而 a?
扩展为恰好一个(任意)字符。
不过,在您的特殊情况下,?
命令中的显然是打字错误。
答案2
这些被称为通配符(通配符模式)
标准通配符(也称为通配符模式)由各种命令行实用程序使用来处理多个文件。
几乎所有命令(包括 mv、cp、rm 和许多其他命令)都使用标准通配符。
(question mark)
这可以表示任何单个字符。如果您在命令行中指定了某些内容,例如“hd?”,GNU/Linux 会查找 hda、hdb、hdc 以及 az、0-9 之间的每个其他字母/数字。
*(asterisk)
这可以表示任意数量的字符(包括零个,换句话说,零个或多个字符)。如果您指定了“cd*”,它将使用“cda”、“cdrom”、“cdrecord”以及以“cd”开头的任何内容,也包括“cd”本身。“m*l”可以是 mill、mull、ml,以及以 m 开头并以 l 结尾的任何内容。
[ ] (square brackets)
指定一个范围。如果您输入了 m[a,o,u]m,它可以变成:mam, mum, mom 如果您输入了:m[ad]m,它可以变成以 m 开头和结尾且中间有 a 到 d 的任何内容。例如,这些可以起作用:mam、mbm、mcm、mdm。这种通配符指定“或”关系(您只需一个即可匹配)。
{ } (curly brackets)
术语之间用逗号分隔,每个术语必须是某个事物的名称或通配符。此通配符将复制与通配符或确切名称匹配的任何内容(“或”关系,非此即彼)。
例如,这是有效的:
cp {.doc,.pdf} ~
这会将以 .doc 或 .pdf 结尾的所有内容复制到用户主目录。请注意,逗号后(或其他任何地方)不允许有空格。
[!]
此结构类似于 [ ] 结构,不同之处在于它不会匹配括号内的任何字符,而是匹配任何字符,只要该字符未列在 [ 和 ] 之间。这是一个逻辑上的非。例如,rm myfile[!9] 将删除所有 myfiles*(即 myfiles1、myfiles2 等),但不会删除名称中任何位置带有数字 9 的文件。
\ (backslash)
用作“转义”字符,即保护后续特殊字符。因此,“\” 搜索反斜杠。请注意,您可能需要使用引号和反斜杠。
更多示例:访问此页面