目录切换命令
pwd
用于显示用户当前所处的工作目录。
选项
-L
:显示逻辑路径,当在链接目录内,显示链接目录路径,默认显示逻辑路径-P
:显示物理路径,当在链接目录内,显示链接指向的物理目录
我们以/var下的mail目录举例,/var/mail为/var/spool/mail的链接目录,即:/var/mail -> /var/spool/mail
。
cd /var/mail
pwd #输出:/var/mail
pwd -L #输出:/var/mail
pwd -P #输出:/var/spool/mail
cd
用于切换目录。Linux中同样有相对路径和绝对路径,同时,还有各种符号表示的常用路径。
选项
-P
:当切换到链接目录内时,直接切换到链接指向的物理目录-L
:当切换到链接目录内时,就切换到链接目录内
cd -P /var/mail
pwd #输出:/var/spool/mail
cd -L /var/mail
pwd #输出:/var/mail
特殊目录符号
~
:home目录-
:返回上次所在目录..
:上级目录.
:当前目录
文件目录查找命令
ls
用于显示目录中的文件信息。
选项
--sort=WORD
:可以根据size、time、version和extension进行排序,默认按照名称排序输出-S
:根据size排序-t
:根据修改时间排序-r
:逆序输出-l
:以长格式输出,可以直接使用ll
别名命令执行s,--size
:显示文件大小-a, --all
:输出所有文件,包括隐藏文件-A,--almost-all
:输出所有文件,包括隐藏文件,但是不包括.
和..
--author
:和-l
共用,输出文件作者--block-size=SIZE
:以指定的单位输出文件大小(只保留整数),单位为G、M、KB,需要和-l
共用-h
:以人性化的方式输出文件大小-1
:每行只显示一个文件-d
:显示目录属性信息-R
:递归输出子目录的文件-F
:在文件后输出文件类型,/
目录,*
可执行文件,=
socket文件,|
FIFO文件,@
符号链接文件
ls --sort=time #输出:dir_test1 print.sh test.20210715.txt shell_log.log first.sh dir_test
ls --sort=time -r #输出:dir_test first.sh shell_log.log test.20210715.txt print.sh dir_test1
ll
#输出:
#drwxr-xr-x 3 root root 4096 7月 16 10:39 dir_test
#drwxr-xr-x 2 root root 4096 8月 19 22:04 dir_test1
#-rw-r--r-- 1 root root 50 8月 9 18:05 first.sh
#-rw-r--r-- 1 root root 977 8月 8 22:46 ll.txt
ls -s #输出:4 dir_test 4 dir_test1 4 first.sh 4 ll.txt 4 ls.txt
ll --block-size=M
#输出
#drwxr-xr-x 3 root root 1M 7月 16 10:39 dir_test
#drwxr-xr-x 2 root root 1M 8月 19 22:04 dir_test1
#-rw-r--r-- 1 root root 1M 8月 9 18:05 first.sh
#-rw-r--r-- 1 root root 1M 8月 8 22:46 ll.txt
ls -1
#输出
#dir_test
#dir_test1
#first.sh
#ll.txt
ll -d /etc #输出:drwxr-xr-x. 77 root root 4096 8月 22 11:15 /etc
ls -R
#输出
#.:
#dir_test dir_test1 first.sh ll.txt ls.txt oh_no.txt test.txt
#
#./dir_test:
#test_son
#
#./dir_test/test_son:
#
#./dir_test1:
ls -F /bin/ #输出:dd* gsoelim@ mapscrn* paste*
文本文件编辑命令
cat
用于查看纯文本内容,会输出全部的内容,所以适合查看内容较少的文本。
常用选项
-b
:输出行号,跳过空行。-n,--number
:输出行号,空行也输出行号。-E
:在行位输出$
符号-s,--squeeze-blank
:压缩连续多行的空行为一行空行-T
:将tab以^I
输出
more
用于查看纯文本内容,会分页显示文本的内容,所以适合查看内容较多的文本。
常用选项
-number
:每页输出number行文本内容-d
:在最下面输出提示信息"[Press space to continue, ‘q’ to quit.]"+number
:从第number行开始输出文本内容-p
:全屏输出内容-s
:将多行空行压缩成一行空行显示+/pattern
:搜寻字符串pattern,然后从该字符串前两行之后开始显示
head
用于查看纯文本文档的前N行。
选项
-n,--lines=NUMBER
:输出文档前n行内容,默认输出10行-c,--bytes=NUMBER
:输出文档前n字节内容-v
:在开始处输出文件名,如:“==> cat.txt <==”
tail
用于查看纯文本文档的最后N行内容,结合-f
选项,常用于查看系统日志输出。
选项
-c,--bytes=NUMBER
:输出文档最后n字节内容-n,--lines=NUMBER
:输出文档最后n行内容,默认输出10行-f,--follow[={descriptor|name}]
:持续输出文档写入的内容,当follow值为descriptor时,根据文件描述符跟踪文件,如果文件改名或删除,停止跟踪。当follow值为name时,根据文件名跟踪文件,当文件删除后再创建同名文件,仍可以跟踪。默认follow值为descriptor。--retry
:当一个文件无法访问时,保持重试读取。-F
:等同于--follow=descriptor --retry
-v
:在开始处输出文件名
tr
格式为tr [OPTION]... SET1 [SET2]
,替换文本文件中的字符。
选项
-d
:删除SET1中包含的字符-c
:把不在SET1中的字符替换为SET2-s,--squeeze-repeats
:删除SET1中出现的重复字符,只保留1个-t
:将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t
wc
用于统计文本的行数、字数、字节数,默认输出为:行数、字数和字节数。
选项
-c, --bytes
:输出字节数-m, --chars
:输出字符数-l, --lines
:输出行数-L, --max-line-length
:输出最长行的长度-w, --words
:输出词数
cut
用于按列提取文本字符。
选项
-b, --bytes=LIST
:输出前LIST字节内容,可以为第n个字节或n~m之间的字节内容-c, --characters=LIST
:输出前LIST字符内容,可以为第n个字符或n~m之间的字符内容- ```-d, --delimiter=DELIM``:以DELIM作为分隔符来分隔列
-f, --fields=LIST
:输出指定列数的内容-s, --only-delimited
:只输出包含分隔符的行
diff
比较多个文本文件的差异。diff的选项非常多,此处仅列出常用选项,其余选项可参考帮助手册。
选项
-q, --brief
:只输出文件是否不同,不输出差异的内容-s, --report-identical-files
:当文件不同时,输出差异内容,相同时,输出提示语-c, -C NUM, --context[=NUM]
:按照不同文件,输出差异内容,同时输出差异内容的NUM行上下文,默认上下各输出3行-u, -U NUM, --unified[=NUM]
:将差异内容作为统一文本内容,输出差异内容的NUM行上下文,默认上下各输出3行-y, --side-by-side
:将内容分两列对比输出
文件目录管理命令
mkdir
创建空白目录。
选项
-p, --parent
:如果需要创建父目录,则创建父目录,没有该选项时,创建父目录会报错-v, --verbose
:输出每个目录创建的结果信息-m, --mode=MODE
:创建目录时设置权限
cp
用于复制文件和目录。
选项
-p
:保留原始文件的属性-d
:如果是链接文件,则保留该链接文件的属性-r
:递归复制目录-a
:相当于-pdr
mv
用于剪切文件或文件重命名。
格式
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
选项
-f, --force
:覆盖时不再确认-i, --interactive
:覆盖时需要确认确认-n, --no-clobbe
:不覆盖已存在的文件-u, --update
:只有目标文件不存在或者源文件比目标文件更新时才剪切-t, --target-directory=DIRECTORY
:把所有SOURCE复制到DIRECTORY中
rm
删除文件
选项
-f, --force
:强制删除不做提示-i
:删除时需要确认-r, -R, --recursive
:递归删除目录内的所有文件-d, --dir
:删除空目录
打包压缩命令
tar
用于文件打包压缩或解压操作。格式为:tar [OPTION...] [FILE]...
常用选项
-c
:创建压缩文件-x
:解开压缩文件-t
:查看压缩包内有哪些文件-f
:压缩或解压目标文件,必须放在选项的最后一位-z
:用Gzip压缩或解压,-j
:用bzip2压缩或解压-v
:显示压缩或解压的过程-p
:保留原始的权限与属性-P
:使用绝对路径来压缩-C
:指定解压到的目录,不指定默认解压到当前目录
示例
# 把test1和test2打包为test.tar
tar -cf test.tar test1 test2
# 查看test.tar内有哪些文件
tar -tf test.tar
# 打包并压缩dir_test1目录
tar -czf test2.tar.gz dir_test1
# 解压test2.tar.gz到test目录
tar -xzf test2.tar.gz -C test/
文本搜索
grep
用于文本搜索匹配
常用选项
-c
:仅显示找到的行数-i
:忽略大小写-n
:显示行号-v
:反向选择,列出没有关键字的行
示例
# 输出test.txt中包含test关键字的行,并显示行号
grep -n test test.txt
文件查找
用来查找指定目录中的文件,多个选项可以一起使用。
find
选项
-name
:匹配名称-user
:匹配所有者-type
:匹配文件类型,b
设备块、d
目录、c
字符设备、p
管道、l
链接文件、f
文本文件-size +-SIZE
:匹配文件大小,单位为:c
byte、k
KB、M
MB、G
GB-mtime +-n
:匹配修改内容的时间,n为天数,-n为n天以内,+n为n天以前-atime +-n
:匹配访问文件的时间-ctime +-n
:匹配修改文件权限的时间-exec command {} \;
:对查找的结果进行下一步处理,{}
为搜索出的文件集合,-exec
需要以空格\;
结尾。
示例
# 查找当前目录包含test关键字的文件
find ./ -name '*test*'
# 查找当前目录大于100M的文件
find ./ -size +100M
# 查询当前目录小于10byte的文本文件
find ./ -type f -size +10c
# 把查出的文件复制到目录a中
find ./ -type f -size +1000c -exec cp -a {} ./a/ \;
参考:
《Linux就该这么学》