基础命令
Shell简介
Shell是Linux提供的命令行解释器,它接收用户的命令,并解释这些命令以执行相应的操作。
对于普通用户,Shell的命令提示符是$,对于超级用户(root),Shell的命令提示符是#。
Shell命令提示符语法如下:
- 命令:要执行的命令或程序的名称
- 选项:可选项,用来改变命令的行为或提供更多的功能
- 参数:命令的输入数据或操作对象
命令、选项和参数之间使用空格隔开。
信息
help
man
按PageDown查看手册下一页,按PageUp查看手册上一页。
info
info 提供了比man命令更详细的信息,可以查看程序、命令、库和系统文档等。
type
当命令为内部命令时,返回”[命令]是shell内嵌“,否则返回该命令可执行文件的路径。
which
在环境变量 $PATH 指定的目录列表中搜索某个系统命令的位置,并返回第一个找到的有效路径。
对于内部命令,会提示无法找到可执行文件
文件管理
pwd
显示当前所在目录的全路径,相当于echo $PWD。
不需要任何参数。
ls
-a:显示所有文件夹和目录,包括隐藏文件或隐藏文件夹。-l:显示详细信息。-d:仅显示目录名,不显示目录下的内容或列表。-
-h:以易于阅读的格式输出文件和文件夹大小。 -
-R:连带子目录的内容一起列出。 -
-t:按时间排序,新的在前面。 -r:逆序列出。-S:以大小排序,大的在前面。
mkdir
-p:递归地创建目录。-v:输出创建目录的详细信息。
rmdir
使用该命令进行删除目录时,目录必须是空的。
-p:删除指定目录后,若父级目录是空的,继续删除。-v:输出删除目录的详细信息。
cd
..:返回上级目录。~:返回用户的主目录。-:返回用户之前的工作目录。
du
递归地汇总当前目录和子目录的大小。
如果不指定目录,则默认计算当前目录。
-h:以易读的格式显示,必须包含该选项-s:仅显示统计,不列出子目录的细节-a:将文件的大小也列出。-c:在最后一行输出累计总大小-d N:控制递归深度
文件处理
touch
使用touch命令时,若源文件不存在,则会自行创建一个新的文件。
-a:更改访问日期时间-d:表示“字符串”,在该命令中使用指定字符串表示日期时间,不使用当前系统时间。-m:更改修改日期时间-r:把指定文件或目录的日期时间设为参考文档或目录的日期时间。-t:使用指定的时间而不是当前时间。
cat
cat命令常用来显示文件内容,或将几个文件的内容拼接起来显示,或从标准输入中读取内容并显示,通常和重定向命令配合使用。
该命令只适用于文件行数较少的情况。
-A:相当于-vET,全称--show-all,显示文件的所有内容,包括隐藏字符。-b:为输出的非空行编号。-
-e:相当于-vE,显示非打印字符和行尾符号,但不显示制表符Tab。 -
-E:显示行尾符号($) -n:为输出的所有行编号-s:不输出多个空格-t:相当于-vT,显示非打印字符和制表符,但不显示行尾符号-T:将制表符显示为^T
tac
tac的输出顺序和cat相反,也只适用于行数较少的文件。
more
-d:在按下按键后显示详细信息,而不是响铃
响铃(Bell),指在计算机交互中进行了非法操作时,计算机发出的提示信号
-
-f:统计逻辑行数而不是屏幕行数。 -
-l:不要在任何包括换页符^L的行之后暂停。 -
-p:不滚屏,清屏并显示新的文本 -
-u:抑制下划线 -
-s:将多个空行压缩为一行 -
-NUM:指定每屏幕显示的行数为NUM -
+NUM:从文件第NUM行开始显示 -
+/string:从匹配字符串string的文件位置开始显示
less
与more类似,但功能更强大。
-b:设置缓冲区大小-e:文件显示完后,自动退出-f:强制显示文件-g:只标记最后搜索的关键词-I:忽略搜索关键词的大小写-m:显示完成的百分比-N:显示每行的行号-o 文件名:将less的输出保存在指定文件中-Q:不使用警告音-s:将多个空行压缩为一行-S:某行过长时将超出部分舍弃-x 数量:将制表符显示为指定数量的空格
head
默认情况下,该命令显示文件前十行的内容。
-c n:显示文件的前n个字节的内容-c -n:显示文件除了最后n个字节的内容-n:显示文件前n行的内容-q:不显示包含给定文件名的文件开头部分的内容-v:总是显示包含给定文件名的文件开头部分的内容
tail
显示文件结尾部分的内容,和head一样默认为$10$行。
该命令可以指定多个文件,输出结果会在每个文件的内容前加上文件名。
如果该命令没有指定文件或文件名为-,则读取标准输入中的内容。
-f:实时监视文件的增长,当新内容追加到文件中时会自动更新并显示-F:实时跟踪文件。如果文件不存在,则继续尝试-n K:只显示文件最后K行内容
cp
将一个或多个源文件或者目录复制到指定文件或目录。
-a:将文件的属性一起复制-f:如果无法打开现有目标文件,则将其删除,然后重试-i:如果目标文件已存在,则询问是否覆盖-p:保留指定的属性,如时间戳、模式、所有权等-r:递归复制目录及其子目录的内容-u:只有源文件修改时间比目标文件晚或目标文件不存在时才进行复制-v:显示详细的复制步骤
mv
mv命令的语法格式和cp相同。
rm
用于删除某个目录中的一个或多个文件或目录。
-f:强制删除-i:在删除前给出提示信息-r:递归删除目录及内容
tar
-c:创建新的归档文件-x:解压/提取归档文件-t:列出压缩包里的内容-v:显示详细处理过程-f:指定压缩包的文件名(必须放最后)-C:指定解压到的目录-z:使用gzip进行压缩
文本处理
wc
统计指定文件的字符数、字节数、行数等数据。
如果不指定文件名或文件名为-,则从标准输入中读取数据。
-c:显示字节数-m:显示字符数-l:显示行数-L:显示最长行的长度-w:显示单词的个数
sort
将文本以行为单位进行排序。
-b:忽略每行前面出现的空格字符-c:检查输入内容是否已排序,若已排序则不进行操作-f:排序时,忽略字母大小写-M:将前三个字符依照月份的缩写进行排序-n:按数值的大小进行排序-o 文件名:将排序后的结果存入指定文件中-r:逆序排序-t 分割字符:指定排序时用的分隔字符-k:选择对哪个区间进行排序
uniq
只能去除相邻的重复行,因此通常和sort一起使用。
-c:进行计数-i:忽略字母的大小写-u:只显示唯一的行
grep
该命令以行为查找的单位。
-c:只输出匹配的行数-I:不区分字母大小写(只适用于单字符)-h:查询多文件时不显示文件名-l:查询多文件时只输出包含匹配文件的文件名-n:显示匹配行及行号-s:不显示不存在匹配文本时的错误信息-v:显示不包含匹配文本的所有hang
find
在指定目录下按表达式对文件进行过滤查找,并执行指定操作。
表达式
-name String:按文件名搜索,区分大小写-iname String:按文件名搜索,忽略大小写-type f/d/l:按类型:f(文件),d(目录),l(链接)
动作
-print:默认动作,打印结果到屏幕。-delete:直接删除找到的文件(极其危险,建议先不加此项测试)。-exec:对每一个找到的文件执行指定的 shell 命令。- 语法:
-exec 命令 {} \; - 含义:
{}代表找到的文件名,\;是 exec 动作的结束标志。
系统
ln
使用ln创建的链接类似于Windows中的快捷方式,但更强大。
分为软链接(符号链接)和硬链接。
软链接本质是一个独立的文件,内容是目标文件的路径。软链接支持跨系统和指向不存在的路径。
硬链接以文件副本的的形式存在,本质是对文件的inode节点增加计数,因此即便删除源文件也能打开,但不占用实际空间,也不支持跨系统(不同系统的inode节点独立计数)。普通用户不能对目录创建硬链接。
-s:创建软链接(最常用的选项)。
-f:强制执行。如果目标链接名已存在,则先删除它。
-i:交互模式。如果目标存在,提示是否覆盖。
-v:显示详细的处理过程。
alias
如果只执行alias,会输出所有已定义的别名列表
history
以下不是选项,在执行history后执行。
!!:执行上一条命令。常用于忘记加sudo时:sudo !!!n:执行第 n 条命令。例如!501会执行编号为 501 的命令。!string:执行最近一条以 string 开头的命令。如!tar重新运行上次的压缩命令。Ctrl + R:反向搜索。输入关键词即可实时匹配历史记录,按回车执行。!?string?:执行最近一条包含 string 字符串的命令。