echo
换行需要加-e参数
$ echo -e "hello\nbaozi"hellobaozi
set
查看变量
-u 严格模式
$ echo $x
$ set -u
$ echo $x
-bash: x: unbound variable
unset
$ x=5
$ unset x
read
-p 提示输入
$ read -p "please enter your name:" name
please enter your name:baozi
$ echo $name
baozi
-t 设置等待输入时长
$ read -p "请在2秒内输入姓名:" -t 2 name
请在2秒内输入姓名:baozi
$ echo $name
baozi
-s 不显示输入的内容
$ read -p "请输入你的密码:" -s pwd
请输入你的密码:
$ echo $pwd
123
-n 指定字符数
$ read -p "输入5个字符:" -n 5 chars
输入5个字符:12345
$ echo $chars
12345
declare
-设定选项
+取消选项
a 数组型
i 整数型
x 环境变量:export
r 只读变量
p 显示类型
示例
$ aa=11
$ bb=22
$ declare -i cc=$aa+$bb
$ echo $cc
33
$ declare -p cc
declare -i cc="33"
定义数组
$ movie[0]=aa
$ movie[1]=bb
$ declare -a movie[2]=cc
$ echo ${movie[1]}
bb
$ echo ${movie[*]}
aa bb cc
$ declare -p movie
declare -a movie='([0]="aa" [1]="bb" [2]="cc")'
cut
-f 指定取第几列,多列使用逗号分隔。
-d 指定分隔符(默认制表符)。
$ cat stu.txt
1 20 qiu
2 43 liu
3 23 zheng
4 32 yang
5 24 qian
$ cat stu1.txt
1 20 qiu
2 43 liu
3 23 zheng
4 32 yang
5 24 qian
$ cut -f 2 stu.txt
20
43
23
32
24
$ cut -f 2,3 stu.txt
20 qiu
43 liu
23 zheng
32 yang
24 qian
$ cut -f 2 -d " " stu1.txt
20
43
23
32
24
$ cut -f 2,3 -d " " stu1.txt
20 qiu
43 liu
23 zheng
32 yang
24 qian
printf
%s:输出字符串
%i:输出整数
%f:输出浮点数
%m.nf :m表示整数位长度,n表示小数位长度
$ printf '%s' 1 2 3 4 5 6
123456
$ printf '%s\n' 1 2 3 4 5 6
1
2
3
4
5
6
$ printf '%s %s %s\n' 1 2 3 4 5 6
1 2 3
4 5 6
$ printf '%s %s %s %s %s %s\n' 1 2 3 4 5 6
1 2 3 4 5 6
$ printf '%s%s%s\n' 1 2 3 4 5 6
123
456
$ printf '%s%s%s%s%s%s\n' 1 2 3 4 5 6
123456
读取文件内容
$ printf '%s\t%s\t%s\n' $(cat stu.txt)
1 20 qiu
2 43 liu
3 23 zheng
4 32 yang
5 24 qian
sort
-r 降序,默认升序
$ head -n 20 /etc/passwd | grep -v "#" |cut -f 1,2,3 -d ":" > some_passwd
$ cat some_passwd
nobody:*:-2
root:*:0
daemon:*:1
_uucp:*:4
_taskgated:*:13
_networkd:*:24
_installassistant:*:25
_lp:*:26
_postfix:*:27
_scsd:*:31
$ sort some_passwd
_installassistant:*:25
_lp:*:26
_networkd:*:24
_postfix:*:27
_scsd:*:31
_taskgated:*:13
_uucp:*:4
daemon:*:1
nobody:*:-2
root:*:0
$ sort -r some_passwd
root:*:0
nobody:*:-2
daemon:*:1
_uucp:*:4
_taskgated:*:13
_scsd:*:31
_postfix:*:27
_networkd:*:24
_lp:*:26
_installassistant:*:25
-t 指定分隔符,默认制表符
-k n[,m] 按照指定的字段范围排序,默认到末尾。
$ sort -t ":" -k "3,3" some_passwd
nobody:*:-2
root:*:0
daemon:*:1
_taskgated:*:13
_networkd:*:24
_installassistant:*:25
_lp:*:26
_postfix:*:27
_scsd:*:31
_uucp:*:4
$ sort -t ":" -k "3,3" -r some_passwd
_uucp:*:4
_scsd:*:31
_postfix:*:27
_lp:*:26
_installassistant:*:25
_networkd:*:24
_taskgated:*:13
daemon:*:1
root:*:0
nobody:*:-2
-n 以数值方式排序,数字默认是以字符串形式排序的。
$ sort -t ":" -k "3,3" -r -n some_passwd
_scsd:*:31
_postfix:*:27
_lp:*:26
_installassistant:*:25
_networkd:*:24
_taskgated:*:13
_uucp:*:4
daemon:*:1
root:*:0
nobody:*:-2
$ sort -t ":" -k "3,3" -n some_passwd
nobody:*:-2
root:*:0
daemon:*:1
_uucp:*:4
_taskgated:*:13
_networkd:*:24
_installassistant:*:25
_lp:*:26
_postfix:*:27
_scsd:*:31
wc
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
$ wc /etc/passwd
108 294 6774 /etc/passwd
$ wc -l -w -m /etc/passwd
108 294 6774 /etc/passwd
网友评论