本文共 4039 字,大约阅读时间需要 13 分钟。
echo [选项] [输出内容]
-e: 支持转义字符
控制字符 | 作 用 |
---|---|
\ | 输出\本身 |
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\c | 取消输出行末的换行符。和“-n”选项一致 |
\e | ESCAPE键 \f 换页符 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是Tab键 \v 垂直制表符 |
\0nnn | 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
\xhh | 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 |
# \b退格符(base) [root@localhost sbin]# echo -e "ab\bc"ac(base) [root@localhost sbin]# echo -e "a\tb\tc\nd\te\tf"a b cd e f
代码 | 颜色 |
---|---|
30m | 黑色 |
31m | 红色 |
32m | 绿色 |
33m | 黄色 |
34m | 蓝色 |
35m | 洋红 |
36m | 青色 |
37m | 白色 |
(base) [root@localhost sbin]# echo -e "\e[1;31m abcd \e[0m"
read [选项] [变量名]
#!/bin/bashread -t 30 -p "Please input your name: " name#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中echo "Name is $name "read -s -t 30 -p "Please enter your age: " age#年龄是隐私,所以我们用“-s”选项隐藏输入echo -e "\n"echo "Age is $age "read -n 1 -t 30 -p "Please select your gender[M/F]: " gender#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)echo -e "\n"echo "Sex is $gender"
[root@localhost sh]# vi hello.sh#!/bin/Bash#The first program# Author: lhx (E-mail: luhongxuan@uinnova.com)echo -e "hello shell"
chmod 755 hello.sh /hello.sh
bash hello.sh
由于Windows与Linux的换行符不一样,在windows下编辑的shell脚本,直接拷贝过来无法执行,我们应该如何转换呢?
答:使用doc2unix命令即可,需要yum提前安装。
cat加-A命令可以看到文件中的隐藏符号:
cat -A '/etc/xxx.conf'
history [选项][历史命令保存文件]
(base) [root@localhost sbin]# vim /root/.bashrc # .bashrc# User specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'
unalias 别名
快捷键 | 作 用 |
---|---|
ctrl+A | 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。 |
ctrl+E | 把光标移动到命令行结尾。 |
ctrl+C | 强制终止当前的命令。 |
ctrl+L | 清屏,相当于clear命令。 |
ctrl+U | 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便 |
ctrl+K | 删除或剪切光标之后的内容。 |
ctrl+Y | 粘贴ctrl+U或ctrl+K剪切的内容。 |
ctrl+R | 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。 |
ctrl+D | 退出当前终端。 |
ctrl+Z | 暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。 |
ctrl+S | 暂停屏幕输出。 |
ctrl+Q | 恢复屏幕输出 |
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
将标准输出改为输出到文件
类 型 | 符 号 | 作用 |
---|---|---|
标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。 |
– | 命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中。 |
标准错误输出重定向 | 错误命令 2> 文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。 |
– | 错误命令 2>> 文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中。 |
同时保存正确与错误输出 | 命令 > 文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 |
– | 命令 >> 文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 |
– | 命令 &>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 |
– | 命令 &>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中(建议使用) |
同时保存正确与错误输出 | 命令>>文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中。 |
其他方式取代键盘输入
使用方法 | 作用 |
---|---|
命令<文件 | 把文件作为命令的输入 |
命令<< 标识符 … 标识符 | 把标识符之间内容作为命令的输入 |
wc < /etc/supervisorctl.conf
多命令执行符 | 格式 | 作 用 |
---|---|---|
; | 命令1 ;命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1 && 命令2 | 逻辑与,当命令1正确执行,则命令2才会执行当命令1执行不正确,则命令2不会执行 |
|| | 命令1 || 命令2 | 逻辑或,当命令1 执行不正确,则命令2才会执行当命令1正确执行,则命令2不会执行 |
mkdir test; cd test
shell中判断命令是否正确:命令 && echo yes || echo no
命令1 | 命令2 :命令1的正确输出作为命令2的操作对象
ps -ef|grep uwsgi
通配符 | 作 用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0- 9]代表匹配一个不是数字的字符。 |
[root@localhost tmp]# ls ?abc[root@localhost tmp]# ls [0-9]*[root@localhost tmp]# mkdir test[0-3]
符 号 | 作 用 |
---|---|
‘’ | 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。 |
“” | 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`“和”\"是例外*拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 |
`` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。**和 ( ) 作 用 一 样 ∗ ∗ , 不 过 推 荐 使 用 ()作用一样**,不过推荐使用 ()作用一样∗∗,不过推荐使用(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令。 |
# | 在Shell脚本中,#开头的行代表注释。 |
$ | 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。 |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。 如$将输出“$”符号,而不当做是变量引用。 |
转载地址:http://kwsoi.baihongyu.com/