shell基础学习记录
一:记录历史命令:
history:列出历史命令
!!:连续!!执行上一条命令
!n:执行命令历史中的第n条命令
!字符串:表示输出历史最近一次以字符串开头的命令。
二:补全命令
tab
三:别名
alias:将一个长命令另取一个简单的指令,直接执行alias将看到所有得别命。
alias p='pwd'
unalias:用于解除所设置得别名。
unalias p
四:通配符
<:输入重定向用于改变命令的输入
>:输出重定向,改变命令得输出,用于将命令得结果输入到文件中。
[root@mall ~]# touch 123.txt
[root@mall ~]# echo "123" >123.txt
[root@mall ~]# cat 123.txt
123
2>错误重定向
>>:追加重定向
``
六:管道符
```c
|:将前一个命令得输出作为后一个命令得输入
七:作业控制
jobs 查看后台任务
ctrl+z:暂停任务{
bg:后台运行
fg:恢复运行
}
ctrl+c:结束任务
八:变量
shell预设的,大写。作用运行某个命令无需输入路径,输入命令名。
echo $PATH :显示变量值
echo $HOME:显示home路径
/root
echo $LOGNAME::显示名
root
env:列出全局变量
XDG_SESSION_ID=4
HOSTNAME=mall
SELINUX_ROLE_REQUESTED=
TERM=vt100
SHELL=/bin/bash
HISTSIZE=5
SSH_CLIENT=192.168.200.1 62589 22
SELINUX_USE_CURRENT_RANGE=
OLDPWD=/usr/local/sbin
SSH_TTY=/dev/pts/1
USER=root
。。。。。。。
set:列出全局变量
自定义变量
# name=myname
echo $name
myname
unset取消变量
# unset name
# echo $name
环境变量文件
• /etc/profile 用户环境变量,交互,登录才执行
• /etc/bashrc 用户不用登录,执行shell就生效
• ~/.bashrc
• ~/.bash_profile
• ~/.bash_history
• ~/.bash_logout
特殊符号
* :任意一个任意字符
* # ls a*
aa:
ab:
?:匹配一个字符
# ls a?
aa:
ab:
# ls
aa ab abad abasds compose Docker images image.sh install.sh Kubernetes kubernetes_base.sh yaml
# :注释字符
\ :脱义字符(将后面得特殊字符还原成普通字符)
# ls a\*
ls: cannot access a*: No such file or directory
| :管道符
# cat aa | wc -l
cat: aa: Is a directory
0
管道符相关命令
cut 分割,-d 分隔符 -f 指定段号 -c 指定第几个字符
# cat /etc/passwd | cut -d ':' -f 1 | head -5
root
bin
daemon
adm
lp
sort 排序, -n 以数字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2 -u 去重复
# head -n5 /etc/passwd | sort -t: -k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
wc -l 统计行数 -m 统计字符数 -w 统计词
# wc -l /etc/passwd
21 /etc/passwd
uniq 去重, -c统计行数
# vi kkk.txt
11
22
11
33
# sort kkk.txt | uniq
11
22
33
# sort kkk.txt | uniq -c
2 11
1 22
1 33
tee 和>类似,重定向的同时还在屏幕显示
tr 替换字符,tr ‘a’ ‘b’,大小写替换tr ‘[a-z]’ ‘[A-Z]’
# vi kkk.txt
aaa
aaa
dcasd
# cat kkk.txt | tr '[a-z]' '[A-Z]'
AAA
AAA
DCASD
split 切割,-b大小(默认单位字节),-l行数
# split -b 500 /etc/passwd
# ls
xaa xab xac
$ 变量前缀,!$组合,正则里面表示行尾
;多条命令写到一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
2> 2>> &>
[ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]