1、fold - 限制文件行宽
2、fmt - 一个简单的文本格式器
3、压缩文件的时候可以用命令行
压缩:bzip2 +xxx 或者 gzip +xxx
解压缩:bunzip2 +xxx 或者 gunzip +xxx
4、程序设计模式
- 自顶向下设计:将一个难以完成的任务化分为无数个小块,然后针对每一个小块进行分工合作,最后完成整个项目
5、df -h命令表示磁盘空间的数量
6、shell的文件表达式
-e file:file存在
-f file:file存在并且是一个普通文件
-d file :file存在并且是一个目录
-r file:file存在并且可读
-w file:file存在并且可写
-x file:file存在并且可执行
7、字符串表达式
string:string不为null
-n string:字符串string的长度大于零
-z string:字符串的长度为零
string1 = string2 : string1和string2相同,单或双等号都是可以,不过双等号更受欢迎
string1 == string2
string1 != string2 :string1和string2不相同
string1 > string2:string1排列在string2之后
string1 < string2:string1排列在string2之前
警告:这个>和<表达式操作符必须用引号引起来(或者是用反斜杠转义)
8、整型表达式
integer1 -eq integer2 integer1 等于 integer2
integer1 -ne integer2 integer1 不等于 integer2
integer1 -le integer2 integer1 小于或等于 integer2
integer1 -lt integer2 integer1 小于 integer2
integer1 -ge integer2 integer1 大于或等于 integer2
integer1 -gt integer2 integer1 大于 integer2
9、[ [ ] ]
表达式:= ~ 正则匹配
为整数设计:( ( ) )
结合表达式:&& || !
10、 条件语句
if ……elif …….elif …….else……..fi
if …….. else ……..fi
11、 循环语句
while commands; do commands; done
until commands; do commands; done
12、case:分支流程控制
case xxx in
a)xxx;
b)xxx;
esac
13、$*:展开从1开始的位置参数列起
“$*”:用一个双引号,把所有的位置参数连接成一个字符串
$@:展开从1开始的位置参数列起
“$@“:用一个个双引号,它把每一个用双引号引起的来字符串
shell文本
#!/bin/bash
print_params () {
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
echo "\$4 = $4"
}
pass_params () {
echo "==========\n" '$* :'; print_params $*
echo "==========\n" '"$*" :'; print_params "$*"
echo "==========\n" '$@ :'; print_params $@
echo "==========\n" '"$@" :'; print_params "$@"
}
pass_params "word" "words with spaces”
输出:
14、for循环
for。。。in。。。;do 。。。;done
15、${parameter:-word} 如果parameter没有值或者为空,即为word;否则为paramter
${parameter:=word} 如果paramter没有值或者为空,即为word,并且将word赋值给paramter;否则为paramter
${parameter:?word} 如果paramter没有值或者为空,word输出为标准错误;否则为paramter
${parameter:+word} 如果paramter没有值或者为空,展开结果为空,并且将word替换掉paramter,paramter不会改变
16、${!prefix*} 、 ${!prefix@} 会打印出所有prefix开头的环境变量名
17、${#parameter}打印出parameter的字符长度
18、${parameter:offset:length} 可以从parameter字符串提取一部分字符。提取的时候从第offset开始length结束;如果没有legth则直到字符串末尾
offset为负数,则从末尾开始算起,必须有一个空格与${parameter:-word}区别,即为:${parameter: -word}
19、${parameter#patter} ${parameter##patter}清楚从头部开始的通配符模式,#代表最短,##代表最长
20、${parameter%patter} ${parameter%%patter}清楚从尾部开始的通配符模式,%代表最短,%%代表最长
21、${parameter/pattern/string}
${parameter//pattern/string}
${parameter/#pattern/string}
${parameter/%pattern/string}
/表示只替换掉匹配string的第一个内容;//表示全部替换匹配string的内容;/#表示匹配出现在开头的string的内容;/%表示匹配出现在结尾的string的内容
22、${parameter,}首字母小写
${parameter,,}全部小写
${parameter^}首字母大写
${parameter^^}全部大写
23、算术求值和展开
$((number))
24、> :创建
>>:追加或者是重定向
25、组命令:{ xxx;xxx; [xxx;…] }
子shell:(xxx;xxx;[xxx;xxx;…])
26、${ }用来作变量替换
$( )复合变量
27、shell里面的$*,$@,$#,$0,$1...$9表示什么意思
脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)
$0文件名
$1...$9:参数1...参数9
$?上次返回的状态码
28、单引号( '’ ) :剥夺所有的字符含义,就是一个字符串
双引号( “ ” ) :对于双引号””内的参数替换($)和命令替换(``)是个例外
反引号( ` ` ):命令替换,将输出结果暂时保存,在适当的地方输出
29、单小括号():1.命令组 2.命令替换
双小括号 (()):1.整数扩展
单中括号 [ ]:1.bash的内部命令 2.字符范围 3.条件比较 4.在array结构的上下文
双中括号[[ ]]:1.bash程序语言的关键字 2.支持字符串的匹配 3.用作条件结构判断 4.bash把双中括号中的表达式看作一个单独的元素