Shell
常见的shell元素
文件描述与输出重定向:ls
在shell程式中,最常使用的FD大概有三个:
0:标准正确输入
1:标准正确输出
2:标准错误输出
混合输出:
&>b.txt
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道. nginx -V
例子. 当前目录下只有a.txt,没有b.txt
[root@localhost ~]# ls a.txt b.txt 1>file.out 2>&1
[root@localhost ~]# cat file.out
ls: b.txt: No such file or directory
a.txt
#历史 history
#别名 alias
#命令排队执行
; 命令分割,在一行中执行多条语句
&& 一行中执行多条语句,前面成功后后面再执行
|| 一行中执行多条语句,前面不成功后面再执行
通配符
{} ? *
调用历史命令
[root@localhost ~]#vim /root/.bashrc
设置便量:
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"
Shell脚本规范
[root@localhost ~]#vim helloworld.sh
#!/usr/bin/bash
printf "helloworld\n"
~
~
~
[root@localhost ~]# sh helloworld.sh
helloworld
#执行脚本的方式
1.sh 脚本.sh
2.bash 脚本.sh
3../脚本.sh #须要执行权限
4.source 脚本.sh
#语法
第一行:#!/usr/bin/bash
变量的类型
#预定义、环境、自定义、位置变量
#预定义变量
$? 最后一次执行的命令的返回状态。如果这个变量的值为 0,则证明上一条命令正确执行;如果这个变量的值为非 0 ,则 证明上一条命令执行错误。
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)
[root@localhost ~]# ls
{1...20} anaconda-ks.cfg file.txt helloworld.sh
[root@localhost ~]# echo $?
0
#输出当前进程的PID
[root@localhost ~]#vim variable.sh
#!/bin/bash
echo "The current process is $$"
[root@localhost ~]# sleep 30000 &
[1] 12165
[root@localhost ~]#echo $!
[1] 12165
#自定义变量
定义:变量名称=值
[root@localhost ~]#a=100
[root@localhost ~]#echo $a
100
#环境变量
shell 在开始执行是已经定义好的
env 查看所有环境变量
set 查看所有变量
[root@localhost ~]#IPADDR=10.36.177.178
[root@localhost ~]#echo $IPADDR
10.36.177.178
补充
系统级别的文件,配置之后所有用户都会生效
/etc/profile # 配置环境变量的文件
/etc/bashrc
用户级别的文件,配置完成之后只针对当前用户生效
$HOME_DIR
.profile
.bashrc
##将前台进程放到后台执行
bg %num
##查看任务
jobs
##将后台进程放到前台执行
fg %num
##awk的一些简单用法
#默认以空格为分隔符,打印第一列
awk -F':' '{print $1}'
#以空格为分隔符,打印第二行(NR==2)的第二列
awk 'NR==2{print $2}'
#以:为分割符,打印第一列
awk -F':' '{print $1}'