基础知识
!:记录命令历史
tab:命令补全
alias:将长指令赋予别名,方便调用。
管道符(|):把前面的命令运行的结果丢给后面的命令
Ctrl + z:暂停一个进程
fg:回复暂停的命令
bg:是暂停的命令后台运行
Ctrl + c:终止一个进程
[ ]:如果是数字的话就用[0-9]这样的形式,当然有时候也可以用这样的形式[15]即只含有1或者5,注意,它不会认为是15。如果要过滤出数字以及大小写字母则要这样写[0-9a-zA-Z]。另外[ ]还有一种形式,就是[^字符] 表示除[ ]内的字符之外的字符。
通配符:
- “*” 匹配零个或多个字符
- “?” 匹配一个字符
- “#” 注释掉后面的内容
- “\” 转义字符
- “|” 管道符,文档操作等,将前面命令的结果丢给后面的命令
- “$” 变量前面的标识符
- “!”
字符串的操作
grep:过滤一个或多个字符
筛选出含有 root 的行:
cat /etc/passwd |grep root
root:x:0:0:root:/root:/bin/bash
cut:截取一段字符
cut -d “分隔字符” [-cf] n 这里的n是数字
-d :后面跟分隔字符,分隔字符要用双引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块
每一行都根据 “:” 分割,每行输出第一段:
cat /etc/passwd |cut -d ":" -f 1
root
daemon
bin
sys
sync
games
man
lp
mail
sort:用做排序
sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
-t 分隔符:作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
取前五行,排序:
head -n5 /etc/passwd |sort
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
取前五行,按:分割后按第 3 块排序:
head -n5 /etc/passwd |sort -t: -k3n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
下图:取前五行,按:分割后按第 3 块反向排序
head -n5 /etc/passwd |sort -t: -k3nr
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
wc:统计文档的行数、字符数、词数,常用的选项为:
-l :统计行数
-m :统计字符数
-w :统计词数
利用echo和“>”构建一个文本文件:
echo "hello world" >123.txt
cat 123.txt
hello world
echo "hello2 world2" >123.txt
cat 123.txt
hello2 world2
echo "hello world" >>123.txt
echo "hello3 world3" >>123.txt
cat 123.txt
hello2 world2
hello world
hello3 world3
分别对:行、字符和词 计数
cat 123.txt |wc -l
3
cat 123.txt |wc -m
40
cat 123.txt |wc -w
uniq:相邻行重复数据进行去重处理
-c :统计重复的行数,并把行数写在前面
tee :
后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。
tr :替换字符,常用来处理文档中出现的特殊符号
如DOS文档中出现的^M符号。常用的选项有两个:
-d :删除某个字符,-d 后面跟要删除的字符
-s :把重复的字符去掉
最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’
cat 123.txt |tr '[a-z]' '[A-Z]'
HELLO2 WORLD2
HELLO WORLD
HELLO WORLD
HELLO3 WORLD3
HELLO WORLD
HELLO WORLD
HELLO WORLD
HELLO3 WORLD3
HELLO2 WORLD2
split :切割文档,常用选项
-b :依据大小来分割文档,单位为byte
;:在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个”;”了。
~:用户的家目录,如果是root则是 /root ,普通用户则是 /home/username
~# cd ..
/# cd ~
:~#
& :如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况。
使用jobs可以查看当前shell中后台执行的任务。用fg可以调到前台执行。这里的sleep命令就是休眠的意思,后面跟数字,单位为秒,常用语循环的shell脚本中。
. >, >>, 2>, 2>>:
前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>。
[ ]:中括号,中间为字符组合,代表中间字符中的任意一个
&& 与 与 ||
使用”;”时,不管command1是否执行成功都会执行command2;使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。
网友评论