bash基本命令
环境变量通常是大写字符。
变量赋值,=两边不能有空格!
双引号内的特殊字符如$,保持原来的意思。
单引号内的特殊字符都是一般字符。
name=test
echo "$name" # test
echo '$name' # $name
unset取消变量。
环境变量中PATH表示为执行文件查找的路径,目录与目录之间用:分割。目录的顺序是很重要的。
变量的设置方式
${变量#关键字}: 从头开始匹配关键字,将符合的最短的关键字删除
${变量##关键字}:将符合的最长的关键字删除
${变量%关键字}: 从头开始匹配关键字,将符合的最短的关键字删除
${变量%%关键字}:将符合的最长的关键字删除
${变量/旧字符/新字符}:替换,将第一个旧字符替换
${变量//旧字符/新字符}:替换,全部替换
history
描述最近运行的命令。
!@H_403_50@number: 执行第几条命令
!@H_403_50@command: 从最近的指令开始找,第一个满足@H_403_50@command开头的命令
!!:上一条指令
组合按键
Ctrl+U:删除整行命令 Ctrl+Z: 暂停当前命令
特殊符号
>: 输出导向,替换 >>: 输出导向,累加 <: 输入导向
&& 与 ||
遵循短路规则。
cmd1 && cmd2:如果cmd1执行完毕且正确($?=0),则执行cmd2,否则不执行cmd2 cmd1 || cmd2:如果cmd1执行完毕且正确,则不执行cmd2,否则执行cmd2
基本命令
cut
-d:后面接分割符 -f:取出第几段 -c: 以字符的单位取出固定字符区间
cut -d ':' -f 3,4
sort
-f:忽略大小写 -b:忽略最前面的空白 -M:以月份的名字排序,例如JAN,DEC等的排序方法 -n:使用纯数字排序 -r:反向排序 -u:uniq,相同数据只出现一次 -t:分割符 -k:以某个区间进行排序
uniq
去重。
-i:忽略大小写 -c:进行计数
scripts ls | uniq -c
1 1234_2017060
1 1234_20170604
1 1234_20170606
1 file_20170604
1 file_20170606
1 script.sh
1 test.txt
wc
计数。
-l:进列出行 -w:仅列出多少字 -m:多少字符
tee
双向重定向
-a,累加的方式加入file当中
tr
切割。
tr -ds set1
-d,删除信息中set1字符串
-s:取重复字符
col
-x: 将tab键转换为对等的空格键
join
将两个文件当中有相同数据的那一行加在一起。
a.txt: 123213 123
b.txt: 123213 1234
join a.txt b.txt
123213 123 1234
-t: 分隔符,默认为空格,默认比较第一个字段 -i:忽略大小写差异 -1 x:第一个文件以第x字段比较 -2 x:第二个文件以第x字段比较
join -t ' ' -1 1 -2 1 a.txt b.txt
123213 1234 134 1234 42151
paste
-d:后面接分割符,默认tab -:来自standard input
a.txt
123213 1234 134 123213 1234 134
b.txt
123213 1234 42151 123213 1234 42151 123213 1234 42151 123213 1234 42151
paste -d ' ' a.txt b.txt
123213 1234 134 123213 1234 42151
123213 1234 134 123213 1234 42151
123213 1234 42151
123213 1234 42151
expand
将tab转换为空格。
-t:一个tab对应多少个空格
split
切割文件
split -b [] -l [] file prefix -b:切割文件的带下,可加单位b,k,m -l:以行数切割 prefix:切割后文件前缀,默认以a a,ab等排序。
split -b 1 file files
可以用cat复原