1、创建目录:mkdir
创建一个叫a的空目录:mkdir a
创建多个目录: make dir a b c d make dir{1..5}
创建aa下的bb下的cc目录: mkdir -p aa/bb/cc/dd (当父目录不存在的时候,同时创建父目录)
创建带权限的目录:mkdir -m 权限 dirname
创建带权限的目录同时,显示创建过程:mkdir -v 权限 dirname
2、创建文件:touch、echo、vi
(1)touch:
创建1个/多个文件: touch file1.txt ; touch 文件名1 文件名2 文件名3
touch修改文件的access time:touch -a filename
touch修改文件的modify time:touch -m filename
将a文件的时间属性修改为b文件的时间: touch a.txt -r b.txt
修改文件时间为任意时间:
touch -d 'tomorrow' filename touch -t time filename
(2)echo:
echo "文本内容" > file2.txt
(3)vi:
vi file3.txt
3、删除文件或目录:remove、rmdir
(1)rmdir:
删除空目录: rmdir 目录名称
删除有递归关系的空目录: rmdir -p dir1/dir2/dir3
删除过程可视化:rmdir -v dir1
(2)rm:
语法:rm -f 文件/目录名称 (f强制删除,没有提示信息)
语法:rm -r 文件/目录名称 (r表示删除目录)
rm -rf aa :删除aa目录以及aa目录下的所有目录
rm -rf aa/bb/cc: 只删除cc
rm -rf aa/*:删除该目录中的所有文件/目录,aa目录不删除
rm -rf xuexi*:删除以学习为名的所有目录文件
删除前询问用户的操作: rm -ir filename/dirname
4、文本中截取内容:cut
(TAB键)提取文件中第二列的内容:cut -f number file.txt
(TAB键)提取文件中除了第二列的其他所有内容:cut -f number --complement file.txt
通过特定分隔符,提取文件内容:cut -f 2,3 -d ‘分隔符’ file.txt
提取第一个,第4到第6个字节:cut -b 1,4-6 file.txt
提取第1-3个字符:cut -c 1-3 file.txt
提取前number个字符:cut -c -number file.txt
提取第number个以后的字符:cut -c number- file.txt
5、切换目录:cd
(1)cd ~:切换到当前用户的家目录(windows下的HOME文档)
(2)cd /:切换到根目录
例如:cd /home/test:第一个/表示的是根,后面的/都表示的是下一级
(3)cd .. : 切换到上一级
(4)cd . :切换到当前目录
注意:cd 后面只能跟目录,不能跟文件名
(5)凡是和路径相关的命令,都可使用绝对/相对路径,如mkdir、vim、rm、rmdir、touch
6、打印当前所在位置:pwd
print working directory
语法:pwd (显示的是绝对路径)
7、显示目录的内容: ls
(1)语法:ls -al、ls -ll 目录名称
a显示目录中所有文件,包含隐藏文件;l显示文件/目录的完整信息
参数:-h:以便于人类阅读的方式显示文件的大小
-tl: 按照时间降序排列
(2)语法:touch .文件名 (表示新建一个隐藏文件)
dr-xr-xr-x 10 root root 6 9月18日10:37 lol
(1)第一部分:
第一列:表示的文件属性(d表示目录,-表示普通文件,l表示软链接文件)
二三四列:表示文件所有者对应的权限信息
r:表示可读 w表示可写 x表示可执行,-表示没有权限
五六七列:所在群组中其他用户对应的权限信息
八九十列:任意其他用户对应的权限信息,
(2)第二部分:表示硬链接数,(创建一个硬链接+1,删除一个硬链接-1)
(3)第三部分:文件所有者
(4)第四部分:所在的群组
(5)第五部分:文件的大小,单位是字节(Byte)
8bit=1B(字节);1024B=1KB;1024KB=1MB;1024MB=1G;1024G=1T
(6)第六部分:文件最近修改日期,如果没有修改日期就是创建日期
(7)第七部分:文件/目录名称
(8)文件彩色含义:
蓝色—目录/文件夹;绿色—可执行文件;红色---压缩文件;
浅蓝色---链接文件/快捷方式;灰白色---其他文件
8、复制并粘贴:cp
(1)cp -r 源目录 目标目录 (r复制目录,复制所有文件)
(2)cp a b :复制文件到同一个目录(b为新复制的文件,a源文件还在)不能复制目录
(3)复制文件到不同目录并且改名:cp a /home/test/b
(4)复制目录到不同目录并且改名:cp -r /root/a /home/b/c
复制时对用户进行提示: cp -i f1.txt f2.txt
复制时对已存在的文件进行备份: cp -b f1.txt f2.txt
复制目录,新目录的属性同源目录的属性:cp -a dir1 dir2
9、移动/重命名文件:mv
(1)移动文件到同一个目录(相当于是重命名,源文件不存在):mv a b
(2)移动文件到不同目录:mv a /home/b
(3)移动文件到不同目录并且改名: mv a /home/b/cc
(4)移动目录(不需要加参数):mv d1 /home/b/
移动文件时对用户进行提示: mv -i filename1 filename2
移动文件时对原文件进行备份: mv -b filename1 dir1
10、查询帮助文档:man、info、whatis
(1)help:
ls --help : 查找ls命令的帮助文档
(2)man:
j 、回车:往下翻一行 k:往上翻一行
f、空格:往下翻一页 b:往上翻一页
/keyword:查找关键字(n :找下一个,shift n :找上一个)
查看 cp命令的帮助手册:
man -f 命令 :查看第几章有提及 man 章节 命令:查看某一章节下命令的帮助信息
man -k disk:查看与disk有关的所有帮助手册
(3)info:
n: 翻下一页 (回车:查看本页后面的信息) p:翻上一页 (退格:查看本页前面的信息)
b :到帮助信息最开始 e :到帮助信息文末
光标至超链接,回车:进入超链接 l: 退出超链接
(4)whatis:
相当于man -f
11、查看文件内容:cat、more、less、head、tail、tac
(1)cat : 缺点:文件内容过长,看不到文件的开头
语法:cat -n 文件名 (显示行号,全部行都显示,包括空行)
语法:cat -s 文件名 (去除重复的空行)
语法:cat -b 文件名 (显示行号,空行没有行号,按顺序往下排列)
语法:cat -E 文件名 (每行结束处显示$符号)
重定向文件内容:
cat file1.txt > file2.txt(file2.txt若存在,覆盖文件内容,不存在则新建)
cat file1.txt >> file2.txt(file2.txt若存在,追加文件内容,不存在则新建)
将file1.txt 和file2.txt合并为同一个文件:cat file1.txt file2.txt > file3.txt
一次性查看多个文件的内容:cat file1.txt file2.txt......
使用cat命令创建文本:cat > file.txt (回车:继续输入下一行;ctrl+d:保存文本)
(2)more : 缺点:只能往后翻页,不能往前翻页,不能显示行号
语法:more 文件名 (回车:往下翻一行;空格:往下翻一页; 不能回滚;q退出查看 )
语法:more -c -number 文件名 一页只显示number行内容
分页显示,遇到2行以上的空行,只显示一行:more -s -number 文件名 一页只显示number行
语法:more +number 文件名 从第number行开始分页显示
(3)less: 通常查看内容比较长的文件,可前后翻
语法:less 文件名
(回车、j:往下翻一行; k:往上翻一行)
(空格、f:往下翻一页;b:往上翻一页)
文件内查找关键字: /keyword (n:找下一个;shift+n:找上一个)
查看多个文件: less file1.txt file2.txt (:n浏览下一个文件; :p浏览上一个文件;q退出)
查看历史输入的命令,分页显示:
(4)head :显示文件开头内容,默认只显示10行(包含空行)
语法:head 文件名 查看文件头10行
语法:head -n number 文件名 查看文件前number行
语法:head -n -number 文件名 查看文件内容,最后-number行不显示
语法:head -c number 文件名 查看文件前number个字符
语法:head -c -number 文件名 查看文件内容,最后-number个字符不显示
(5)tail:查看文件的尾几行,默认尾10行
语法:tail -n number 文件名 表示查看尾number行(包含空行)
语法:tail +number 文件名 表示从第number行一直查看到文末
语法:tail -c number 文件名 表示查看文末最后几个字符(包含隐藏的字符,如每行的换行符)
语法:tail -f 文件名 动态展示文件尾部内容,即查看日志文件(日志放在/var/log/messages内)
停止查看:ctrl +c
(6)tac file.txt:倒序输出文本内容(从最后一行显示到第一行)
12、查找:grep、find、egrep
(1)grep:相当于是 ctrl+f,在windows下文件内部查找
grep -n 关键字 文件名/路径,显示行号和内容,较全
统计有几行,只有数字: grep -c 关键字 文件名1 文件名2 文件名3 (ctrl+c退出)
grep -i 关键字 文件名/路径 不区分大小写(无行号)
grep -E 关键字 文件名/路径 使用正则表达式搜文本,打印结果(无行号)
grep -E ‘A|B’ 文件名/路径 在文件内/路径下搜索A或者B
在多个文件内搜索某个关键字:grep(-h:不显示文件名称) keyword filename1 filename2
grep -rl keyword 文件 (r:递归搜索 l:只列出符合匹配的文件名,不列出具体的匹配行)
过滤文件中某个关键词,打印其他的信息:grep -v keyword 文件
精确匹配某个关键字 grep -x keyword file1 file2 file3
判断某个文件中,是否包含某个关键字,通过返回状态值输出结果(0:包含; 1:不包含)便于在shell脚本中调用
grep -q keyword file1 file2 file3
(2)find:在计算机内部查找文件
按文件名查找:find 路径 -name 文件名
按文件类型查找(f普通文件,d目录,l软链接):find 路径 -type f/d/l
按文件大小查找:find 路径 -size 文件名
搜索指定用户所属的文件:find 路径 -user 用户名
按权限查找文件: find 路径 -perm 777 动作
查看当前目录下所有的子目录、文件:find .
搜索文件名,不区分大小写: find 路径 -iname ".txt"
搜索不以.txt结尾的文件/目录: find 路径 ! -name ".txt"
搜索6天之内被修改过的文件,并删除(没有真正删除)
(3)egrep:
查找包含keyword的内容:egrep 'keyword' file1 file2
查找只有keyword的内容:egrep '(keyword)' file1 file2
查找以某个字符开头的关键字:egrep '^char' file1 file2
查找以某个关键字结尾:egrep 'keyword$' file1 file2
查找包含ha和he的关键字 :egrep 'h[ae]' file1 file2
13、查看文件属性:stat
access time:文件访问时间 读取文件(more/less/cat/tail)或者修改文件(vi)时,该时间会变化
modify time:文件修改时间 修改文件(vi)时,该时间会变化
change time:状态改变时间 修改文件(vi)或者文件属性变化(chmod/chown)时,该时间会变化
ps:使用touch命令,这3个时间都会变化
查看文件所在的文件系统信息:stat -f filename
以简洁方式输出信息:stat -t filename (只输出值,可用cut命令提取需要的信息)
14、给文件改名/格式:rename
15、提取路径下的文件名:basename
还可以根据需求删除指定的后缀
提取文件名:basename 文件完整路径
提取多个文件名:basename -a 路径1 路径2 路径3
去掉文件的后缀: basename filename.txt .txt basename -s .txt filaname.txt
16、提取文件/目录的目录部分:dirname
17、修改/查看文件属性:chattr、lsattr
给文件加减某个权限:chattr +i/-i filename lsattr filename
只允许对文件追加内容,不允许做其他操作:chattr +a/-a filename
对目录下的所有文件进行权限控制: chattr -R +i/-i filename
18、识别文件类型:file
查看文件的类型:file filename/dirname:
查看文件命名的类型:file -i filename/dirname:
19、生成/校验文件的MD5值:
与文件名无关,只与内容有关
生成文件的md5值: md5sum filename
计算文件的md5值:md5sum -b filename md5sum -t filename
将生成的md5值重定向到指定文件(一般是.md5后缀):md5sum -b filename > file.md5
对MD5值进行校验: md5sum -c file.md5
不显示任何输出,用返回码表示成功与否:md5sum -c --status file.md5
20、搜索系统命令位置:which
which搜索的是系统命令位置(不是普通文件),搜索的路径是在path变量中
21、查找符合条件的文档:locate
数据库不是实时更新的,需要先更新数据库 : sudo updatedb
查找包含filename的所有文件:locate filename
查找与whereis相关的所有文件: locate whereis
22、统计文件行号:nl
语法: nl file.txt (列出文件内容,且显示行号,空行的不显示)
语法: nl -b a file.txt (列出文件内容,且显示行号,空行也显示)
行号在最左边显示,且加0对齐格式(默认6位):nl -b a -n rz file.txt
行号在最左边显示,且加0对齐格式(设置宽度为3):nl -b a -n rz -w number file.txt
23、统计文件字数/行数:wc
语法:wc file.txt
只统计文件行数:wc -l file.txt
只统计文件字数:wc -w file.txt
只统计文件字符数:wc -m file.txt
只统计文件字节数:wc -c file.txt
打印文件最长一行的长度:wc -L file.txt
使用管道符配合其他命令一起使用:cat file.txt | wc -l
24、切割文件:split
根据行数切割: split -number file.txt 每number行切割成一个小文件
根据大小切割: split -b size file.txt 按照size大小,切割成多个小文件
根据size大小切割: split -b size -d -a number file.txt 以数字作为后缀,指定宽度为number
为分割后的文件指定前缀: split -b size -d -a number file.txt prefix_
25、合并2个/多个文件:paste
(列拼接)拼接2个文件:paste file1.txt file2.txt
(列拼接)以指定分隔符,拼接多个文件:paste -d '分隔符' file1.txt file2.txt
(行拼接)以指定分隔符,拼接多个文件:paste -d '分隔符' -s file1.txt file2.txt
从标准输入中读取数据,每行显示4个文件名:ls |paste -d ' ' - - - -
26、对文本内容进行排序:sort
对文件内容进行排序:sort file.txt
对数字进行排序:
sort file.txt 按照数字开始的第一个进行排序
sort -n file.txt 按照数字由小到大排序
sort -n -r file.txt 按照数字由大到小排序
按照某一列排序:sort -t '分隔符' -k number -n file.txt (number:以第几列排序;-n 按数字排序)
27、对文件内容去重:uniq
必须连续重复的才去重:uniq file.txt
打印每行重复的次数:uniq -c file.txt
打印有重复出现的记录: uniq -d file.txt
打印无重复出现的记录: uniq -u file.txt
28、比较差异:diff
比较2个文件的差异:diff file1.txt file2.txt
(a---add增加 c---change修改 d----delete删除)
并排输出2个文件的差异:diff -y -W number file1.txt file2.txt (number:宽度)
上下文格式输出2个文件的差异:diff -c file1.txt file2.txt
生成补丁文件:diff a.txt b.txt > file.patch
打补丁: patch file.txt file.patch
29、批量编辑文本文件:sed
只输出某一行/某几行:sed -n 'number-p' file.txt (-p:打印,必须跟-n一起使用)
输出包含关键字的行:sed -n '/keyword/p' file.txt (-p:打印,必须跟-n一起使用)
删除6-8行的内容:sed 'number,d' file.txt (并没有真正的删除)
删除包含某个关键字的那一行内容:sed '/keyword/d' file.txt (并没有真正的删除)
在某一行的下一行追加内容: sed 'numbera content' file.txt (并没有真正的追加)
在某一行的上一行插入内容: sed 'numberi content' file.txt (并没有真正的插入)
替换整行数据:sed 'numberc content' file.txt (并没有真正的替换)
全局 字符串替换:sed 's/old_str/new_str/g' file.txt (s----替换字符串;g-----全局替换)
局部 字符串替换:sed 'number_s/old_str/new_str/g' file.txt (s----替换字符串;g-----全局替换)
只替换第四行:
多个条件替换:sed -e 's/old_str/new_str/g;s/old_str/new_str/g;s/old_str/new_str/g' file.txt
将操作写入到文件中:sed -i '/keyword/d' file.txt (i----将操作写入到文件)