shellcheatsheet(备忘录)-创新互联

老亚瑟比较喜欢用cheat sheet(备忘录)的方式学习一些编程里零散但又经常会用到的知识点。相比于冗长详尽的博客,这种方式既简单轻量,同时每次查看的时候可以通过大脑对知识进行自动补全,能不断提升对应知识点的记忆。但是缺点也很明显,就是讲述不够细致全面。所以,如果读者对相关cheat sheet的知识储备太少的话,建议先系统学习。
下面是我学习和使用Linux shell时的cheat sheet。

成都创新互联公司作为成都网站建设公司,专注网站建设公司、网站设计,有关企业网站制作方案、改版、费用等问题,行业涉及加固等多个领域,已为上千家企业服务,得到了客户的尊重与认可。测试操作符
test = [ ]  这两个是shell 程序
[[ ]]       这个是shell 关键字
引号
" " 双引号中可以使用$对变量取值
' ' 单引号中所有字符均表示字面值,无法用$取值
字符串比较
[[ "$s1" != "$s2" ]] [ "$s1" != "$s2" ]
[[ "$s1" == "$s2" ]] [ "$s1" == "$s2" ]
[[ "$s1" = "$s2" ]] [ "$s1" = "$s2" ]
[[ "$s1">"$s2" ]] [ "$s1" \>"$s2" ]
[[ "$s1"< "$s2" ]] [ "$s1" \< "$s2" ]
数字比较(对[ ] [[ ]] 均有效)
-eq -ne
-gt -ge
-lt -le
字符串测试(对[ ] [[ ]] 均有效)
-z True for zero
-n True for non-zero
文件测试(对[ ] [[ ]] 均有效)
-e True for file exist
-f True for normal file exist
-d True for dir exist
-c True for char file exist
-b True for block file exist
-p True for pipe file exist
-S True for socket file exist
-L/-h True for symbol link exist
-r/w/x True for readable/writable/executable file exist
逻辑运算符
[[ cond-a && cond-b ]] [ cond-a -a cond-b ]
[[ cond-a || cond-b ]] [ cond-a -o cond-b ]
[[ ! cond ]] [ ! cond ]
正则匹配
[[ "$ss" =~ regex ]] && echo ${BASH_REMATCH[1]}
if 判断
if TEST-COMMANDS; then
	CONSEQUENT-COMMANDS
elif TEST-COMMANDS; then
	CONSEQUENT-COMMANDS
else
	CONSEQUENT-COMMANDS
fi
for 循环
for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10)
for i in {1..10}
for i in $(ls)
for i in $(< file)
for i in "$@"
for ((i=0; i<5; i++))
do
	commands
done
while/until 循环
while read -r line
do
	commands
done< "path/to/file"

while getopts :xy: opt
do
	case "$opt" in
	x)
		;;
	y)
		Y=$OPTARG
		;;
	:)
		echo "require args"
		;;
	?)
		echo "invalid args"
		;;
	esac
done

while true
while :
until condition  至少执行一次,和while 条件相反
done 2>error.log  在所有循环体的done 后面可以做标准输出/错误的重定向,while/until循环体的done可后面以做标准输入重定向
select/case 循环
select VAR in LIST
do
	case EXPR in
	PATTERN1)
		CONSEQUENT-COMMANDS
		;;
	PATTERN2 | PATTERN3)
		CONSEQUENT-COMMANDS
		;;
	esac
