Shell基础(一)Bash基本功能

Shell概述

  • 什么是Shell
    Shell也可以叫Shell命令解释器,它通过用户发出的命令来调用相应的程序。

  • Linux支持的shell
    Linux默认使用Bash Shell,查看/etc/shells文件可以查看Linux支持的shell类型,并且可以互相切换。

Shell脚本的运行方式

echo命令

[root@localhost ~]# echo 选项 输出内容

选项:

  • -e:支持反斜线控制的字符转换
  • -n:取消输出后行末的换行符号(内容输出后不换行)

转义字符表:

转义字符含义
\\
\a警告音
\b向左删除
\c取消输出行末的换行符,和"-n"选项一致
\eescape键
\f换页符
\n换行符
\r回车键
\t制表符,也就是Tab键
\v垂直制表符
\0nnn按照八进制输出ASCII表字符,nnn表示三位八进制数
\xhh按照十六进制输出ASCII表字符,hh表示两位十六进制数

echo也可以输出有颜色的字符。

Shell脚本的执行

  • 赋予权限
[root@localhost ~]# chmod u+x hello.sh 
  • 通过路径执行脚本
[root@localhost ~]# ./hello.sh    #通过相对路径执行
hello world! 
[root@localhost ~]# /root/hello.sh    #通过绝对路径执行
hello world! 
  • 通过bash调用执行脚本
[root@localhost ~]# bash hello.sh
hello world! 

Bash的基本功能

历史命令

root@wszd158-PC:~# history 选项 历史命令保存文件

选项:

  • -c:清空历史命令
  • -w:将缓存中的历史命令写入历史命令保存文件,如果不手工指定历史命令保存文件,则放入默认历史命令保存文件~/.bash_history中

例:

root@wszd158-PC:~# history -w

历史命令条数的查看并不是无限的,有着最大的限制,这个限制可以在环境变量配置文件/etc/profile中修改。

root@wszd158-PC:~# vim /etc/profile
......
HISTSIZE=1000
......

历史命令的调用

  • 使用上下箭头调用以前的历史命令
  • 使用"!n"执行第n条历史命令
  • 使用"!!"重复执行上一条命令
  • 使用"!字符串"重复执行最后一条以该字符串开头的历史命令
  • 使用"!$"重复上一个命令的最后一个参数

命令别名

使用alias命令可以设置与查看命令的别名,不过这样的设置是暂时的,长久的设置需要修改~/.bashrc文件。

[root@localhost ~]# vim .bashrc
......
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
......
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
......

命令的优先级:

  • 第一顺位执行用绝对路径或相对路径执行的命令
  • 第二顺位执行别名
  • 第三顺位执行Bash的内部命令
  • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

Bash常用快捷键

快捷键作用
Tab键命令或文件补全,有一个相同的按一下Tab键就可以补全,有多个相同的按两下Tab就会有提示。
ctrl+A把光标移动到命令行开头,如果我们输入的命令过长,想要把光标移动到命令行开头时使用。
ctrl+E把光标移动到命令行结尾。
ctrl+C强制终止当前的命令。
ctrl+L清屏,相当于clear命令。
ctrl+U删除或剪切光标之前的命令,输错命令时比较方便。
ctrl+K删除或剪切光标之后的的内容。
ctrl+Y粘贴ctrl+U剪切的内容。
ctrl+R在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctrl+D退出终端或者发送邮件。
ctrl+Z将目前运行的程序放入后台。
ctrl+S暂停屏幕输出。
ctrl+Q恢复屏幕输出。

输入输出重定向

  • Bash的标准输入输出
设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出
  • 输出重定向
    输出不再输出到屏幕上,而是输出到文件中。
类型符号作用
标准输出重定向命令>文件以覆盖的方式将命令的正确执行结果输出到文件或设备中。
标准输出重定向命令>>文件以追加的方式,将命令的正确执行结果输出到文件或设备中。
标准错误输出重定向错误命令2>文件以覆盖的方式,把命令的错误执行结果输出到指定的文件或设备中。
标准错误输出重定向错误命令2>>文件以追加的方式,把命令的错误执行结果输出到指定的文件或设备中。

正确和错误的保存命令分开,这些对于人来说是不合理的,所以我们需要可以将正确信息和错误信息都能保存下来的命令。

正确输出和错误输出同时保存:

命令作用
命令>文件2>&1以覆盖的方式,把正确输出和错误输出都保存在同一个文档中。
命令>>文件2>&1以追加的方式,把正确输出和错误输出都保存在同一个文档中。
命令&>文件以覆盖的方式,把正确输出和错误输出都保存在同一个文档中。
命令&>>文件以追加的方式,把正确输出和错误输出都保存在同一个文档中。
命令>>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中。
  • 输入重定向
    例:wc命令可以统计文件中的行数,单词数和字符数。
[root@localhost ~]# wc anaconda-ks.cfg 
  46  108 1134 anaconda-ks.cfg

选项:

  • -c:统计字符数。
  • -w:统计单词数。
  • -l:统计行数。

多命令顺序执行

  • 命令1;命令2:多个命令顺序执行,命令之间没有任何逻辑联系。
  • 命令1&&命令2:当命令1正确执行,则命令2才会执行;当命令1执行不正确,命令2不执行。
  • 命令1||命令2:当命令1执行不正确,命令2才执行;命令1正确执行,命令2不执行。

管道符 “|”

Shell特殊符号

符号作用
’ ’单引号,在单引号中的所有特殊符号都没有特殊含义"$""`"都没有特殊含义。
" "双引号,在双引号中特殊符号都没有特殊含义,但是"$""`""“是例外,有"调用变量的值”“引用命令”"转义符"的特殊含义
反引号,反引号括起来的内容是系统命令,在Bash中会优先执行,和 $ () 的作用一样,不过建议使用$()。
$()和反引号一样,用来引用系统命令,需要把命令的值赋予变量时可以用到。
()用于遗传命令执行是,()中的命令会在子Shell中运行。
{}用于一串命令执行时,{}中的命令会在当前Shell中执行,也可以用于变量变形与替换。
[]用于变量的测试。
#在Shell脚本中,#开头的行代表注释。
$用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符,

例:

[root@localhost ~]# t=$(date)   #将date命令的执行结果赋予变量t
[root@localhost ~]# echo $t
2022年 02月 06日 星期日 01:12:47 EST

ps:尚硅谷linux视频课程学习笔记

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值