bash shell

shell是和内核通信的接口,shell有很多种,Linux默认是bash

bash shell功能

命令记忆(history)

  • 用户注销时,系统会将最近的HISTSIZE条命令更新到~/.bash_history
  • history命令列出最近的命令
  • !number执行第number条命令
  • !!相当于按↑再按enter
  • !command由最近向前搜索开头为command的命令,并执行

Tab键补全

  • 按Tab键可补全命令或文件
  • 输入多行命令时可使用\enter转义回车键

命令别名(alias)

设置别名:alias 别名='命令参数...',取消别名:unalias 别名,列出所有别名alias,如

alias lm='ls -al'
unalias lm
alias

使别名永久生效

上面的方法只是暂时,重启后则别名失效,可以通过将alias xx='xxxx'写入环境变量文件如~/.bashrc使别名永久生效

通配符

符号意义
*代表0到无穷多个任意字符
?代表一定有一个任意字符
[]代表一定有一个在中括号内的字符,如[abcd]代表一定有一个字符,可能是a,b,c,d中任一个
[-]代表在编码顺序内的所有字符,例如[0-9]代表0-9之间的所有数字
[^]中括号内第一个字符为\^,例如[^abc]代表一定有一个字符,只要是非a,b,c的其他字符就接受

数据流重定向

定义:将命令执行后应出现在屏幕上的数据传输到其他地方

  • 标准输入:代码为0,使用<<<
  • 标准输出:代码为1,使用>>>
  • 标准错误输出:代码为2,使用2>2>>
  • >是创建,如果文件已存在则将内容清空,>>是追加,在已有文件后继续写入内容

ll /home > ~/home_file  #将ll /home的信息输出到~/home_file文件中

/dev/null可以吃掉任何导向这个设备的信息(不显示,不存储)

ll /home 2> /dev/null    #将错误信息丢弃

将输出与错误输出写入不同文件和同个文件

ll /home > list_right 2> list_error  #输出到不同文件
ll /home/admin > list 2>&1  #正确输出和错误输出顺序写入同个文件,2>&1之间没有空格
ll /home/admin > list 2> list   #正确输出和错误输出可能交叉写入同个文件

标准输入将原本由键盘输入改由文件内容输入,<<代表结束输入

cat > cat_file < ~/.bashrc  #将.bashrc文件内容存入cat_file
cat > cat_file << aaa   #当输入aaa时,此次输入结束

命令执行的判断依据

一次输入多重命令执行,&&||的执行顺序与Java中条件表达式的短路原则一致,此处&&||的优先级一样(Java中&&||高)

命令方式含义
cmd1 ; cmd2命令之间无相关性,顺序执行
cmd1 && cmd2若cmd1执行正确,则开始执行cmd2;若cmd1执行错误,则cmd2不执行
cmd1 || cmd2若cmd1执行正确,则cmd2不执行;若cmd1执行错误,则开始执行cmd2
#不管/tmp/abc是否存在,一定要创建/tmp/abc/hehe文件
ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

管道命令

管道命令|仅会处理前一个命令的标准输出,忽略标准错误输出

选取命令

选取信息是针对“行”为单位

  • cut命令按要求对每一行进行切割
cut -d '分隔字符' -f number
cut -c 字符范围

# -d: 与-f一起使用
# -f: 依据-d将一行切割成数段,-f取出第几段,从1开始计数
# -c: 以字符单位取出固定字符区间,如2-5则取出第2到第5个字符内容,从1开始计数

#例子
echo $PATH | cut -d ':' -f 5    #取出PATH路径中的第5个路径
export | cut -c 12-     #取出每一行第12个字符后的内容
  • grep命令分析一行信息,符合要求则将该行拿出来
grep [-acinv] [-AB n] [--color=auto] '查找字符串' filename

# '查找字符串': 可包含正则表达式
# -a: 将binary文件以text文件的方式查找数据
# -c: 计算找到'查找字符串'的次数
# -i: 忽略大小写,所有大小写视为相同
# -n: 顺便输出行号
# -v: 反向选择,即显示出没有'查找字符串'内容的那一行
# -A: 后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
# -B: 后面可加数字,为before的意思,除了列出该行外,前面的n行也列出来
# --color=auto: 将关键字加上颜色

#例子
last | grep -n 'root'       #取出root登录的行
grep 'MANPATH' /etc/man.config  #man.config文件内包含有'MANPATH'的行显示出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值