快乐的Linux命令行笔记-命令的展开

第一天的笔记-基本的命令和使用方法
第二天的笔记-操作文件
第三天的笔记-查阅命令文档并创建命令别名
第四天的笔记-重定向标准输入和输出以及处理查询结果

总结

今天主要学习了展开和引用, 明白了如何使用展开来更有效率的使用shell

打印

打印匹配通配符的路径

1
$ echo this is a test

output:

1
this is a test

该命令可以匹配通配符, 像这样:

1
$ echo *

会将当前目录下的文件名字打印出来, 类似的, 还有这样:

1
2
3
4
$ echo D*
$ echo [[:Upper:]]*
$ echo *s
$ echo /usr/*/share

output:

1
2
3
4
Desktop Documents ...
Desktop Documents Music Pictures ...
Documents Pictures ...
/usr/kerberos/share /usr/local/share ...

所有的输出都符合通配符


算术通配符展开

1
$ echo $((2 + 2))

只支持整数, 支持嵌套


花括号展开

1
$ echo Front-{a,b,c}-Back

output:

1
Front-a-Back Front-b-Back Front-c-Back

小技巧, 可以按照某种顺序来创建文件夹:

1
$ mkdir {2007..2009}-0{1..9} {2007..2009}{10..12}

上面的例子是按照”年-月”的形式来创建文件夹


参数展开

1
$ echo $USER

会将当前用户名展示出来

1
$ printenv | less

将有效的变量列表展示出来


命令替换

含义是将表达式中的命令的输出结果作为一个参数传递给另一个命令

1
$ echo $(ls)

ls命令的输出结果使用echo打印出来

1
$ ls -l $(which cp)

提示: which命令是用来查看命令所在文件路径, 这篇有写

1
output: -rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp

旧版shell程序中的命令替换的语法:

1
$ ls -l `which cp`

双引号

如果一个文件的文件名中间包含空格, 那么可以使用""来阻止单词分割机制

在双引号中, 参数展开, 算术表达式展开和命令替换仍然有效。


单引号

禁止所有的展开


转义字符

在字符前加一个反斜杠


快乐的Linux命令行笔记-命令的展开
http://icecreamzhao.github.io/note/read_note/The_Linux_Command_Line/The-Linux-Command-Line-read-note-5Day.html
作者
littleboyDK
发布于
2018年12月13日
许可协议