25个命令总结:4//25/2018
1 mkdir # 创建目录 -p递归
2 touch # 创建文件
3 ls # 查看列表目录
4 cd # 切换目录
5 echo # 打印
6 cp # 拷贝目录 -r递归 -a(dpr)
7 vi # 记事本
8 head # 头部。查看前N行,默认前10,-n数字
9 rm # rm -f force -r 目录
10 cat # 查文件内容
11 remdir # 删除空目录
12 grep # 过滤 -v 排除
13 find # 查找 -type f -name "名字" -mtime =7,7 -7
14 sed # 增删改查 -i修改 -n取消默认输出 -e多项编辑
p s g
15 alias # 修改和设置别名,查看
16 unlias # 取消别名
17 xargs # 从标准输出读入创建执行命令 -n 输入数字:分组
18 awk # -F 指定分隔符 NR行号 {print $1 $2}
19 seq # sequence 打印序列
-s指定分隔符
seq 10 默认每个数字后键入回车,就是竖着排
[root@localhost oldboy]# seq -s "=" 10
1=2=3=4=5=6=7=8=9=10
20 pwd # 打印当前目录
21 tree # 显示目录树。安装:yum install tree -y
22 tr
23 tail # 尾部 查看后N行,默认后10,-n数字
24 vim # 复杂编辑器,一般用于开发(写shell,python)
25 mv # 移动目录或文件名,改名
必须掌握的命令:
man,touch,ls,mkdir,cp cd,rm,mv,echo,pwd,cat,alias,unalias,head,tail,tree,rmdir,find,xargs,awk,sed,grep,vi,vim,seq。。。
·总结:
1 mkdir make directorys #创建目录:mkdir /data,在根/下创建data目录
-p #递归创建目录,一般第一级目录不存在时使用-p。否则报错。
2 ls list 列表 列表目录文件:ls ,列根/目录下的目录和文件
-l(long)长格式,
-d(directorys)查看目录
3 cd change directory 改变目录路径:cd /etc
4 pwd print working directory 打印/显示当前所在目录
5 touch 创建问价或更新文件的时间戳,如果文件不存在就建立新文件,如果在就改变文件的访问时间atime等时间戳信息。
6 vi windows记事本,简单。例子:vi oldboy.txt
7 vim 复杂编辑器(功能复杂:高亮,自动缩进,shell/python脚本用。做运维要用vim,vi会出问题),老师用EmEditor,
8 echo 打印输出内容,配合>或>>,即为文件覆盖或追加内容。还有一个较复杂不常用的类似命令printf。
9 cat #查看文件内容 eg:cat oldboy.txt
10 xargs #从标准输入获取内容创建和执行命令
-n 加数字:分组
11 cp copy #拷贝文件或目录,默认不能拷贝目录。
-r #递归,用于复制目录
-a #相当于-pdr,p 连同档案的属性一起复制过去,而非使用默认属性。
12 mv move #移动文件或目录。
13 rm remove #删除目录和文件。-r:递归,用于删除目录
rm [-irf] [文件/目录]:删除文件/目录。
-i:询问用户是否确认删除,用y或n来回答。
-r:删除目录时加该选项,删除目录及目录下的文件和目录,可以删除不为空的目录。
-f:强制删除,不用确认。
14 rmdir [-p] [目录名]:用来删除空目录。
-p:表示递归删除目录,目录里不能有文件或目录;有文件只能用-rm -r来删除。
如:/a/b/c
rmdir /a/b/c : 会删除/a/b/c。而/a/b还在。
rmdir -p /a/b/c : 会删除/a,/a/b,/a/b/c。
15 *****find #查找。 (五星级必考命令!!!)
-type #按文件类型查找(f(file),d(directory),c(character),b(block),s(socket),l(link))
-name #按文件名类型查找
-mtime #按修改时间查找:+7表示7天以前,7代表第7天,-7代表最近7天。
find /data -type f -name "oldboy.txt"
find /data -type f -name "oldboy.txt" -exec rm {} \;
find /data -type f -name "*.txt"
find /data -type f -name "*.txt" |xargs
find /data -type f -name "*.txt" |xargs rm -f
find /log -type f -name "*.log" -mtime +15 |xargs rm -f
查找log目录,删除15天以前的文件
find /log -type f -name "oldboy" -mtime +30 |xargs rm -rf
查找log目录,删除修改日期在30天以前且以oldBoy结尾的目录,慎用!!
16 *****grep:#过滤需要的内容(linux三剑客)。
-v #后面接要排除内容。eg:grep -v oldboy test.txt
#Context control:
-A(after) #除了显示匹配的一行之外,并显示该行之后的num行。 grep 20 -A 10 ett.txt (匹配第20行,显示改行之后的10行)
-B (before) #除了显示匹配的一行之外,并显示该行之前的num行。 grep 30 -B 10 ett.txt (匹配第30行,显示改行之前的10行)
-C (context) #除了显示匹配的一行之外,并显示该行之前后各num行。 grep 25 -C 5 ett.txt (匹配第25行,然后再显示改行前后各5行)
17 head: #头,头部。读取文件的前n行,默认前10行。
-n 数字,可省略n。
18 tail: #尾,尾部。读取文件的后n行,默认后10行。
-n 数字,可省略n。
提示:三剑客是grep,awk,sed,他们都有过滤字符串的功能。
grep最擅长
awk处理列擅长
sed擅长删除,修改,替换,添加。
19 alias #查看系统现有的别名。
一、设置别名eg:alias rm='echo this comand dose not allow to use.'
二、别名的作用:
1 通过给危险命令加一些保护参数,防止人为误操作。
2 把很多复杂的字符串或命令变成一个简单的字符串或命令。
三、定义别名永久生效:
/etc/profile 全局生效
~/.bashrc 当前用户生效 (eg:只要rm别名还在~/.bashrc文件夹里,通过source ~/.bashrc可以找回来。)
20 unalias #取消某一个,已经设置好的别名。
21 seq sequence #序列
22 sed stream editor #(三剑客老二)流编辑器。实现对文件的增删改替换查。
-n:取消默认输出。
sed -n '20,30'p ett.txt 这里 p 表示打印
一、sed命令:
d 删除当前模式空间所有的内容。
g 与s联合使用时,表示对当前行全局匹配替换。
p 打印匹配行。
s 常说的查找并替换,用一个字符串替换成另一个。
二、sed选项:
-e #允许多项编辑
-f #后面接sed脚本的文件名
-n #取消默认输出
-i #修改文件内容
三、替换 eg: sed 'sed 's#已有的内容#更改的内容#g' oldboy.txt
s 代表替换,g代表全局,sg就是全局替换
### 分隔符,可用任意符号替代,但一般用#或/,@。
一、sed命令:
g: 与s联合使用时,表示对当前行全局匹配替换。
s: 常说的查找并替换,用一个字符串替换成另一个。
二、sed选项:
-e:允许多项编辑。
-i:修改文件内容。
例子:
·sed 's#oldgirl#jabbok#g' oldboy.txt
·sed 's#已有的内容#更改的内容#g' oldboy.txt
s###g: s 代表替换,g代表全局,sg就是全局替换
### :分隔符,可用任意符号替代,但一般用#或/,@。
23 awk #(三剑客老大)过滤,输出内容,自成一门语言。 NR:行号
-F 指定分隔符 NR行号 {print $1 $2}
·特殊符号:
·>或l> #输出重定向:把前面输出的东西输入到后面的文件中,会清楚文件原有内容。
·>>或l>> #追加重定向:吧前面输出的东西追加到后面的文件尾部,不会清除文件原有内容。
·0<或< #输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
·0<<或<< #追加输入重定向:后面跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
·2> #错误重定向:把错误信息输入到后面的文件中,会删除文件原有内容。
·2>> #错误追加重定向:把错误信息追加到后面的文件中,不会删除文件原有内容。
·* #通配符,代表所有。
·| #表示管道
·.. #上一级目录
· . #当前目录
·= #linux里 一个=号是赋值的意思,俩个==号才是等于的意思
说明:
一、箭头的指向就是数据的流向。
二、数字说明:
1、标准输入stdin:代码为0,使用<或<<。数据流向从右向左。
2、标准正常输出stdout:代码为1,使用>或>>。数据(正确数据)从左向右。
3、标准错误输出stderr:代码为2,使用2>或2>>.数据(错误数据)从右向左。
4、2>&1:标准正常输出和标准错误输出一样,1放哪2也放哪。
·Eg:<,<<:把后面的内容输入给前面命令处理,不是每个命令都能适用。
[root@oldboy data]#echo 1 2 3 4 >oldboy.txt
[root@oldboy data]#cat oldboy.txt
1 2 3 4
[root@oldboy data]#xargs -n 2 <oldboy.txt (此命令是分组的意思)
1 2
3 4
·2>,2>>:把错误报错收集在后面的文件里
[root@oldboy data]#echo oldgirl 1>a.txt 2>b.txt
[root@oldboy data]#cat a.txt
old girl
[root@oldboy data]#cat b.txt (此时b.txt无内容,因为前面命令是正确的,没有报错)
[root@oldboy data]#cho oldgirl (打一个错误命令)
--bash:cho:command not found (系统报错)
[root@oldboy data]#cho oldgirl 1>a.txt 2>b.txt
[root@oldboy data]#cat b.txt (报错内容被输入到b.txt里)
-bash:cho:command not found
·还有一种更简单写的方法:echo或者cho oldgirl 1>a.txt 2>&1(表示若有错误信息,会像1一样输入进文件a.txt里。)(1>,1是可写可不写,但2要写的。)(这种是常用/推荐的方法。)
·第三种写法:echo或者cho oldgirl &>或者&>>a.txt (&>,&>>表示正确和错误的都放在后面的文件里,注意>和>>一个不追加一个追加。)