一、Bash基本

1、echo 命令 [root@localhost ~]# echo [选项] [输出内容]

  选项: -e: 支持反斜线控制的字符转换(具体参见表 11-2)

         -n: 取消输出后行末的换行符号(就是内容输出后不换行)

例子 1: [root@localhost ~]# echo "Mr. Shen Chao is the most honest man!"             #echo 的内容就会打印到屏幕上。

Mr. Shen Chao is the most honest man!

[root@localhost ~]#

例子 2: [root@localhost ~]# echo -n "Mr. Shen Chao is the most honest man!"

Mr. Shen Chao is the most honest man![root@localhost ~]#

#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符。

echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 11-2 所示:

控制字符 

作 用

 \\

输出\本身

\a

 输出警告音

\b 

退格键,也就是向左删除键

\c

取消输出行末的换行符。 和“-n”选项一致

\e

  ESCAPE 键 

\f

换页符

\n

 换行符

 \r

回车键

  \t

制表符,也就是 Tab 键 

 \v

  垂直制表符

  \0nnn

  按照八进制 ASCII 码表输出字符。其中 0 为数字零,nnn 是三位八进制数

 \xhh

按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数

 

2、Shell  开头都是  #!/bin/bash

 

3 、[root@localhost ~]# history [选项] [历史命令保存文件]

  选项: -c: 清空历史命令

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

 

 

4、既然我们说别名的优先级比命令高,那么命令执行时具体的顺序是什么呢?命令执行时的顺序是 这样的:

  1、 第一顺位执行用绝对路径或相对路径执行的命令。

   2、 第二顺位执行别名。

   3、 第三顺位执行 Bash 的内部命令。

   4 第四顺位执行按照$PATH 环境变量定义的目录查找顺序找到的第一个命令。

  为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc”。

   命令如下: [root@localhost ~]# vi /root/.bashrc

 

 

5、Bash 常用快捷键

快捷键

作 用 

ctrl+A

把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移 动到命令行开头时使用。

ctrl+E

 把光标移动到命令行结尾

ctrl+C

强制终止当前的命令

ctrl+L

 清屏,相当于 clear 命令

ctrl+U 

 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退 格键一个一个字符的删除,使用这个快捷键会更加方便

 ctrl+K 

删除或剪切光标之后的内容

ctrl+Y

粘贴 ctrl+U 或 ctrl+K 剪切的内容。

ctrl+R 

在历史命令中搜索,按下 ctrl+R 之后,就会出现搜索界面,只要输入 搜索内容,就会从历史命令中搜索。

ctrl+D

 退出当前终端

ctrl+Z

 暂停,并放入后台。

 ctrl+Q

恢复屏幕输出。

 ctrl+S

暂停屏幕输出。 

 

6、多命令顺序执行

多命令执行符

格式

  作 用

 ;

命令 1 ;命令 2

多个命令顺序执行,命令之间没有任何逻辑联系

  || 

命令 1 || 命令 2

当命令 1 执行不正确($? ≠ 0),则命令 2 才会执行 当命令 1 正确执行($?=0),则命令 2 不会执行

&& 

 命令 1 && 命令 2 

 当命令 1 正确执行($?=0),则命令 2 才会执行 当命令 1 执行不正确($? ≠ 0),则命令 2 不会执行

 

 

7、Bash 中其他特殊符号

符 号 

作 用

 ''

单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特 殊含义。 

 "" 

双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\” 是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。

 ``

 反引号。反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$() 作用一样,不过推荐使用$(),因为反引号非常容易看错。

$() 

和反引号作用一样,用来引用系统命令。

  () 

用于一串命令执行时,()中的命令会在子 Shell 中运行

 {}

 用于一串命令执行时,{}中的命令会在当前 Shell 中执行。也可以用于变 量变形与替换。

 [] 

用于变量的测试。 # 在 Shell 脚本中,#开头的行代表注释。

 $

用于调用变量的值,如需要调用变量 name 的值时,需要用$name 的方式 得到变量的值。

\

 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将 输出“$”符号,而不当做是变量引用。

二、Bash 的变量和运算符

1、什么是变量 在定义变量时,有一些规则需要遵守: 

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name” 则是错误的。 
  • 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为 数值型。
  • 变量用等号连接值,等号左右两侧不能有空格。
  • 变量的值如果有空格,需要使用单引号或双引号包括。如:“test="hello world!"”。其 中双引号括起来的内容“$”、“\”和反引号都拥有特殊含义,而单引号括起来的内容都是 普通字符。 
  • 在变量的值中,可以使用“\”转义符。 
  • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含"$变量名 "或用${变量名}包含变量名。

2、变量的分类 

  • 用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。 
  • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户 的家目录,命令的提示符等。不是太好理解吧,那么大家还记得在 Windows 中,同一台电脑 可以有多个用户登录,而且每个用户都可以定义自己的桌面样式和分辨率,这些其实就是 Windows 的操作环境,可以当做是 Windows 的环境变量来理解。环境变量的变量名可以自由 定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变 量作用是固定的。 
  •  预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

  用户自定义变量 :               名称:自定义  作用:自定义  内容:自定义

  环境变量:

    用户自定义环境变量: 名称:自定义  作用:自定义  内容:自定义
    系统自带环境变量:     名称:确定  作用:确定  内容:自定义

  位置参数变量:         名称:确定  作用:确定  内容:自定义

位置参数变量

 作 用

 $n

 n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上 的参数需要用大括号包含,如${10}

$*

 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

 $@

 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$#

这个变量代表命令行中所有参数的个数

  

  预定义变量:       名称:确定  作用:确定  内容:自定义

预定义变量

作 用

  $?

最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令 自己来决定),则证明上一个命令执行不正确了

  $$ 

当前进程的进程号(PID)

  $!

后台运行的最后一个进程的进程号(PID)

 

[root@localhost sh]# ./test.sh 11 22  44 55
11 22 44 55
====================================
11
22
44
55
[root@localhost sh]# cat test.sh 
#!/bin/bash

for i in "$*"
    do
        echo $i
    done

echo "===================================="

for y in "$@"
    do 
        echo $y
    done

 

3、接收键盘输入

[root@localhost ~]# read [选项] [变量名] 选项:

  •  -p “提示信息”: 在等待 read 输入时,输出提示信息
  • -t 秒数: read 命令会一直等待用户输入,使用此选项可以指定等待时间
  • -n 字符数: read 命令只接受指定的字符数,就会执行
  • -s: 隐藏输入的数据,适用于机密信息的输入

  变量名:

    变量名可以自定义,如果不指定变量名,会把输入保存入默认变量 REPLY

    如果只提供了一个变量名,则整个输入行赋予该变量

    如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字.

 

三、环境变量配置文件

 

  1 source 命令

     [root@localhost ~]# source 配置文件

     或

     [root@localhost ~]# . 配置文件

  2 环境变量配置文件

      1)、 登录时生效的环境变量配置文件 在 Linux 系统登录时主要生效的环境变量配置文件有以下五个: 

  • /etc/profile 
  • /etc/profile.d/*.sh 
  • ~/.bash_profile 
  • ~/.bashrc 
  • /etc/bashrc

      2)、 注销时生效的环境变量配置文件

        在用户退出登录时,只会调用一个环境变量配置文件,就是~/.bash_logout。这个文件默认没有 写入任何内容,可是如果我们希望再退出登录时执行一些操作,比如清除历史命令,备份某些

        数据, 就可以把命令写入这个文件。

      3)、 其他配置文件

        还有一些环节变量配置文件,最常见的就是~/bash_history 文件,也就是历史命令保存文件。