Shell基础(一)Bash基本功能

Shell基础(一)Bash基本功能

  • Shell概述
  • Shell脚本的运行方式
    • echo命令
    • Shell脚本的执行
  • Bash的基本功能
    • 历史命令
    • 历史命令的调用
    • 命令别名
    • Bash常用快捷键
    • 输入输出重定向
    • 多命令顺序执行
    • 管道符 "|"
    • Shell特殊符号

Shell概述

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

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

Shell脚本的运行方式

echo命令

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

选项:

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

转义字符表:

转义字符 含义
\ \
\a 警告音
\b 向左删除
\c 取消输出行末的换行符,和"-n"选项一致
\e escape键
\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/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
  • 输出重定向
    输出不再输出到屏幕上,而是输出到文件中。
类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式将命令的正确执行结果输出到文件或设备中。
标准输出重定向 命令>>文件 以追加的方式,将命令的正确执行结果输出到文件或设备中。
标准错误输出重定向 错误命令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视频课程学习笔记

你可能感兴趣的:(Shell基础,bash,linux,开发语言)