(学习总结24)Linux 基本命令2
Linux 基本命令2
- 操作文件或目录命令
- 更改文件或目录访问权限命令 chmod
- 修改文件的所有者和所属组命令 chown
- 修改文件或目录的所属组命令 chgrp
- 更改文件或目录的属性命令 chattr
- 创建文件和目录时的默认权限掩码命令 umask
- 判断文件类型命令 file
- 显示文件或文件系统状态命令 stat
- 树状结构显示目录和文件命令 tree
- 文件添加行号命令 nl
- 统计文件行数、字数和字节数命令 wc
- 文件压缩和解压命令 gzip
- 解压由 gzip 指令压缩的文件命令gunzip
- 操作用户或账号命令
- 远程登录计算机账号命令 ssh
- 用户切换命令 su
- 提高用户执行权限命令 sudo
- 用户登录命令 login
- 当前登录到系统的用户信息命令 who
- 显示当前用户的用户名命令 whoami
- 显示最初登录的用户信息命令 who am i
- 创建新用户账户命令 adduser
- 更改用户密码命令 passwd
- 创建新用户账户的底层命令 useradd
- 修改用户账户信息命令 usermod
- 删除用户账户命令 userdel
- 其它命令
- 终止当前的 shell 会话或脚本命令 exit
- 查看和管理命令行历史记录命令 history
- 关闭或重启系统命令 shutdown
- 清空终端屏幕显示内容命令 clear
- 快捷键
- 上下键寻找历史命令
- Tab 快捷键补全
- Ctrl + c 快捷键终止前台进程
- Ctrl + d 快捷键
操作文件或目录命令
更改文件或目录访问权限命令 chmod
语法:chmod [选项] [权限模式] [文件或目录名]
功能:设置文件或目录的访问权限
常用选项:
- -R -> 递归修改目录及其子目录和文件的权限,只有文件的拥有者和 root 才可以改变文件的权限
权限模式:
数字模式:[用三位8进制数字表示,单个数对应一位角色的操作数值的和]
符号模式:[用户角色符号][权限操作符号][权限字符符号]
用户角色符号:
- u:拥有者
- g:拥有者同组用
- o:其他用户
- a:所有用户(当用户符号不写默认)
权限操作符号:
- + :添加权限
- - :移除权限
- = :覆盖原有权限
权限字符符号:
- r :读
- w :写
- x :执行
修改文件的所有者和所属组命令 chown
语法:chown [选项] [所有者]:[所属组] [文件或目录名]
功能:修改文件的所有者和所属组
常用选项:
- -R 递归的修改目录及其所有子目录与文件的所有者和所属组
其它操作:
- 所有者与所属组至少要写一个
修改文件或目录的所属组命令 chgrp
语法:chgrp [选项] [所属名] [文件或目录名]
功能:修改文件或目录的所属组
常用选项:
- -R 递归修改文件或目录的所属组
更改文件或目录的属性命令 chattr
语法:chattr [选项] [属性] [文件或目录名]
功能:改变文件或目录属性,可以防止文件被意外修改、删除等等
常用选项:
- -R:递归地更改目录及其内容的属性
- -V:显示详细的执行过程
- -v [版本]:设置文件的版本号(需要文件系统支持)
常用属性:
- +[属性]:添加属性
- -[属性]:移除属性
- =[属性]:设置属性(覆盖原属性)
- a:只追加属性,文件只能追加内容,不能删除或修改已有内容
- i:不可变属性,文件不能被删除、修改、重命名或链接
- A:不更新访问时间属性,文件被访问时,不会更新其访问时间
- c:压缩属性,文件在磁盘上会自动压缩(需要文件系统支持)
- d:不备份属性,文件不会被 dump 备份工具备份
- s:安全删除属性,文件被删除时,其数据会被清零(需要文件系统支持)
- u:可恢复属性,文件被删除时,其内容会被保存以便恢复
创建文件和目录时的默认权限掩码命令 umask
语法:umask [权限值]
功能:设置默认文件权限掩码,决定新创建的文件或目录的默认权限
其它操作:
- 不写权限值可以查看当前用户的 umask 值
判断文件类型命令 file
语法: file [选项] [文件或目录]
功能:不依赖文件扩展名,而是分析文件内容与结构判断文件类型
常用选项:
-
-b 只输出文件类型描述信息,不显示文件名
-
-c 详细显示指令执行过程,便于排错或分析程序执行的情形
-
-z 尝试去解读压缩文件的内容
-
-L 当文件是符号链接时,显示符号链接指向的文件类型
显示文件或文件系统状态命令 stat
语法:stat [选项] [文件或目录名]
功能:显示文件或文件系统的信息,如文件权限、所有者、创建时间等
常用选项:
- -t :以简洁单行格式显示文件的信息
- -R :递归处理指定目录及其子目录下的所有文件和目录
- -L :显示符号链接指向的目标文件的状态信息,而不是符号链接本身
- -f :显示文件系统状态(而非文件状态)
- -c [格式符] :自定义输出格式,指定需要显示的字段,常用格式符有
- %n :文件名
- %s 文件大小(字节)
- %i Inode 编号
- %F 文件类型(文本描述)
- %a 八进制权限
- %A 可读权限(如 -rw-r–r–)
- %U 所有者用户名
- %y 文件最后一次修改时间
- %w 创建时间(若支持)
- %x 最后一次访问时间
- %z 最后一次状态更改时间
- %u 文件所有者的用户 ID
树状结构显示目录和文件命令 tree
语法:tree [选项] [目录名]
功能:树形结构展示目录的内容,清晰地呈现出目录和文件的层次关系
常用选项:
- -L [深度] :限制显示的层级深度
- -d :只显示目录,不显示文件
- -f :显示每个文件的完整路径
- -i :不显示缩进的行(不显示连接符)
- -a :显示所有文件,包括隐藏文件(以 . 开头的文件)
- -p :显示文件权限(类似 ls -l)
- -P [模式] :显示匹配指定模式的文件
- -I [模式] :排除匹配模式的文件或目录(支持通配符)
- -o [文件名] :将输出保存到文件
- -s :显示文件大小(字节)
- -h :以易读的格式显示文件大小(如 KB、MB)
- --du 显示目录的总大小
- -C :在支持颜色的终端中显示颜色
文件添加行号命令 nl
语法:nl [选项] [文件名]
功能:在显示文件内容时,为每一行添加编号,方便查看
常用选项:
-
-b [样式] :指定行号样式,常见有
- a : 为所有行编号
- t : 仅为非空行编号(样式不选默认)
- n :不编号
-
-s [分隔符] : 设置行号与内容之间的分隔符(默认为 Tab)
-
-w [宽度] : 设置行号宽度(默认为 6)
-
-n [格式] : 设置行号格式,常见有
-
ln : 左对齐无前导 0
-
rn : 右对齐无前导 0
-
rz : 右对齐有前导 0
-
-
-v [数字] : 表示行号从 数字 开始添加。
-
-i [数字] : 表示下一个行号增量的 数字
统计文件行数、字数和字节数命令 wc
语法:wc [选项] [文件名]
功能:统计文件或输入内容的行数、字数和字节数
常用选项:
- -l:仅统计行数
- -w:仅统计字数
- -c:仅统计字节数
- -m:统计字符数(适用于多字节字符,如 UTF-8)
- -L:显示文件中最长行的长度(按字符计算)
- 不指定任何选项会同时显示文件的行数、单词数和字节数,结果格式
行数 单词数 字节数 文件名
其它操作:
- 不指定文件,wc 会从标准输入读取内容进行统计
文件压缩和解压命令 gzip
语法:gzip [选项] [文件名]
功能:文件压缩和解压
常用选项:
- 无选项压缩并删除被压缩文件
- -k 或 --keep:压缩时保留原始文件
- -c 或 --stdout:将压缩或解压的结果输出到标准输出,保留原始文件
- -d 或 --decompress:解压 .gz 文件,压缩文件会被删除
- -r 或 --recursive:递归压缩目录中的所有文件
- -v 或 --verbose:显示压缩或解压的详细信息
- -l 或 --list:列出 .gz 文件的压缩信息
- -1 到 -9:设置压缩级别,-1 最快但压缩率低,-9 最慢但压缩率高(默认是 -6)。
解压由 gzip 指令压缩的文件命令gunzip
语法:gunzip [选项] [压缩文件名]
功能:为 gzip 的一部分,专用于解压由 gzip 命令压缩生成的 .gz 文件
常用选项:
- 无选项解压会删除被压缩文件
- -c 或 --stdout:将解压的结果输出到标准输出,保留原始文件
- -k 或 --keep:解压时保留原始压缩文件
- -f 或 --force:强制解压,即使文件已存在
- -l 或 --list:列出 .gz 文件的压缩信息(如压缩比、未压缩大小等)
- -r 或 --recursive:递归解压目录中的所有 .gz 文件
- -t 或 --test:测试压缩文件的完整性
- -v 或 --verbose:显示解压的详细信息
其它操作:
zcat [压缩文件名]
命令等价于gunzip -c [压缩文件名]
命令
操作用户或账号命令
远程登录计算机账号命令 ssh
语法:ssh [选项] [用户名]@[主机地址]
功能:通过 ssh 加密的通信协议命令,用户可以安全的远程登录到其他计算机,执行命令,传输文件等
常用选项:
- -p [端口号] :指定远程主机的 SSH 服务端口号
- -i [文件路径] :指定私钥文件路径,避免每次登录都输入密码
- -X :启用 X11 转发(用于远程运行图形界面程序)
- -L [本地端口:目标主机:目标端口] :设置本地端口转发
- -R [远程端口:目标主机:目标端口] :设置远程端口转发
- -D [本地端口] :设置动态端口转发发(SOCKS 代理)
- -C 启用压缩(适用于低速网络)
- -q 静默模式,不显示警告和诊断信息
- -v 显示详细的调试信息(可重复使用,如 -vvv 显示更详细信息)
用户切换命令 su
语法:su [选项] [用户名]
功能:切换用户
常用选项:
- - 或 -l :切换用户时,完全模拟目标用户登录时的环境,将会加载目标用户的环境变量和配置文件
- -c [“命令”] : 切换用户后会执行双引号中的命令,再返回到当前用户
- -s [目标 bash] :切换到用户并将 目标 bash 作为 shell
- -m 或 -p : 保留当前环境变量,不加载目标用户环境变量
其它操作:
- 不写用户名时自动切换到 root 账号
提高用户执行权限命令 sudo
语法:sudo [选项] [命令]
功能:以超级用户或其他用户身份执行命令
常用选项:
-
-l 列出当前用户可以使用 sudo 执行的命令
-
-u 以指定用户身份执行命令
-
-i 切换到超级用户身份的 shell,且加载其环境变量
-
-s 切换到超级用户身份的 shell,但不加载环境变量
-
-k 清除 sudo 认证时间戳,强制下次使用重新输入密码
-
-v 刷新 sudo 认证时间戳,延长不输入密码时间
-
-b 在后台执行命令
-
-H 设置 HOME 环境变量为 超级用户的主目录
用户登录命令 login
语法:login [选项] [用户名]
功能:通过输入用户名和密码来登录到 Linux 系统
常用选项:
- -p:保留当前环境变量
- -h [主机名]:指定登录的主机名(用于远程登录)
- -f:跳过身份验证(仅适用于已经通过身份验证的用户)
当前登录到系统的用户信息命令 who
语法:who [选项]
功能:列出当前登录系统的用户、登录时间、登录终端等信息
常用选项:
- -a:显示所有信息
- -b:显示系统最近一次启动的时间
- -d:显示已终止的进程(死进程)
- -H:显示列标题
- -l:显示系统登录进程
- -m:仅显示与当前终端相关的用户信息
- -q:显示登录用户的数量与名称
- -r:显示当前运行级别
- -s:显示简短信息(默认行为)
- -T:显示用户的消息状态(+ 表示允许消息,- 表示禁止消息)
- -u:显示登录用户的详细信息(包括空闲时间和进程 ID)
显示当前用户的用户名命令 whoami
语法:whoami
功能:显示当前会话的用户名
显示最初登录的用户信息命令 who am i
语法:who am i
功能:显示当前会话初始登录用户信息的命令
与 whoami 不同,如:su 切换用户时,whoami 命令会显示当前切换的用户,who am i 会显示初始登录的用户
创建新用户账户命令 adduser
语法:adduser [选项] [用户名]
功能:用于创建新用户账户,会自动创建用户的家目录、设置用户组,并提示输入用户密码和其他信息
常用选项:
- --system:创建一个系统用户(无家目录)
- --home [目录]:指定用户的家目录
- --shell [shell]:指定用户的默认 Shell(如 /bin/bash)
- --ingroup [组名]:指定用户的主组
- --disabled-login:创建用户但不允许登录
- --gecos [描述]:设置用户的描述信息(如全名、房间号等)
- --no-create-home :表示在创建用户时不创建对应的主目录
更改用户密码命令 passwd
语法:passwd [选项] [用户名]
功能:允许更改用户的密码
常用选项:
- -l :锁定指定用户的账户,使其无法登录
- -u :解锁之前被锁定的用户账户,允许用户重新登录
- -d :删除指定用户的密码
- -S :显示指定用户的密码状态信息
- -e :强制用户在下次登录时更改密码
其它操作:
- 不写用户名则更改当前用户密码
创建新用户账户的底层命令 useradd
语法:useradd [选项] [用户名]
功能:用于创建新用户账户的底层命令,更适合在脚本或自动化任务中使用
常用选项:
- -m 或 --create-home:创建用户的家目录
- -M 不创建用户的家目录
- -d [目录] 或 --home [目录]:指定用户的家目录
- -s [shell] 或 --shell [shell]:指定用户的默认 shell(如 /bin/bash)
- -g [组名] 或 --gid [组名]:指定用户的主组
- -G [组列表] 或 --groups [组列表]:指定用户的附加组(多个组用逗号分隔)
- -u [UID] 或 --uid [UID]:指定用户的 UID
- -p [密码] 或 --password [密码]:设置用户的密码(通常使用 passwd 命令更安全)
- -e [日期] 或 --expiredate [日期]:设置用户的账户过期日期(格式:YYYY-MM-DD)
- -c [描述] 或 --comment [描述]:设置用户的描述信息(如全名)
- -r 或 --system:创建一个系统用户(无家目录)
- -f [天数] : 设置用户密码失效后的宽限天数
修改用户账户信息命令 usermod
语法:usermod [选项] [用户名]
功能:对已存在用户的属性进行调整,如更改用户名、用户组、主目录、登录 shell 等
常用选项:
- -l [名称] : 修改用户的登录名
- -m : 与 -d 一起使用,将原家目录内容移动到新目录
- -d [新家目录] : 修改用户的家目录(需配合 -m 移动原有文件)
- -s [shell路径] : 修改用户的默认 shell(如 /bin/bash)
- -g [主组]:修改用户的主组(需已存在的组)
- -G [附加组列表] :修改用户的附加组(多个组用逗号分隔,默认覆盖原有附加组,需配合 -a 追加)
- -a : 追加附加组(与 -G 一起使用,不覆盖原有组)
- -u [新UID] :修改用户的 UID(需确保新 UID 未被占用)
- -L:锁定用户账户(禁止登录)
- -U:解锁用户账户
- -e [过期日期]:设置用户账户的过期日期(格式:YYYY-MM-DD)
- -c [描述]:修改用户的描述信息(如全名)
- -f [天数] : 设置用户密码失效后的宽限天数
删除用户账户命令 userdel
语法:userdel [选项] [用户名]
功能:用于删除系统中用户账户
常用选项:
- -r :递归地删除用户的家目录(默认路径为 /home/用户名)和邮件文件(位于 /var/mail 或 /var/spool/mail)
- -f :强制删除用户,即使该用户已登录或正在运行进程
- 没有选项时不会删除该用户的主目录和邮件目录等相关文件和目录
其它命令
终止当前的 shell 会话或脚本命令 exit
语法:exit [状态码]
功能:终止当前的 shell 会话或脚本执行,并返回一个退出状态码
状态码是一个范围从 0 到 255 的整数,0 表示成功,非 0 表示错误
查看和管理命令行历史记录命令 history
语法:history [选项]
功能:显示当前用户在终端中执行过的命令列表,并支持快速调用历史命令、清除历史记录等操作
常用选项:
- -c 清除历史记录
- -d [偏移量] :删除指定偏移量的历史记录(如 history -d 10 表示删除第 10 条记录)
- -a 将当前会话的历史记录追加到历史文件中
- -r 从历史文件中读取历史记录到当前会话
- -w 将当前会话的历史记录写入历史文件
- -n 显示尚未从历史文件中读取的记录
关闭或重启系统命令 shutdown
语法:shutdown [选项] [时间] [消息]
功能:安全地终止正在运行的进程、卸载文件系统并关闭计算机,避免数据丢失和系统损坏
常用选项:
- -h 或 --halt:关闭系统并停止电源
- -r 或 --reboot:重启系统
- -c 或 --cancel:取消计划的关机或重启
- -k:仅发送关机通知,不实际关机
- -P 或 --poweroff:关闭系统并切断电源(默认行为)
- -H 或 --halt:关闭系统但不切断电源
- -f 或 --force:强制关机或重启(不推荐使用)
- –no-wall:不发送关机通知
时间:
- now 或不写 表示立即执行关闭操作
- [数字] 或 +[数字] :表示在 数字 分钟后关闭系统
- [时间格式xx:xx] :表示时钟到达 时间格式xx:xx 时关闭系统
消息:
- 使用字符串来添加自定义的警告信息,该信息会发送给所有登录的用户
清空终端屏幕显示内容命令 clear
语法:clear
功能:清空终端屏幕上的历史输出信息,让终端界面看起来更加整洁,方便后续操作
快捷键
上下键寻找历史命令
使用上下方向键来寻找历史命令可以避免重复输入相同或相似的命令,提高了操作效率。
一般操作:按一下向上键会查找当前命令的上一个命令,按一下向下键会查找当前命令的下一个命令。
Tab 快捷键补全
Tab 快捷键主要用于命令、文件名和目录名、环境变量、选项等自动补全功能,能极大地提高操作效率。
命令补全(包含别名):
- 单命令匹配:如果输入的字符能唯一匹配一个命令,按下 Tab 键后,系统会立即补全该命令。
- 多命令匹配:如果输入的字符能匹配多个命令,按下两次 Tab 键后,系统才会列出所有可能匹配的命令供用户参考。
文件名和目录名补全同上:
- 当前目录补全:输入的路径能唯一匹配某个路径,则会自动补全该路径,不然需要再按一次来匹配可能的路径
- 指定路径补全:同理于当前目录补全
环境变量补全:输入 $
后,接着输入环境变量名的前几个字符和 Tab 键,唯一匹配会立刻补全,不然需要再按 Tab 键列出可能的环境变量
选项补全:很多命令都带有各种选项,使用 Tab 键可以补全命令的选项,在输入[命令] -
后按 Tab 键,会列出当前命令所有可用的选项。
参数补全:某些命令支持参数补全,同命令补全一样,[命令] [按Tab键一次或两次]
可能会尝试补全命令语法中的必要参数
Ctrl + c 快捷键终止前台进程
Ctrl + c 快捷键可以向正在运行的前台进程发送中断信号(SIGINT),以此来终止该进程的执行,但注意:
- 部分前台进程可能会对该信号进行特殊处理,或者将其忽略,从而 不会立即终止 或 没有反应。
- 后台进程不受
Ctrl c
影响,其只可以终止前台运行的进程。 - 强制终止可能导致未保存的数据丢失(如文件写入未完成)。
Ctrl + d 快捷键
退出 shell 会话:当用户在终端中打开一个交互式的 shell 会话(如 Bash)时,按住 Ctrl d
会向 shell 发送一个文件结束符(EOF,End - Of - File)信号,从而退出当前 shell 会话。
结束标准输入:在许多需要从标准输入读取数据的命令中,Ctrl d
可以用来表示输入结束。