shell介绍
什么是shell
shell是体格命令解释器,提供用户和机器的交换
支持特定语言,比如逻辑判断。循环
每个用户可以有自己特定的shell
CentOS7默认shell为bash
还有zsh。ksh等
8.2 命令历史
history命令 命令记录在.bash_history中
最大1000条,由变量HISTSIZE 决定
echo $HISTSIZE
$HISTSIZE在/etc/profile中修改
source /etc/profile
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
命令历史记录日期和时间
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"放入/etc/profile中生效
source /etc/profile
永久保存 chattr +a ~/.bash_history 文件只能追加不能删除
!!最后一条命令
!n n为数字 ,运行低n条命令
!vim 找最后运行的vi命令
8.3 命令补全和别名
tab键,敲一下,敲两下。命令/文件路径补全 -CentOS7安装yum install -y bash-completion 参数补全 reboot重启生效
alias 别名 alias 查看系统别名 vim .bashrc vim /etc/profile.d/文件下定义的 unalias redtartnet 取消自定义redtartnet的别名
8.4 通配符
ls *.txt *表示通配
ls ?.txt ?表示一个任意的字符
ls [0-9].txt [0-9]中任选其一,字母也支持
8.5 输入输出重定向
cat 1.txt > 2.txt 输出从定向
cat 1.txt >> 2.txt 追加输出从定向
ls aaa.txt 2>err 2表示错误输出从定向
ls aaa.txt 2>>err 错误追加输出从定向
aaa.txt &>2.txt 错误正确从定向
wc -l <1.txt 输入从定向
command >1.txt 2>&1 &1就是1.txt
shell特殊符_cut命令
特殊符号
*任意哥任意字符
?任意一个字符
#注释字符
\脱意字符
|管道符
几个和管道符有关的命令
cut分割,-d分隔符 -f指定段号 -c指定第几个字符
[root@mingming ~]# cat /etc/passwd |head -2root:x:0:0:root:/root:/bin/bashbinroot:x:1:1:bin:/bin:/sbin/nologin[root@mingming ~]# cat /etc/passwd |head -2 |cut -d":" -f 1,2root:xbin:x[root@mingming ~]# /etc/passwd |head -2 |cut -c 2,3,4ootin:
sort排序,-n以数字排序 -r反序-t分隔符 -kn/-kn1,n2
[root@mingming ~]# head /etc/passwd |sortadm:x:3:4:adm:/var/adm:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/haltlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinroot:x:0:0:root:/root:/bin/bashshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsync:x:5:0:sync:/sbin:/bin/syncuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin[root@mingming ~]# head /etc/passwd |cut -d":" -f 3,4|sort -n0:01:12:23:44:75:06:07:08:1210:14
wc -l统计行数 -m统计字符数 - w统计词
[root@mingming ~]# wc /etc/passwd 24 38 1139 /etc/passwd[root@mingming ~]# wc -l /etc/passwd24 /etc/passwd[root@mingming ~]# wc -w /etc/passwd38 /etc/passwd[root@mingming ~]# wc -m /etc/passwd1139 /etc/passwd
uniq 去重 -c统计行数
[root@mingming ~]# head /etc/passwd |cut -d":" -f 4|sort -n000012471214[root@mingming ~]# head /etc/passwd |cut -d":" -f 4|sort -n|uniq -c 4 0 1 1 1 2 1 4 1 7 1 12 1 14
tee 和>类似,重定向的同事还在屏幕显示 -a 追加
[root@mingming ~]# head /etc/passwd tee 1.txt==> /etc/passwd <==root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
tr 替换字符,tr'a''b',大小写替换tr'[a-z]''[A-Z]'
[root@mingming ~]# echo "aminglinux" |tr '[al' '[AL]'AmingLinux
split 切割,-b大小(默认单位字节),-l行数 split -b 100m file 100m一个文件
split -l 1000 file 1000行一个文件
split -b 100m file mingming 100m一个文件 并指定名为mingming
8.13 shell特殊符号(下
$变量前缀,!$组合,正规里面表示hangwei
;多余命令写到一行,用分号分割
~用户家目录,后面正规表达式表示匹配符
-
2> 2>> &>
[],指定字符中的一个 [0-9].[a-zA-Z],[abc]
||和&&,用于命令之间 ||:或的意思
&& :与的意思
8.9 环境变量配置文件
#扩展
管道符·作业控制
cat 1.txt|wc -l ;cat 1.txt|grep 'aaa' 把cat 1.txt的内容给wc
ctrl z 停止一个任务
jobs 查看后台的任务
bg[id]把任务调到后台
fg[id]把任务调到前天
命令后面加&直接丢到后台
shell变量
PATH,HOME,PWD,LOGNAME
env命令
set命令多了跟多变量,并且包括用户自定义的变量
自定义变量a=1
变量名规则:字母,数字下划线,首位不能为数字
变量值有特殊符号时需要用单引号括起来
变量的累加 a=1; b=2
echo $a$b
全局变量export b=2 只在子shell里生效
unset变量、
环境变量配置文件
/etc/peofile 用户环境变量,交互,登录才执行
/etc/bashrc 用户不用登录,执行shell就生效
~/.bash_profile
~/.bash_history
~/.bash_logout
vim /etc/bashrc
ps1='[\u@\h \W]$ ' 带颜色 ps1='[033[01;32m]u@\h[\033[00m]:[\033[01;36m]W[\033[00m]$'
ps2 进去另外一种输入状态
几个和管道符有关的命令
cut分割,-d分隔符 -f指定段号 -c指定第几个字符
[root@mingming ~]# cat /etc/passwd |head -2root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@mingming ~]# cat /etc/passwd |head -2 |cut -d":" -f 1,2root:xbin:x[root@mingming ~]# /etc/passwd |head -2 |cut -c 2,3,4ootin:
sort排序,-n以数字排序 -r反序-t分隔符 -kn/-kn1,n2
[root@mingming ~]# head /etc/passwd |sortadm:x:3:4:adm:/var/adm:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/haltlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinroot:x:0:0:root:/root:/bin/bashshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsync:x:5:0:sync:/sbin:/bin/syncuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin[root@mingming ~]# head /etc/passwd |cut -d":" -f 3,4|sort -n0:01:12:23:44:75:06:07:08:1210:14
wc -l统计行数 -m统计字符数 - w统计词
[root@mingming ~]# wc /etc/passwd 24 38 1139 /etc/passwd[root@mingming ~]# wc -l /etc/passwd24 /etc/passwd[root@mingming ~]# wc -w /etc/passwd38 /etc/passwd[root@mingming ~]# wc -m /etc/passwd1139 /etc/passwd
uniq 去重 -c统计行数
[root@mingming ~]# head /etc/passwd |cut -d":" -f 4|sort -n000012471214[root@mingming ~]# head /etc/passwd |cut -d":" -f 4|sort -n|uniq -c 4 0 1 1 1 2 1 4 1 7 1 12 1 14
tee 和>类似,重定向的同事还在屏幕显示 -a 追加
[root@mingming ~]# head /etc/passwd tee 1.txt==> /etc/passwd <==root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
tr 替换字符,tr'a''b',大小写替换tr'[a-z]''[A-Z]'
[root@mingming ~]# echo "aminglinux" |tr '[al' '[AL]'AmingLinux
split 切割,-b大小(默认单位字节),-l行数 split -b 100m file 100m一个文件
split -l 1000 file 1000行一个文件
split -b 100m file mingming 100m一个文件 并指定名为mingming
8.13 shell特殊符号(下
$变量前缀,!$组合,正规里面表示hangwei
;多余命令写到一行,用分号分割
~用户家目录,后面正规表达式表示匹配符
-
2> 2>> &>
[],指定字符中的一个 [0-9].[a-zA-Z],[abc]
||和&&,用于命令之间 ||:或的意思
&& :与的意思