Linux Shell 备忘 笔记

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章