Skip to content

基础命令

Shell简介

Shell是Linux提供的命令行解释器,它接收用户的命令,并解释这些命令以执行相应的操作。

对于普通用户,Shell的命令提示符是$,对于超级用户(root),Shell的命令提示符是#

Shell命令提示符语法如下:

命令 -选项 参数
  • 命令:要执行的命令或程序的名称
  • 选项:可选项,用来改变命令的行为或提供更多的功能
  • 参数:命令的输入数据或操作对象

命令、选项和参数之间使用空格隔开。

信息

help

help [命令]    # 显示内部命令的帮助信息
[命令] --help  #现实外部命令

man

man [要查询的命令]   # 查看命令的使用手册

PageDown查看手册下一页,按PageUp查看手册上一页。

info

info 提供了比man命令更详细的信息,可以查看程序、命令、库和系统文档等。

info [选项]

type

type [命令]  #判断命令是内部还是外部命令

当命令为内部命令时,返回”[命令]是shell内嵌“,否则返回该命令可执行文件的路径。

which

which [选项] 命令名

在环境变量 $PATH 指定的目录列表中搜索某个系统命令的位置,并返回第一个找到的有效路径。

对于内部命令,会提示无法找到可执行文件

文件管理

pwd

显示当前所在目录的全路径,相当于echo $PWD

不需要任何参数。

ls

ls [选项] [文件或目录]   #显示指定路径下的所有文件和目录
  • -a:显示所有文件夹和目录,包括隐藏文件或隐藏文件夹。
  • -l:显示详细信息。
  • -d:仅显示目录名,不显示目录下的内容或列表。
  • -h:以易于阅读的格式输出文件和文件夹大小。

  • -R:连带子目录的内容一起列出。

  • -t:按时间排序,新的在前面。

  • -r:逆序列出。
  • -S:以大小排序,大的在前面。

mkdir

mkdir [选项] 目录名  #创建一个或多个空目录
  • -p:递归地创建目录。
  • -v:输出创建目录的详细信息。

rmdir

rmdir [选项] 目录名 #删除一个或多个子空目录 

使用该命令进行删除目录时,目录必须是空的。

  • -p:删除指定目录后,若父级目录是空的,继续删除。
  • -v:输出删除目录的详细信息。

cd

cd 目录名  #切换到指定目录
  • ..:返回上级目录。
  • ~:返回用户的主目录。
  • -:返回用户之前的工作目录。

du

du [选项] [目录或文件] # 计算文件或目录占用的磁盘空间

递归地汇总当前目录和子目录的大小。

如果不指定目录,则默认计算当前目录。

  • -h:以易读的格式显示,必须包含该选项
  • -s:仅显示统计,不列出子目录的细节
  • -a:将文件的大小也列出。
  • -c:在最后一行输出累计总大小
  • -d N:控制递归深度

文件处理

touch

touch [选项] 文件名 #更改文件日期等属性

使用touch命令时,若源文件不存在,则会自行创建一个新的文件。

  • -a:更改访问日期时间
  • -d:表示“字符串”,在该命令中使用指定字符串表示日期时间,不使用当前系统时间。
  • -m:更改修改日期时间
  • -r:把指定文件或目录的日期时间设为参考文档或目录的日期时间。
  • -t:使用指定的时间而不是当前时间。

cat

cat [选项] 文件名 # 显示文件内容

cat命令常用来显示文件内容,或将几个文件的内容拼接起来显示,或从标准输入中读取内容并显示,通常和重定向命令配合使用。

