当我们输入一个命令时,就是Shell开始工作的时候了。开始学习Shell的时候都是在命令行中进行,慢慢的当我们经常执行一些重复的命令时,就有了把命令写到文件进行自动化执行的需求了。Shell语言简单,容易掌握,下面介绍一些Shell基本的入门知识,包含它的语法,如何执行等等。
- Shell脚本是区分大小写的
- Shell脚本的注释是是以“#”开始的,Shell会忽略“#”后面的内容。不过如果“#”出现在行中间或者后面带有“!”,Shell就不会把这行看作为注释了。
- IO重定向。输入,输出和错误输出。每个进程都有3个特殊的文件描述指针。标准输入(standard input,文件描述指针为0),标准输出(standard output,文件描绘指针为1)和错误输出(standard error,文件描述为2)。标准输入主要是指从键盘输入,例如“ls -l”,-l就是-l就是传给ls命令的标准输入。标准输出就是一个命令的执行结果。标准错误输入就是命令执行错误出现的错误指示信息。我们常用两种方法来进行IO重定向:1是利用管道命令把这些数据流输送给另外一条命令,2是重定向到一个文件。
命令行 | 命令说明 |
命令 > 文件 | 将命令的输出结果重定向到文件 |
命令 &> 文件 | 将命令的输出结果和错误消息一起重定向到文件 |
命令 >> 文件 | 将命令的输出结果追加到文件中,不覆盖 |
c命令 2> 文件 | 将命令的错误输出重定向到文件 |
命令 < 文件 | 文件作为命令的标准输入 |
命令 << 文件 | 允许连续输入数据,知道接收字符串 |
1. 输出重定向
在使用重定向命令时,把输出内容重定向到文件中,所有屏幕上不再显示任何输出结果。如果那个重定向文件不存在的话,就会重新建立一个文件。如果那个文件存在就会覆盖这个文件。为了避免发生覆盖的情况,我们可以采用>>来把数据追加到文件的末尾。
2. 附加输出重定向
正如上面所有的附加输出重定向是将新输出的追加到文件的末尾。
3. 输入重定向(<)
将输入提供给命令来执行。
4. 附加输入重定向(<<)
可以让用户自定义一个字符串,在收到此字符串前会持续将数据输入文件。
5. 错误输出重定向(2>)
将错误信息直接输入到文件,
6. 标准输出和错误输出重定向
将标准输出和错误输出都输入到文件中,例:
- 管道命令
管道命令(|)主要的作用是把前一个命令的输出做作为后一个命令的输入。例,将ps的命令输出作为more的输入:
- 前台和后台:
Linux程序运行有两种方式:前台和后台。
前台运行:要等待命令结束,才能恢复自身的运行。
后台运行:不必等待命令结束,就可以恢复自身的运行。用户就可以输入下一个命令了。将程序放到后台运行,只要在程序后面加上“&”就可以了。
1.命令执行顺序:命令用;隔开,如:
2. 条件执行:
&&:连接两个命令,前一个命令执行成功才执行后面的命令
||:连接两个命令,前一个命令执行失败才执行后面的命令
- 通配符
?:表示任意一个字符
*:表示任意长度的字符串
[]:表示匹配[]中的字符集的任意一个字符,在字符集前加上前缀!表示指定集合以外的字符。
{}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件。
- 单引号,双引号,反引号
单引号(’’)::单引号中的特殊字符($,',",\)都成为普通字符
双引号(””):双引号中的($,',",\)还是特殊字符
反引号(’’):反引号中的字符都解释为命令(也就是~下面的·)
例,
- 运行脚本
运行脚本通常有三种方法:
(1)通过chmod命令把文件的权限设为可读和可执行,然后执行该文件:
Chmod u+x 文件名或者 chmod 755 文件名
./文件名
(2)直接用shell的启动命令来执行脚本:
Bash 文件名(bash命令默认的是读取一个包含命令的文件,所以不用为文件赋予执行权限)
Sh 文件名
(3)使用bash的内部命令“source”或者是“.”来运行脚本
Source 文件名
. 文件名(. 和文件名要有空格)
例,