在Linux发行版本种Red Hat/Centos 默认安装的shell版本是bash
下面介绍bash的一些特点
history:记录命令历史
只有当用户正常退出当前shell时,在当前shell中运行的命令才会被记录并保存在.bash_history
!! :表示执行上一条指令
!n:表示执行命令历史中的n条命令 n为数字
!字符串:例如输入!pw 就是执行命令历史中最近一次以pw开头的命令
Tab:命令和文件名补全
联系按两次tab键,系统则会把所有的命令或者文件名都列出来
alias:别名
通配符
在bash中可以用*来匹配零个或多个字符,用?来匹配一个字符
输入/输出重定向
输入重定向的命令是<
输出重定向的命令是>
管道符 | 用于将前一个指令的输出作为后一个指令的输入、
作业控制
当运行进程时,你可以使他暂停 ctrl+z 组合键、然后使用fg命令恢复它,或者使用bg命令让它后台运行
亦或者是ctrl+c终止它
jobs 显示后台程序或被暂停的任务
变量
env命令 :列出系统预设的全部系统变量
set 命令: 显示系统预设变量和用户自定义的变量
自定义的变量只能在当前shell生效
设置变量的格式为a=b,其中a为变量名,b为变量的内容。等号两边不能有空格
变量名只能由数字、字母以及下划线组成,而且不能以数字开头
当变量内容带有特殊字符时(如空格)需要加上单引号
如果变量本身带单引号,这时候就需要加双引号了
,如果变量内容中需要用到其他命令,运行结果则可以使用反引号
当用户在使用双引号的时候,不会取消掉双引号中特殊字符本身的作用,而使用单引号时里面的特殊字符将全部失去其本身的作用
在父shell中设定变量后,进入子shell时该变量是不会生效的,如果想让这个变量在子shell中生效,则要用到export指令
export就是声明一下这个变量,让该shell的子shell也知道变量的值 如果取消某个变量直接输入unset 变量名即可
系统变量与个人环境变量的配置文件
/etc/profile :这个文件预设了几个重要的变量,例如PATH 、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、umask等
/etc/bashrc :这个文件主要预设umask和PS1。这个PS1就是我们输入命令前面的那串字符
.bash_profile:该文件定义了用户个人化路径与变量的文件名称,每个用户都可以使用该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次
.bashrc:该文及包含专属于自己的shell的bash信息,可以将用户自定义的别名或者自定义的变量写道这个文件中
,bash_history :该文件用于记录历史命令
.bash_logout_:当退出shell时,会执行该文件。你可以将一i些清理工作放到这个文件中
Linux shell 特殊符号
*代表零个或多个字符
?只代表一个任意的字符
#表示注释
脱意字符 \ 这个字符会将后面的特殊符号还原为普通字符
wc -l :统计文档行数
cut 命令:截取某个字段
格式cut -d ‘分割字符’[ -cf] n
-d:后面跟分割字符,分割字符用单引号括起来
-c:后面接第几个字符
-f:后面接的是第几个区块
sort 命令用作排序
格式 sort [-t 分隔符] {-kn1,n2 } {-nru}
sort不加选项就是从首字符向后一次按ASCII码进行比较,然后生效输出
-t:后面跟分割符
-n:使用纯数字进行排序
-r:表示反向排序
-u:表示区重复
-kn1,n2:表示由n1区间排序到n2区间,可以只-kn1,对n1进行排序
wc命令
用于统计文档的行数、字符数或词数
-l:统计行数
-m:统计字符数
-w:统计词数
如果wc不跟任何选项,直接跟文档则行数、词数和字符一场输出
uniq 命令用来删除重复的行 -c 表示统计重复的行,并把行数写在前面
使用uniq命令前要先使用sort命令排序
tee命令:类似重定向> 即使把文件写入后面所跟的文件时,还显示在屏幕上
tr命令 用于替换字符 把小写变为大写 tr ‘[a-z]’’[A-Z]’
命令split 用于切割文档
-b:依据大小来分割文档,单位为Byte
如果不指定文件名,则会以xaa,xab这样的文件名来存取切割后的文件
-l:依据行数来分割文档
特殊符号 $
符号
可
以
用
作
变
量
前
面
的
表
示
符
,
还
可
以
和
!
可以用作变量前面的表示符,还可以和!
可以用作变量前面的表示符,还可以和!结合
表示执行上一条命令中的最后一个变量
特殊符号;
如果在一行中运行两个或两个以上的命令可以在中间加上分号
特殊符号 ~ 表示用户的家目录
特殊符号& 如果想把一个命令放到后台执行则需要加上&
中括号[]
中括号内为字符组合 ,代表任意一个 可以用-连接
特殊符号&& 和||
&&表示只有第一条命令成功才可以继续执行下一条
|| 表示只有第一条命令执行错误才可以执行下一条