一、文件描述符与输出重定向
在Shell程式中,最常用的FD(file descriptor) 大概有三个,分别是:
0: Standard Input (STDIN)
1: Standard Output (STDOUT)
2: Standard Error Output (STDERR)
在标准情况下, 这些FD分别跟如下设备关联:
stdin(0): keyboard 键盘输入,并返回在前端
stdout(1): monitor 正确返回值 输出到前端
stderr(2): monitor 错误返回值 输出到前端
一般来说, "1>" 通常可以省略成 ">".
1>&2 正确返回值传递给2输出通道 &2表示2输出通道,之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件,如果此处错写成 1>2, 就表示把1输出重定向到文件2中.
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道. nginx -V
例子. 当前目录下只有a.txt,没有b.txt
[root@redhat box]
[root@redhat box]
ls: b.txt: No such file or directory
a.txt
现在, 正确的输出和错误的输出都定向到了file.out这个文件中, 而不显示在前端 =================================
[root@localhost dir1]
> eee
> 曲项向天歌
> 白毛浮绿水
> 红掌拨清波
> EFO
[root@localhost dir1]
eee
曲项向天歌
白毛浮绿水
红掌拨清波
二、Linux操作快捷方式
补全
Tab键
安装bash-completion
历史
history 所有历史
!编号 ↑ Ctrl+R esc . 上一条命令的最后一个参数
小技巧:显示历史命令执行时间
1.设置变量
vim /etc/profile
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"
2.再次执行history查看结果
source etc/profile
别名
alias xxx=''
vim /root/.bashrc
alias xxx=''
unalias xxx
快捷键
Ctrl+a
Ctrl+e
Ctrl+u
Ctrl+k
前后台作业
1、bg%作业号 将前端任务移动至后端
fg%作业号 将后端任务移动至前端
Ctrl+Z 暂停
2、sleep 1000 & (终端断开就没了)
3、nohup sleep 1000 &
jobs(终端断开就没了)
ps -ef
管道
ip (-f inet) a (show dev ens33) | cut -d' ' -f6 | cut -d'/' -f1
命令排序执行
&& 一行中执行多条语句,前面成功执行后面
|| 一行中执行多条语句,前面不成功执行后面
通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符
正则表达式 脚本
%s/^SELINUX=.*/SELINUX=disabled/g
[root@localhost ~]
09/09
[root@localhost ~]
9/9
systemctl status firewalld &> /dev/null && echo "防火墙开启" || echo "防火墙关闭"
三、Shell脚本规范
1.
2.
3.
3.
4.
5.
6.
7. printf "hello world\n"
1、bash 脚本.sh
2、sh 脚本.sh
3、source 脚本.sh
4、./脚本.sh (需要执行权限)
5、. 脚本.sh
第一行: “
第二行: 为“