done
# case 语句可以单独使用
循环控制
break      用于for/while/until/select
continue   用于for/while/until
特殊字符
$@ argv    
$# argc   
$* argv to string
$0 script name   
$? Last cmd exit code
$$ process ID
变量
$PARAMETER = ${PARAMETER}
${!PARAMETER}  间接参数扩展
${!PREFIX*} = ${!PREFIX@}  变量名扩展
字符串操作
${PARAMETER#PATTERN}    从前向后找,删除最短匹配串
${PARAMETER##PATTERN}   从前向后找,删除最长匹配串
${PARAMETER%PATTERN}    从后向前找,删除最短匹配串
${PARAMETER%%PATTERN}   从后向前找,删除最长匹配串
${PARAMETER/PATTERN/STRING}  查找并替换一处匹配
${PARAMETER//PATTERN/STRING} 查找并替换所有匹配
${PARAMETER/PATTERN}         查找并删除一处匹配
${PARAMETER//PATTERN}        查找并删除所有匹配
${#PARAMETER}                计算字符串长度
${PARAMETER:OFFSET:LENGTH}   获取子串,LENGTH可忽略
数组
myarrary=(value1 value2 valueN)  数组初始化
${myarrary[3]}="new one"         插入数组元素
unset myarrary[3]                删除数组元素
${myarrary[@]} = ${myarrary[*]}  遍历数组元素
myarray=(${STRING})              将字符串按空格转换成数组
数学运算
var=$(( EXPR ))  用算术扩展进行整数计算
let EXPR         用let进行算术运算,运算式中不能有空格
expr EXPR        用expr进行算术运算,运算符两边必须用空格,并且只能计算整数
函数
定义1 function func_name {commands }  
定义2 func_name() {commands }
函数入参 $1 .. $n
定义函数内部变量  local
函数返回码  return N
函数返回值,函数内最后一条命令的结果
调用 func_name arg1 arg2
调用,接收返回值 ret=$(func_name arg1 arg2)
调用,转入后台 func_name args &
加载外部脚本文件
. /path/to/bash/script args
source /path/to/bash/script args
标准输出、错误同时重定向
command &>filename
command >& filename
command >filename 2>&1
command 2>&1 >filename
管道过滤器
awk -F: '{print $1 $NF}' #显示列
cut -d: -f1,6            #显示列
cut -c 1                 #显示第一个字符
grep "string"            #显示包含string的行
grep "regex"             #显示匹配正则表达式的行
grep -i "string"         #显示包含string的行,忽略大小写
grep -v "string"         #显示不包含string的行
grep -E "str1|str2"      #显示包含str1或者str2的行
head -n 5				 #显示前5行
paste -d: file1 file2    #将文件内容横向合并,分隔符为:
paste file1 - - -        #将文件内容显示为3列
sed 's/xxx/yyy/g'        #将xxx替换为yyy
sed '/xxx/d'             #将xxx删除
sed -e cmd1 -e cmd2      #执行多个sed 命令
sed -i cmd               #直接修改文件
sort -n                  #首列按字面数值排列
sort -u                  #排序后去重
strings                  #过滤出可打印字符串
tail -n 5                #显示文件最后5行
tee                      #不影响显示的情况下存储输出到文件
tr 'regex1' 'regex2'     #将regex1 转换成regex2
tr -d 'regex'            #删除regex匹配到的字符
uniq                     #删除重复的行
uniq -c                  #计算重复行数
wc -l                    #计算行数
grep 正则字符集
^    	#锚定行的开始 
$    	#锚定行的结束
.    	#匹配一个非换行符的字符 
*    	#匹配零个或多个先前字符
.*   	#一起用代表任意字符
[]   	#匹配一个指定范围内的字符。 
[^]  	#匹配一个不在指定范围内的字符
/(/)   	#标记匹配字符
/< 		#锚定单词的开始,
/>#锚定单词的结束
/{m,n/} #重复字符m~n次,n可忽略
/w 		#[A-Za-z0-9]
/W 		#/w的反置形式
/b 		#单词锁定符
[[:alnum:]]		#[A-Za-z0-9]
[[:alpha:]]		#[A-Za-z]
[[:digit:]]		#[0-9]
[[:lower:]]		#[a-z]
[[:upper:]]		#[A-Z]
[[:blank:]]		#空字符: 空格键符 和 制表符
[[:space:]]		#空格字符: 制表符、换行符、垂直制表符、换页符、回车符和空格键符
awk 语法
awk -F: 'PATTERN { ACTION }'
awk -F: 'BEGIN { ACTION } /pattern1/ { ACTION } /pattern2/ { ACTION } END { ACTION }'
推荐阅读

《Linux Shell 命令行及脚本编程实例详解》

原始博客连接: https://editor.csdn.net/md?articleId=127997233

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前题目:shellcheatsheet(备忘录)-创新互联
网页链接:https://www.cdcxhl.com/article44/egihe.html

成都网站建设公司_创新互联,为您提供软件开发企业网站制作移动网站建设网站建设营销型网站建设做网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站建设