1. 输出重定向
文件描述符 | 含义 |
---|---|
0 | 输入STDIN |
1 | 标准输出 STDOUT |
2 | 标准错误 STDERR |
0,1,2 为内置描述符,3-9为保留自定义描述符
文件描述符 | 含义 |
---|---|
> | 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。 |
< | 从文件而不是从键盘或句柄读入命令输入。 |
>> | 将命令输出添加到文件末尾而不删除文件中已有的信息。 |
>& | 将一个句柄的输出写入到另一个句柄的输入中。 |
<& | 从一个句柄读取输入并将其写入到另一个句柄输出中。 |
| | 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。 |
# 临时重定向
echo "Test" >&1 #标准输出
echo "Error" >&2 #标准错误
# 永久重定向
exec 0<testfile.txt
exec 1>logfile.txt
exec 2>error.txt
2. 函数退出码:
code | 含义 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的Shell命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
128 | 无效的退出参数 |
128+x | 与Linux信号x相关的严重错误 |
130 | 通过Ctrl+C终止的命令 |
255 | 正常范围外的退出状态码 |
3. 结构化命令
#----------------
if [ command ]
then
commands
fi
#-----------------
if [ command ]
then
commands
else
commands
fi
#-----------------
if [ command ]
then
commands
elif [ command ]
then
commands
fi
#test指令
# 字符串比较
# str1 = str2
# str1 != str2
# str1 < str2
# str1 > str2
# -n str1 长度是否非0
# -z str1 长度是否为0
# 数值比较
# n1 -eq n2 检查n1与n2相等
# n1 -ge n2 n1是否大于或等于n2
# n1 -gt n2 n1是否大于n2
# n1 -le n2 n1是否小于等于n2
# n1 -lt n2 n1是否小于n2
# n1 -ne n2 n1是否不等于n2
# 文件比较
# -d file 是否一个目录
# -e file 是否存在
# -f file 是否存在并且是一个文件
# -r file 是否存在并可读
# -s file 是否存在并非空
# -w file 是否存在并可写
# -x file 是否存在并可执行
# -O file 是否存在并归属当前用户
# -G file 是否存在并归属当前组
# file1 -nt file2 file1是否比file2新
# file1 -ot file2 file1是否比file2旧
#-----------------
if test condition
fi
if [ condition ]
then
fi
#-----------------
if [ condition1 ] && [ condition2 ]
if [ condition1 ] || [ condition2 ]
if (( xxxx )) 数学表达式
if [[ xxx ]] 可使用字符串的模式匹配
#-----------------
case $val in
val1)
commands;;
val2)
commands;;
*)
commands;;
esac;
#-----------------
for a in xxx
do
done
for (( i=0;i<10;i++ ))
do
done
#-----------------
# 多个测试命令以最后一个命令为最后返回值
while test command
do
commands
done
#-----------------
until test command
do
commands
done
#-----------------
break x#跳出的层数
#-----------------
continue
4. #相关
标记 | 说明 |
---|---|
$# | 命令数字 |
$@ | 所有参数 分隔 |
$* | 所有参数 一个整体 |
5. 环境变量
- 全局环境变量
printenv
env $VAR
- 局部环境变量
set
unset
-
Shell环境变量(按照加载顺序)
- /etc/profile
- /etc/bashrc(部分系统有)
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
bashrc和profile.d文件夹下面的文件一般通过profile文件进行加载
6.Shell 文件相关
文件头指定的为默认执行程序。eg.
1. #!/bin/bash
2. #!/usr/bin/bash
3. #/usr/bin/python
7. 浮点数解决方案
bc
var1=$(echo "scale=4; 3.44 / 5" | bc)
8. sed
流式文件编辑器
9. gawk
对Sed编辑器的一个封装版本
10.常用命令
# file
cp
mv
ls
ln
cat
less
more
tail
head
# user
useradd
userdel
usermod
groupadd
groupdel
groupmod
# permission
chmod
passwd
su
sudo
# program
nohup
systemctl
service