AI智能
改变未来

八、shell基础知识


10.1什么是shell

shell是系统跟计算机硬件交互时使用的中间介质

10.1.1记录命令历史

  • !!:连续两个!表示执行上一条指令

  • !n:这里n是数字,表示执行命令历史中的第n条指令

  • !字符串(字符串大于等于1):例如!pw表示执行命令历史中最近一次以pw开头的命令。

10.1.2命令和文件名补全

按tab键可以补全一个指令、一个路径或者一个文件名。连续按两次tab键,系统则会把所有的命令或者文件名都列出来。

10.1.3别名

可以通过alias把一个常用的并且很长的指令另取名为一个简单易记的指令。如果不想用可以通过unalias命令解除别名功能。

10.1.4通配符

可以使用*来匹配零个或多个字符,用?匹配一个字符

10.1.5输入/输出重定向

输入重定向用于改变命令的输入 输出重定向用于改变命令的输出。
输入重定向的命令是<,输出重定向的命令是>。
错误重定向命令2>以及追加重定向命令>>

10.1.6管道符

用于将前一个指令的输出作为后一个指令的输入

10.1.7作业控制

按Ctrl+Z(暂停)然后使用fg(foreground)命令恢复它,或是利用bg(background)命令使它到后台运行
按Ctrl+C(终止)

10.2变量

10.2.1命令env

使用env命令时,可以列出系统预设的全部系统变量
常见的环境变量

  • HOSTNAME:表示主机的名称
  • SHELL:表示当前用户的shell类型
  • HISTSIZE:表示历史记录数
  • MALL:表示当前用户的邮件存放目录
  • PATH:该变量决定了shell将到哪些目录中寻找命令或程序
  • LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量
  • HOME:表示当前目录的家目录
  • LOGNAME:表示当前用户的登录名

10.2.2命令set

set和env命令类似,也可以输出环境变量

set命令不仅可以显示系统预设的变量 也可以显示用户自定义的变量

虽然可以自定义变量 但是该变量只能在当前shell中生效

如果在当前shell中运行bash指令 则会进入一个新的shell
这个shell就是原来shell的子shell
安装命令 yum install psmisc

pstree命令会把Linux系统中的所有进程以树形结构显示出来。
在父shell中设定变量后,进入子shell时,该变量是不会生效的。如果想让这个变量在子shell中生效,则要用到export指令

取消某个变量 只要输入unset即可

10.3系统环境变量与个人环境变量的配置文件

10.4Linux shell中的特殊符号

*它是一个通配符 代表零个或者多个字符或数字

10.4.1*代表零个或者多个任意字符

10.4.2 ?只表示一个任意字符

10.4.3 注释符号#

10.4.4脱义字符\\

这个字符会将后面的特殊符号(如*)还原为普通字符

10.4.5再说管道符|

作用:将前面命令的输出作为后面命令的输入

wc -l用来计算一个文档有多少行

10.4.6命令cut

cut命令用来截取某一个字段 其格式为cut -d’分隔字符’[-cf]n,这里n是数字

  • -d:后面跟分隔字符,分隔字符要用单引号括起来
  • -c:后面接的是第几个字符
  • -f:后面接的是第几个区块
    cut命令用法

10.4.7命令sort

sort命令用做排序 格式为sort[-t分隔符] [-kn1,n2] [-nru] n1,n2指的是数字

  • -t:后面跟分隔字符 作用跟cut的-d选项一样
  • -n:表示使用纯数字排序
  • -r:表示反向排序
  • -u:表示去重复
  • -kn1,n2:表示由n1区间排序到n2区间 可以只写-kn1 即对n1字段排序

10.4.8命令wc

wc命令用于统计文档的行数、字符数或词数。-l(统计行数)、-m(统计字符数)和-w(统计词数)

10.4.9命令uniq

用来删除重复的行 -c选项比较常用,它表示统计重复的行数,并把行数写在前面。

10.4.10命令tee

tee命令后面跟文件名 其作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上

10.4.11命令tr

tr命令用于替换字符

  • -d:表示删除某个字符,后面跟要删除的字符
  • -s:表示删除重复的字符
    tr常用于把小写字母变成大写字母 ‘[a-z]’ ‘[A-Z]’

    tr还可以替换一个字符

10.4.12命令split

用于切割文档 常用选项为-b和-l

  • -b:表示依据大小来分割文档,单位为byte

    如果split不指定目标文件名 则会以xaa、xab…这样的文件名来取切割后的文件
    也可以指定目标文件名

10.4.13特殊符号$

用作变量前面的标识符

10.4.14特殊符号;

如果想在一行中运行两个或两个以上的命令 需要在命令之间加符号;

10.4.15特殊符号~

~表示用户的家目录,root用户的家目录是/root,普通用户的则是/home/username

10.4.16特殊符号&

如果想把一条命令放到后台执行,则需要加上符号&

10.4.17重定向符号>、>>、2>和2>>

重定向符号>和>>,它们分别表示取代和追加的意思
如果想重定向到一个文本,则要用重定向符号2>或者2>>,分别表示错误重定向和错误追加重定向

10.4.18中括号[]

中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z)

10.4.19特殊符号&&和||

  • command1;command2
    使用;时 不管command1是否执行成功,都会执行command2
  • command1&&command2
    使用&&时,只有command1执行成功后,command2才会执行,否则command2不执行
  • command1||command2
    使用||时,command1执行成功后则command2不执行,否则执行command2,即command1和command2中总有一条命令会执行

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 八、shell基础知识