Shell 简介
Linux shell是一种特殊的交互式工具,核心是命令行提示符,命令行提示符是shell负责交互的部分,它允许用户输入文本命令,然后解释命令,并且在内核中执行。
shell包含了一组内部命令,用这些命令可以完成诸如文件操作、进程操作、用户管理等操作。
将多条shell命令写入一个.sh文件中---Shell脚本。文件后缀.sh。
默认使用的shell是bash,shell是解释型语言,内部命令==shell自带的命令。
#!/bin/bash ## 脚本的声明:要使用哪个shell解释器
#my frist script! ## 在shell中##代表注释
echo "Hello World!"
~
~
脚本的执行
[root@myserver myshellscripts]# sh hello.sh
Hello World!
[root@myserver myshellscripts]# sh -x hello.sh ## 便于排查错误
+ echo 'Hello World!'
Hello Whorld!
[root@myserver myshellscripts]# chmod +x hello.sh
[root@myserver myshellscripts]# ls
hello.sh
[root@myserver myshellscripts]# ./hello.sh
Hello Whorld!
[root@myserver myshellscripts]#
shell常用的指令
重定向输入输出:> < --stdin
输入: >
>>:表示追加, >表示覆盖
[root@myserver test]# vim a.txt
[root@myserver test]# ls
a.txt
[root@myserver test]# cat a.txt
[root@myserver test]# echo "123456"
123456
[root@myserver test]# echo "123456" >a.txt
[root@myserver test]# cat a.txt
123456
输出: <
[root@myserver test]# vim b.txt
[root@myserver test]# cat < a.txt > b.txt
[root@myserver test]# cat b.txt
123456
[root@myserver test]#
相当于键盘键入:--stdin
echo “新密码”|passwd --stdin 用户名
管道: |
将前面命令的执行结果作为后面命令的输入
[root@myserver test]# cat a.txt
123123
[root@myserver test]# echo "123456" >> a.txt
[root@myserver test]# cat a.txt
123123
123456
[root@myserver test]# cat a.txt |grep 123
123123
123456
[root@myserver test]# ifconfig | grep "ens33"
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
[root@myserver test]#
逻辑与: &&
连接命令,当前面命令执行完城后继续执行后面的命令,如果前面命令执行失败,则后面命令不执行。
[root@myserver test]# ls && ls -l
a.txt b.txt
total 8
-rw-r--r--. 1 root root 14 Nov 21 17:31 a.txt
-rw-r--r--. 1 root root 7 Nov 21 13:15 b.txt
[root@myserver test]# aa && ls
bash: aa: command not found...
逻辑或: ||
连接命令,当前面命令执行完城后不执行后面的命令,如果前面命令执行失败,则后面命令执行。
[root@myserver test]# aa && ls
bash: aa: command not found...
[root@myserver test]# aa || ls
bash: aa: command not found...
a.txt b.txt
[root@myserver test]# ls || ls -l
a.txt b.txt
[root@myserver test]#
条件判断: []
-d :检测目录
-f :检测文件
[root@myserver test]# ls
a.txt b.txt
[root@myserver test]# [ -d /test/as ] || mkdir as
[root@myserver test]# ls
as a.txt b.txt
[root@myserver test]#