shell的基础
1.记录命令历史记录
在家目录的.bash_history上,会保存1000条历史命令
常用三个命令:
!!:执行上一条指令
!n:执行历史中第n条指令,如!1002
!字符串:执行历史中最近的一次以该字符串开头的命令
2.命令行补全:Tab键
3.别名: alias
单alias,查看所有的别名
alias 别名='实际名'
unalias 别名
4.通配符
在bash下, *匹配零个或者多个字符,?匹配一个字符
touch创建文档
5.输入、输出重定向
符号>>与>
如echo >> 1.txt
6.管道符(重要)
| 用于前一个指令的输入作为后一个指令的输入!
可能不太能理解,其实就是过滤的过程
7.作业控制
运行进程的时候,crtl+z使进程暂停(ctrl+c取消进程),然后使用fg(foreground)命令恢复。
在ctrl+z之后,可以使用命令jobs
来查看有哪些进程是暂停的。
如果要把暂停的进程放在后台运行,可以使用bg命令
但是有多个的时候,需要加上标号
&符号,使用&符号的时候,会把任务放到后台运行,并且会显示pid的信息。
例如: vmstat 1 > /emp/1.log &
ps aux可以找到线程。
8.变量
符开头的,如PATH
9.命令env
可以列出系统所有的变量
10.set命令
与env命令一样,会列出所有的变量
11.常用的环境变量文件
11.1 /etc/profile 重要的环境变量,如PATH,USER等
11.2 /etc/bashrc 主要预设umask和PS1
11.3 .bash_profile
11.4 .bashrc 包含属于自己的shell信息
11.5 .bash_history
11.6 .bash_logout
12.shell中的特殊符号
*代表多个,?代表一个字符,#为注释符号,\为转义字符。
管道符|,一般针对文档字符比较常用,比如cat,less, head,tail,grep,cut,sort,wc,uniq,tee, tr, split,sed,awk等
其中grep,sed,awk是正则必须掌握的
cut命令:截取一个字段
格式:cut -d '分隔字符' [-cf]n
-d:后跟分隔字符
-c:后接第几个字符
-f:后跟第几个区块
sort命令:做排序
sort[-t 分隔符] [-kn1,n2] [-nru]
-t:分隔字符
-n:纯数字排序
-r:反向排序
-u:表示去重
-kn1,n2:n1区间到n2区间
wc命令:统计文档的行数、字符数或词数
-l 行数
-m 字数
-w 次数
uniq命令:
删除重复的行,-c表示统计重复的行数
tee命令:作用类似于重定向>,但是把文件写入的时候还打印在屏幕上
tr命令:用于替换字符
-d:表示删除某个字符
-s:删除重复的字符
tr 'a' 'A' 替换
split命令:用于切割文档,常用的是-b和-l;
-b:分割文档的大小,
-l:根据行数分割
特殊符号可以作为变量的开始,也可以和!结合使用,!$表示上一条命令中的最后一个变量
特殊符号;
一行中输入多个命令,使用分号;
特殊符号~
波浪符~表示家目录,root用户的家目录是:/root,普通用户是/home/username
特殊符号&
把一条命令放到后台执行,使用&
如:sleep 30 &
重定向>, >>, 2>, 2>>
将错误信息重定向到文档中,使用2>或者2>>
如:ls aaa 2>/temp/error
中括号[]
内容是字符组合,代表字符中的任何一个,也可以是一个范围
如 ls -d test[1-9].txt
&&与||
command1 ; command2 不管1执行成功不,都执行2
command1 && command2 1执行成功后,才执行2
command1 || command2 1执行成功了就不执行2