shell
1、记录命令历史
!是与命令历史有关的一个特殊字符,常用有3个:
- !! :连续两个!表示执行上一条命令
- !n:n为数字,表示执行命令历史的第n条命令
- !字符串:字符串大于等于1,如!pw,表示执行命令历史中最近一次以pw开头的命令
2、命令和文件名补全: tab键可以帮我们补全一个指令、一个路径或一个文件名
3、别名
- alias:把常用并且很长的指令领取名为一个简单易记的指令
- unalias:解除别名
- 自定义命令的别名:alias[命令别名]=[‘具体的命令’]
4、通配符: 用*来匹配零个或多个字符,用?匹配一个字符
5、输入/输出重定向
- 输出重定向:> 用于改变命令的输出
- 输入重定向:< 用于改变命令的输入
- 错误重定向:2>
- 追加重定向:>>
6、管道符: 用于将前一个指令的输出作为后一个指令的输入,如:# cat /etc/passwd|wc -l
7、作业控制
- Ctrl+Z:暂停运行进程
- fg:恢复进程
- bg:后台重新运行
- Ctrl+C:终止进程
变量
1、命令env: 可列出系统预设的全部系统变量
- HOSTNAME:主机的名称
- SHELL:当前用户的shell类型
- HISTSIZE:历史记录数
- MAIL:当前用户的邮件存放目录
- PATH:该变量决定了shell将到哪些目录中寻找命令或程序
- PWD:当前目录
- LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量
- HOME:当前用户的家目录
- LOGNAME:当前用户的登录名
2、命令set: 和env类似,输出系统预设变量,也显示用户自定义的变量,但只能在当前shell中生效
- 允许系统内所有用户登录后都能使用该变量:在/etc/profil文件最后一行加入export myname=Aming,然后运行source /etc/profile就可以生效了,再运行bash命令或切换其他账号(如su - test)可以看到效果
# echo "export myname=Aming" >> /etc/profile
# source !$
source /etc/profile
# bash
# echo $myname
Aming
- 仅允许当前用户使用该变量:在用户主目录下的.bashrc文件的最后一行加入export myname=Aming,然后允许source .bashrc就可以生效了
- 设置变量的格式为a=b,其中a为变量名,b为变量内容,=两边不能有空格
- 变量名只能由字母、数字以及下划线组成,不能以数字开头
- 当变量内容带有特殊字符(如空格)时,需要加上单引号,变量内容中本身带有单引号,则需要加双引号。
- 变量内容需要用到其他命令,运行结果可以使用反引号
- 累加其他变量,需要加双引号
系统环境变量与个人环境变量的配置文件
- /ect/profile: 这个文件预设了几个重要的变量,如PATH、USER、MAIL等
- /ect/bashre: 主要预设umask以及PS1(PS1的值:\u指用户、\h指主机名、\w指当前目录、$指字符)
- .bash_profile: 定义了用户的个人化路径与环境变量的文件名称
- .bashre: 该文件包含专属于自己的shell的bash信息
- .bash_history: 用于记录历史记录
- .bash_logout: 当退出shell时,会执行该文件。可将一些清理工作放进去
linux shell中的特殊符号
*1、代表零个或者多个任意字符
# ls /tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test111 /tmp/4_6/test4
2、?只代表一个任意的字符
# touch /tmp/4_6/testa
# ls /tmp/4_6/test?
/tmp/4_6/test1 /tmp/4_6/test4 tmp/4_6/testa
3、注释符号#
在linux中表示注释说明,即#后面的内容都会被忽略
# abc=123 #aaaa
# echo $abc
123
**4、脱义字符\ **
将后面的特殊符号还原为普通字符
# ls -d test\*
ls:无法访问test*:没有那个文件或目录
5、再说管道符|: 用于将前一个指令的输出作为后一个指令的输入
6、命令cut: 用来截取某一个字符。格式:cut -d ‘分割字符’ [-cf] n,这里的n是数字
- -d:后面跟分割字符,分割字符要用单引号括起来
- -c:后面接的是第几个字符
- -f:后面接的是第几个区块
7、命令sort: 格式:sort [-t 分隔符] [-kn1,n2] [-nru],这里n1,n2指数字,其他选项含义:
- -t:后面跟分隔符。
- -n:表示使用纯数字排序。
- -r:表示反向排序。
- -u:表示去重复。
- -kn1,n2:表示n1区间排序到n2区间,可以只写-kn1,即对n1字段排序。
8、命令wc: 用于统计文档的行数、字符数或词数,常用选项-l(统计行数)、-m(统计字符数)、-w(统计词数)
9、命令uniq: 用来删除重复的行,该命令只有-c选项比较常用,表示统计重复的行数,并把行数写在前面。
10、命令tee
类似于重定向>,但比它多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。常用于管道符|后。
11、命令tr: 用于替换字符,常用于处理文档中出现的特殊符号,如DOS文档中出现^M,常用选项:
- -d:表示删除某个字符,后面跟要删除的字符
- -s:表示删除重复的字符
12、命令split: 用于切割文档,常用选项:
- -b:表示依据大小来分割文档,单位为byte
# mkdir split_dir
# cd !$
cd split_dir
# cp /etc/passwd ./
# split -b 500 passwd
# ls
passwd xaa xab xac xad xae
- -l:表示依据行数来分割
# rm -f 123a*
# split -l 10 passwd
45 passwd
10 xaa
10 xab
10 xac
10 xad
5 xae
90 总用量
13、特殊符号$: 用作变量前的标识符,还可以和!结合起来用
14、特殊符号; 在一行中运行两个或两个以上的命令,需要在命令之间加这个符号。
15、特殊符号~ 表示用户的家目录
16、特殊符号& 若想把一条命令放到后台执行,则需加上“&”,他通常用于命令运行时间较长的情况,可用在sleep后
17、重定向符号>、>>、2>和2>>
- 重定向符号>和>>分别表示取代和追加的意思。
- 重定向符号2>和2>>分别表示错误重定向和错误追加重定向
18、中括号[] 中括号内为字符组合,代表字符组合中的任意一个。可以是一个范围(1-3 ,a-z)
19、特殊符号&&和||
- command1 ; command2 : 使用;时,不论command1是否执行成功,都会执行command2
- command1 && command2 : 使用&&时,只有command1执行成功,才会执行command2,否则command2不执行
- command1 || command2 : 使用||时,command1执行成功则command2不执行,否则执行command2。即两条命令中总有一条命令会执行