shell是什么?
Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。
不同的组织机构开发了不同的 Shell,常见的 Shell 有 sh、bash、csh、tcsh、ash 等。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
查看电脑支持的shell1
cat /etc/shells
如果你不知道怎么搭建一个Centos7系统,可以参考这篇文章:传送门
常用命令
echo
输出命令
通过 -e
参数可以支持字符转换,\r\n
表示回车换行
1 | [root@localhost ~]# echo hello |
注意上面的代码,有的用了双引号有的没有用,那么接下来讲一下其他符号的用法。
符号 | 作用 |
---|---|
‘’ | 单引号。在双引号里特殊符号都没有特殊含义 |
“” | 双引号,在双引号里特殊符号都没有特殊含义,但是 $ ` \ 例外 |
` | 反引号,扩起来的是系统命令 |
$() | 和反引号一样 |
# | 在shell脚本中,#开头的行代表注释 |
$ | 用于调用变量的值 |
\ | 转义符号 |
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。
- 编写执行shell
shell脚本都是以 .sh
结尾的,新建的文件默认都是没有执行权限的,要自己修改权限。
1 | // 编辑文件 |
- 历史命令
可以通过history
查看你输入的历史记录,临时输入的命令还在内存中,还没有存到磁盘中,可以通过history -w
把它写到磁盘中去,磁盘文件地址是~/.bash_history
,默认保存1000条。通过history -c
清空历史记录。
1 | [root@localhost ~]# history |
输出重定向
直接输出内容都是在显示器中显示的,但是可以把输出的内容写入到文件中去,我们称为重定向。输入输出分为3种。
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
1 | [root@localhost ~]# ls > t.txt |
需要使用到的命令
命令 > 文件
将标准输出的内容存放到一个文件中,如果文件中有内容将会被覆盖命令 >> 文件
将标准输出的内容存放到一个文件中,如果文件中有内容将在末尾追加命令 >& 文件
默认是不可以把错误输出写入到文件中去,可以通过把标准输出和错误输出一起写到文件中去
LINUX默认输入是键盘,输出是显示器。你可以用重定向来改变这些设置。比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了。输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果。
wc命令的功能为统计指定文件中的行数、字数、字节数, 并将统计结果显示输出
多命令顺序执行
通常情况我们一次要执行多个命令,那么如何保证多个命令的执行顺序呢,就要用到以下符号来处理了。
多命令执行符 | 格式 | 作用 | 案例 |
---|---|---|---|
; |
命令1;命令2 |
多个命令执行,命令之间没有任何逻辑联系- | echo 1;echo 2; |
&& |
命令1&&命令2 |
逻辑与 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行- | echo 1&&echo 2; |
\\ |
命令1\\命令2 |
逻辑或 当命令1执行不正确,则命令2才会执行 当命令1正确执行,则命令2不会执行- | echo 1\\echo 2; |
命令1|命令2
管道符:命令1的正确输出会作为命令2的操作对象通配符:匹配文件名和目录名
通配符 | 作用 |
---|---|
? |
匹配一个任意字符 |
* |
匹配0个或任意字符,也就是可以匹配任意内容 |
[] |
匹配中括号中任意一个字符 |
[-] |
匹配中括号中任意一个字符,-代表范围 |
[^] |
匹配不是中括号中的一个字符 |