
本文共 2751 字,大约阅读时间需要 9 分钟。
1. echo——显示一行文本
echo 是 shell 的一个内部命令,用于在标准输出中打印文本参数。它能够接受多个参数,并将这些参数依次输出到屏幕上。
例如:
[me@linuxbox ~]$ echo this is a test
输出结果: this is a test
2. (字符)展开
echo 命令接收的任意参数都会被展开显示。通配符可以帮助我们匹配文件名中的特定字符。
例如:
[me@linuxbox ~]$ echo * 输出结果: Desktop Documents ls-output.txt Music Pictures Public Templates Videos
如果要匹配以大写字母开头的文件,可以使用 [[:upper:]]*
:
[me@linuxbox ~]$ echo [[:upper:]]*
输出结果: Desktop Documents Music Pictures Public Templates Videos
查看主目录之外的目录也非常方便:
[me@linuxbox ~]$ echo /usr/*/share/usr/kerberos/share /usr/local/share
输出结果: /usr/local/share
隐藏文件路径名的展开需要特殊处理:
echo .* 可能会包含隐藏文件,但也会显示当前工作目录和父目录的路径,使用 ls -d .
| less
更为准确。 3. 路径名展开
echo 命令可以展开路径名中的通配符,方便文件管理。
例如:
[me@linuxbox ~]$ echo D*
输出结果: Desktop Documents
使用通配符展开带特定后缀的文件:
[me@linuxbox ~]$ echo *s
输出结果: Documents Pictures Templates Videos
隐藏文件可以通过 ls -A
查看:
[me@linuxbox ~]$ ls -A
4. 按照波浪线展开:echo ~foo
波浪线字符 (~) 在 shell 中有特殊含义。当它出现在单词开头时,会展开为指定用户的主目录。如果没有指定用户名,默认为当前用户的主目录。
例如:
[me@linuxbox ~]$ echo ~foo
输出结果: /home/foo
查看当前用户的主目录:
[me@linuxbox ~]$ echo ~
输出结果: /home/me
5. 算术表达式展开:$((expression))
shell 提供了一个内置计算器,可以使用算术表达式展开。表达式由数字和算术操作符组成,且只支持整数运算。
例如:
[me@linuxbox ~]$ echo $((2 + 2))
输出结果: 4
复杂的算术表达式也可以使用括号嵌套:
[me@linuxbox ~]$ echo $(((5**2) * 3))
输出结果: 75
6. 花括号展开:echo Front-{A,B,C}-Back
花括号可以用来创建带有变量替换的多行文本输出。
例如:
[me@linuxbox ~]$ echo Front-{A,B,C}-Back
输出结果: Front-A-Back Front-B-Back Front-C-Back
花括号展开也可以嵌套:
[me@linuxbox ~]$ echo a{A{1,2},B{3,4}}b
输出结果: aA1b aA2b aB3b aB4b
7. 参数展开:echo $USER
参数展开允许我们引用 shell 变量,方便处理系统信息和脚本化操作。
例如:
[me@linuxbox ~]$ echo $USER
输出结果: me
查看所有环境变量:
[me@linuxbox ~]$ printenv | less
如果变量名错误,参数展开仍会输出空字符串:
[me@linuxbox ~]$ echo S U E R
输出结果: S U E R
8. 命令替换:echo $(ls)
命令替换允许我们将命令输出作为展开模式使用,非常方便文件管理和脚本化操作。
例如:
[me@linuxbox ~]$ echo $(ls)
输出结果: Desktop Documents ls-output.txt Music Pictures Public Templates Videos
结合管道线使用:
[me@linuxbox ~]$ file $(ls /usr/bin/* | grep zip)
输出结果: /usr/bin/bunzip2: symbolic link to `bzip2’
9. 引用
引用机制允许我们选择性地禁止参数展开,控制输出格式。
例如:
[me@linuxbox ~]$ echo this is a test
输出结果: this is a test
引用可以用于避免参数展开中的空格问题:
[me@linuxbox ~]$ echo The total is $100.00
输出结果: The total is 00.00
10. 双引号:引用的第1种类型
双引号可以用来引用包含特殊字符的文本,避免单词分割机制解析空格。
例如:
[me@linuxbox ~]$ ls -l "two words.txt"
输出结果: -rw-rw-r-- 1 me me 18 2008-02-20 13:03 two words.txt
双引号中的参数展开和命令替换仍然有效:
[me@linuxbox ~]$ echo "$USER $((2+2)) $(cal)"
输出结果: me 4 February 2008 Su Mo Tu We Th Fr Sa …
11. 单引号:引用的第2种类型-禁止所有的展开
单引号禁止所有的参数展开,适用于需要完全控制输出格式的场景。
例如:
[me@linuxbox ~]$ echo 'text ~/.txt {a,b} $(echo foo) $((2+2)) $USER'
输出结果: text ~/.txt {a,b} foo 4 me
12. 转义字符:反斜杠\
反斜杠用于转义特殊字符,常用于双引号中以避免参数展开。
例如:
[me@linuxbox ~]$ echo “The balance for user $USER is: $5.00”
输出结果: The balance for user me is: $5.00
在文件名中使用反斜杠可以解决特殊字符问题:
[me@linuxbox ~]$ mv bad&filename good_filename
发表评论
最新留言
关于作者