该命令只适用于文件行数较少的情况。

  • -A:相当于-vET,全称--show-all,显示文件的所有内容,包括隐藏字符。
  • -b:为输出的非空行编号。
  • -e:相当于-vE,显示非打印字符和行尾符号,但不显示制表符Tab

  • -E:显示行尾符号($

  • -n:为输出的所有行编号
  • -s:不输出多个空格
  • -t:相当于-vT,显示非打印字符和制表符,但不显示行尾符号
  • -T:将制表符显示为^T

tac

tac [选项] 文件名 #反序显示文件内容

tac的输出顺序和cat相反,也只适用于行数较少的文件。

more

more [选项] 文件名 #逐页显示文件内容
  • -d:在按下按键后显示详细信息,而不是响铃

响铃(Bell),指在计算机交互中进行了非法操作时,计算机发出的提示信号

  • -f:统计逻辑行数而不是屏幕行数。

  • -l:不要在任何包括换页符^L的行之后暂停。

  • -p:不滚屏,清屏并显示新的文本

  • -u:抑制下划线

  • -s:将多个空行压缩为一行

  • -NUM:指定每屏幕显示的行数为NUM

  • +NUM:从文件第NUM行开始显示

  • +/string:从匹配字符串string的文件位置开始显示

less

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

tail [选项] 文件名 #显示文件结尾部分的内容

显示文件结尾部分的内容,和head一样默认为$10$行。

该命令可以指定多个文件,输出结果会在每个文件的内容前加上文件名。

如果该命令没有指定文件或文件名为-,则读取标准输入中的内容。

  • -f:实时监视文件的增长,当新内容追加到文件中时会自动更新并显示
  • -F:实时跟踪文件。如果文件不存在,则继续尝试
  • -n K:只显示文件最后K行内容

cp

cp [选项] 源文件或目录 目标文件或目录  # 复制文件或目录

将一个或多个源文件或者目录复制到指定文件或目录。

  • -a:将文件的属性一起复制
  • -f:如果无法打开现有目标文件,则将其删除,然后重试
  • -i:如果目标文件已存在,则询问是否覆盖
  • -p:保留指定的属性,如时间戳、模式、所有权等
  • -r:递归复制目录及其子目录的内容
  • -u:只有源文件修改时间比目标文件晚或目标文件不存在时才进行复制
  • -v:显示详细的复制步骤

mv

mv [选项] 源文件或目录 目标文件或目录  # 剪切文件或目录

mv命令的语法格式和cp相同。

rm

rm [选项] 文件或目录 #删除指定文件或目录

用于删除某个目录中的一个或多个文件或目录。

  • -f:强制删除
  • -i:在删除前给出提示信息
  • -r:递归删除目录及内容

tar

tar [选项] [压缩包文件名] [源文件或目录] # 将多个文件或目录打包成一个文件
  • -c:创建新的归档文件
  • -x:解压/提取归档文件
  • -t:列出压缩包里的内容
  • -v:显示详细处理过程
  • -f:指定压缩包的文件名(必须放最后)
  • -C:指定解压到的目录
  • -z:使用gzip进行压缩

文本处理

wc

wc [选项] 文件名 #统计命令

统计指定文件的字符数、字节数、行数等数据。

如果不指定文件名或文件名为-,则从标准输入中读取数据。

  • -c:显示字节数
  • -m:显示字符数
  • -l:显示行数
  • -L:显示最长行的长度
  • -w:显示单词的个数

sort

sort [选项] 文件名 #排序命令

将文本以行为单位进行排序。

  • -b:忽略每行前面出现的空格字符
  • -c:检查输入内容是否已排序,若已排序则不进行操作
  • -f:排序时,忽略字母大小写
  • -M:将前三个字符依照月份的缩写进行排序
  • -n:按数值的大小进行排序
  • -o 文件名:将排序后的结果存入指定文件中
  • -r:逆序排序
  • -t 分割字符:指定排序时用的分隔字符
  • -k:选择对哪个区间进行排序

uniq

uniq [选项] 文件名 #去除文件中的重复行

只能去除相邻的重复行,因此通常和sort一起使用。

  • -c:进行计数
  • -i:忽略字母的大小写
  • -u:只显示唯一的行

grep

grep [选项] 正则表达式 文件 # 查找符合正则表达式的行

该命令以行为查找的单位。

  • -c:只输出匹配的行数
  • -I:不区分字母大小写(只适用于单字符)
  • -h:查询多文件时不显示文件名
  • -l:查询多文件时只输出包含匹配文件的文件名
  • -n:显示匹配行及行号
  • -s:不显示不存在匹配文本时的错误信息
  • -v:显示不包含匹配文本的所有hang

find

find [路径] [表达式] [动作]  #查找

在指定目录下按表达式对文件进行过滤查找,并执行指定操作。

表达式
  • -name String:按文件名搜索,区分大小写
  • -iname String:按文件名搜索,忽略大小写
  • -type f/d/l:按类型:f(文件), d(目录), l(链接)
动作
  • -print:默认动作,打印结果到屏幕。
  • -delete:直接删除找到的文件(极其危险,建议先不加此项测试)。
  • -exec:对每一个找到的文件执行指定的 shell 命令。
  • 语法: -exec 命令 {} \;
  • 含义: {} 代表找到的文件名,\; 是 exec 动作的结束标志。

系统

ln

ln [选项] 源文件 目标链接名 #创建链接

使用ln创建的链接类似于Windows中的快捷方式,但更强大。

分为软链接(符号链接)和硬链接。 软链接本质是一个独立的文件,内容是目标文件的路径。软链接支持跨系统和指向不存在的路径。 硬链接以文件副本的的形式存在,本质是对文件的inode节点增加计数,因此即便删除源文件也能打开,但不占用实际空间,也不支持跨系统(不同系统的inode节点独立计数)。普通用户不能对目录创建硬链接。

-s:创建软链接(最常用的选项)。

-f:强制执行。如果目标链接名已存在,则先删除它。

-i:交互模式。如果目标存在,提示是否覆盖。

-v:显示详细的处理过程。

alias

alias [别名]='[实际命令]'

如果只执行alias,会输出所有已定义的别名列表

history

history # 列出带编号的历史记录

以下不是选项,在执行history后执行。

  • !!:执行上一条命令。常用于忘记加 sudo 时:sudo !!
  • !n:执行第 n 条命令。例如 !501 会执行编号为 501 的命令。
  • !string:执行最近一条以 string 开头的命令。如 !tar 重新运行上次的压缩命令。
  • Ctrl + R:反向搜索。输入关键词即可实时匹配历史记录,按回车执行。
  • !?string?:执行最近一条包含 string 字符串的命令。