Linux系统命令行的含义
例如:[root@localhost ~] #
root //用户名,root为超级用户
@ //分隔符
localhost //主机名称
~ //当前所在目录,默认为~,随目录切换而变化
([root@localhost home] # 为当前所在位置在home目录下)
# //表示当前用户为超级用户,普通用户为$,
([admin@localhost ~] $ 普通用户admin)
命令的组成
命令 参数名 参数值
例:shutdown -h now
系统操作命令
shutdown
-h 停止系统
-P 关闭系统并且切断电源
-r 重启系统
-c 取消之前的shutdown计划
-k 发送通知消息而不真正关闭或重启系统
参数:
time
:设置多久时间后执行shutdown
指令可以是
now
(立即)、+m
(m分钟后)、hh:mm
(指定的小时和分钟)。
message
:要传送给所有登录用户的信息。其他参数如
-f
(强制关闭或重启,忽略正在运行的进程)、
-t <seconds>
(指定倒计时关闭或重启的时间间隔)等。例:
shutdown -h now shutdown -P now 立即关机 shutdown -h +10 "System will shutdown in 10 minutes" 十分钟后关机并发送消息 shutdown -h 23:00 在晚上23:00关机 shutdown -r now 立即重启 shutdown -r +10 "System will reboot in 10 minutes" 十分钟后重启并发送消息 shutdwon -r 23:00 在晚上23:00关机 shutdown -c 取消设定的shutdown计划 shutdown -k +5 "Shutdown warning" 5分钟后发送警告信息,不实际执行关机或重启 shutdown -f now 强制关闭,忽略正在运行的进程
help
help是一个内置的shell命令,用于显示shell内部命令(也称为builtin命令)的简短描述和使用方法。
例:help cd
--help
是一个常见的命令行选项,用于显示大多数外部命令(即不是shell内置的命令)的使用说明和参数列表。这个选项通常被设计为向用户提供一个快速、简洁的帮助信息,而不需要查阅更详细的手册页。例:ls --help
man
man命令提供了关于Linux内置命令、系统调用、库函数等的详细文档,包括语法、参数选项、示例和解释。
例:man shutdown
su
例:su admin 切换为admin用户
sudo
sudo是Linux系统中的一个重要命令,它允许普通用户以超级用户(root)的权限执行特定命令。
例:$ sudo -u yao vi ~www/index.html
以 yao ⽤⼾⾝份编辑 home ⽬录下 www ⽬录中 的 index.html ⽂件
exit
退出当前用户
free
Linux下的free命令用于查看系统内存使用情况。
功能:
- 显示系统中未使用和已使用的物理内存和swap区总量。
- 提供总内存、已使用内存、剩余内存、缓存等信息
-b 以字节为单位显示内存使用情况 -k 以千字节为单位显示内存使用情况 -m 以兆字节为单位显示内存使用情况 -g 以吉字节为单位显示内存使用情况 -h 以人类可读的方式显示内存信息,数字后加单位 -s 指定刷新间隔,实时刷新内存信息 -t 显示内存总和列 输出信息:
Mem
行:显示内存的使用情况,包括总内存、已使用内存、剩余内存、共享内存、缓存和可用内存。Swap
行:显示交换空间的使用情况,包括总交换空间、已使用交换空间和剩余交换空间。
mount
将硬件设备的文件系统和Linux系统中的文件系统,通过指定目录(挂载点)关联起来,使得用户可以通过访问该目录来使用硬件设备上的文件系统。
用法:
- 基本格式:
mount [选项] 设备名 挂载点
。- 其中,设备名是与包括文件系统的磁盘或分区相关的设备文件,挂载点是一个已存在的目录
-t 指定文件系统的类型,如 ntfs
、vfat
等-o 添加挂载选项,如 ro
(只读)、rw
(读写)、noexec
(不允许执行二进制文件)等-a 挂载 /etc/fstab
中定义的所有文件系统-n 挂载时不将信息写入 /etc/mtab
文件
uname
uname是Linux和类UNIX操作系统中的一个命令,用于显示当前操作系统的相关信息。
具体功能包括:
- 显示操作系统名称:通过
uname -s
或不加任何参数,可以显示操作系统的名称,如"Linux"。- 显示主机名:使用
uname -n
可以显示网络节点的主机名。- 显示内核版本:通过
uname -r
可以查看内核的发行版本。- 显示内核发布版本:
uname -v
用于显示内核的版本信息,这是内核编译时固化下来的。- 显示机器硬件名称:
uname -m
可以显示机器的硬件名称,也即处理器的类型。- 显示所有信息:使用
uname -a
可以打印出系统的所有相关信息,包括操作系统名称、主机名、内核版本、内核发布版本、机器硬件名称、处理器类型等。- 此外,uname命令还有其他一些参数,如
-p
显示处理器类型(与-m
相同),-i
显示硬件平台,-o
显示操作系统等
yum
yum提供了丰富的命令行命令,如安装软件、删除软件、升级软件、查询信息、搜索软件等,满足了日常的软件管理需求
- 安装软件:
yum install package_name
,用于安装指定的软件包。- 卸载软件:
yum remove package_name
,用于卸载指定的软件包。- 更新软件:
yum update
,更新所有已安装的软件包。yum update package_name
,更新指定的软件包。- 检查更新:
yum check-update
,检查哪些软件包有可用更新。- 搜索软件包:
yum search package_name
,根据关键字搜索相关的软件包。- 查看软件包信息:
yum info package_name
,查看指定软件包的信息。- 列出软件包:
yum list
,列出所有可见的软件包。yum list installed
,列出所有已安装的软件包。yum list available
,列出所有可安装的软件包。yum list updates
,列出所有可更新的软件包。- 软件组管理:
yum grouplist
,列出所有软件组。yum groupinstall group_name
,安装指定的软件组。yum groupupdate group_name
,更新指定的软件组。yum groupremove group_name
,卸载指定的软件组。- 生成缓存:
yum makecache
,生成元数据缓存,加快后续操作速度
rpm
Linux rpm命令是Red Hat Package Manager的缩写,用于管理Linux系统中的RPM软件包。以下是关于rpm命令的详细介绍:
主要功能:
- 安装:使用rpm命令可以安装新的RPM软件包。
- 卸载:通过rpm命令也可以卸载已安装的RPM软件包。
- 升级:rpm命令支持升级现有的RPM软件包到新版本。
- 验证:通过rpm命令可以验证已安装的RPM软件包的完整性和正确性。
- 查询:rpm命令还提供了强大的查询功能,可以查询系统中已安装的RPM软件包及其详细信息。
常用选项:
示例用法 :
-i 安装RPM软件包 -e 卸载RPM软件包1 -U 升级RPM软件包 -v 详细模式,显示更多的输出信息 -h 显示散列进度(注意:在某些rpm版本中可能不是标准选项) -q 查询RPM软件包 -a 查询所有已安装的RPM软件包 -p
查询指定的RPM软件包文件
安装RPM软件包 rpm -ivh package_name.rpm
卸载RPM软件包 rpm -e package_name
升级RPM软件包 rpm -Uvh package_name.rpm
查询已安装的RPM软件包 rpm -qa
查询指定RPM软件包的信息 rpm -qi package_name
date
主要功能:
- 显示日期与时间:不带任何参数时,显示当前系统的日期和时间12。
- 自定义格式显示:通过“+”和格式字符串,可以自定义时间的显示格式,如年-月-日、时:分:秒等12。
- 设置系统时间:需要管理员权限,可以设置系统的日期和时间,通常与
--set
参数一起使用35。常用选项:
示例用法 :
+%Y
显示四位数的年份 +%m
显示两位数的月份 +%d
显示两位数的日期 +%H
显示小时(24小时制) +%M
显示分钟 +%S
显示秒 --set
设置系统时间,需要管理员权限 -d
以特定格式显示时间,或进行时间运算
显示当前日期和时间 date
以“年-月-日”格式显示当前日期 date +%F
以“时:分:秒”格式显示当前时间 date +%T
设置系统时间为2024年10月1日12点 sudo date --set="20241001 12:00:00"
wget
使⽤ wget 从⽹上下载软件、⾳乐、视频
-O
指定下载的文件名 -c
断点续传 -b
后台下载 -t
设置重试下载的次数 -P
下载到指定目录 -r
递归下载
ftp
ftp IP/hostname 访问 ftp 服务器
mls *.html - 显⽰远程主机上⽂件列表
目录操作命令
cd
切换目录
cd
或cd \~
切换到当前用户的主目录。 cd -
切换到一次所在的目录。
cd .
切换到当前目录(实际上没有变化,但可用于脚本或命令中的占位符) cd ..
切换到父目录,即上一级目录 cd [文件夹名] 切换到当前目录下的对应文件目录,文件夹不存在则报错
ls
查看目录
ls 查看当前目录下的所有文件和目录 ls -a 查看所有的文件和目录,包括隐藏的文件和目录 ls -l (ll) 以长列表的方式详细显示文件和目录的信息 ls -lh 显示可读的文件大小 ls -i 显示文件的inode号 ls -t 按修改时间排序 ls -S 按文件大小排序 ls -r 倒序显示 ls -R 递归列出子目录 ls -C 按列输出,纵向排序 ls -d 显示目录本身信息 ls -color 以彩色显示文件和目录
mkdir
创建目录
mkdir [目录名]
在当前工作目录下创建一个新的子目录,目录名为你指定的名称 mkdir -p [路径/目录名] 递归创建目录,如果指定的目录的上级目录不存在,会一并创建 mkdir -m [权限模式] [目录名]
创建并设置新目录的权限
rm
删除文件与目录
-f, --force 强制删除,忽略不存在的文件,不提示用户确认 -i, --interactive 交互式删除,在删除每个文件之前提示用户确认 -r, -R, --recursive 递归删除目录及其内容 -v, --verbose 详细模式,显示删除的每个文件的信息 -d, --dir 仅删除空目录,也可用rmdir命令
cp
拷贝目录
- 复制单个文件:
cp 源文件 目标文件
,例如cp file1.txt file2.txt
,将file1.txt
复制为file2.txt
12。- 复制多个文件到目录:
cp 源文件1 源文件2 ... 目标目录
,例如cp file1.txt file2.txt /dir/
,将file1.txt
和file2.txt
复制到目录/dir/
中1。- 复制目录:需要配合
-r
或-R
选项使用,例如cp -r /dir1/ /dir2/
,将目录/dir1/
及其所有内容递归复制到/dir2/
中。
-a, --archive 归档复制,保留文件的属性 -r, -R, --recursive 递归复制目录及其内容 -i, --interactive 覆盖前提示确认
find
搜索目录
-name 根据文件名进行搜索,区分大小写 -iname 根据文件名进行搜索,不区分大小写 -size 匹配文件的大小,可以使用+或-来指定大于或小于某个大小的文件 -mtime 匹配文件内容最后修改的时间,以天为单位 -atime 匹配文件最后访问的时间,以天为单位 -ctime 匹配文件权限最后改变的时间,以天为单位 -perm 匹配文件的权限 -user 匹配文件的所有者 -group 匹配文件的所属组 -type 匹配文件的类型,如目录、文本文件等 -exec 对搜索到的每个文件执行指定的命令 -delete 删除搜索到的文件或空目录
pwd
pwd命令显示的是当前工作目录的绝对路径,方便用户进行文件操作。
-L(逻辑):打印出逻辑工作目录的名称,即包含符号链接的路径。
-P(物理):显示不包含符号链接的物理路径,即实际路径。
文件操作命令
touch
touch命令主要用于创建普通文件或更改文件的时间属性。
创建文件:如果指定的文件不存在,touch命令会创建一个新的空文件。
修改时间属性:可以更改文件的访问时间(atime)和修改时间(mtime),如果文件已存在
touch -a filename.txt 仅更改文件的访问时间 touch -c filename.txt 如果文件不存在,则不创建新文件 touch -d "2023-04-01 12:00" filename.txt 使用指定的字符串来表示时间,而非当前时间,来更新文件的访问和修改时间 touch -m filename.txt 仅更改文件的修改时间 touch -r referencefile.txt targetfile.txt 使用另一个文件的时间属性来更新指定文件的时间属性 touch -t 202304011200 filename.txt 使用指定的时间格式来创建文件或更新文件的时间属性
vi(vim)
编辑文件
vim
(Vi IMproved)是vi
的一个改进版本,由Bram Moolenaar开发。vim
保留了vi
的所有功能,并添加了许多新特性和改进,包括:
- 多级撤销:
vim
支持无限级别的撤销和重做。- 语法高亮:
vim
可以根据文件的类型自动为代码提供语法高亮,使阅读和理解代码更加容易。- 可视化模式:
vim
提供了一个可视化模式,允许用户以更直观的方式选择文本。- 插件支持:
vim
支持大量的插件,这些插件可以扩展编辑器的功能,如代码补全、版本控制集成等。- 更友好的用户界面:
vim
在保持vi
的键盘快捷键的同时,也提供了一些更现代化的用户界面元素,如菜单栏、工具栏等(尽管这些元素在默认的vim
配置中可能不是立即可见的)使用vim
- 在命令行中输入
vim filename
(其中filename
是你想要编辑或创建的文件名)来启动vim
。切换模式:
- 使用特定的键(如
i
、a
、o
等)从普通模式切换到插入模式以输入文本。- 按
Esc
键从插入模式或其他模式切换回普通模式。- 在普通模式下按
v
、V
或Ctrl+v
进入可视模式以选择文本。- 在普通模式下按
:
进入命令行模式以执行命令。执行命令:
- 在命令行模式下输入命令(如
:w
保存文件,:q
退出编辑器,:wq
保存并退出等)。使用快捷键:
- 熟悉并使用
vim
的快捷键可以大大提高编辑效率。例如,使用h
、j
、k
、l
键或箭头键移动光标,使用dd
删除整行,使用yy
复制整行等。vi ⽂件名 // 打开需要编辑的⽂件
-- 进⼊后,操作界⾯有三种模式:
命令模式( command mode )、插⼊模式( Insert mode )和底⾏ 模式( last line mode )
命令模式
刚进⼊⽂件就是命令模式,通过⽅向键控制光标位置,
使⽤命令 "dd" 删除当前整⾏
使⽤命令 "/ 字段 " 进⾏查找
按 "i" 在光标所在字符前开始插⼊
按 "a" 在光标所在字符后开始插⼊
按 "o" 在光标所在⾏的下⾯另起⼀新⾏插⼊
按 " : " 进⼊底⾏模式 插⼊模式 此时可以对⽂件内容进⾏编辑,左下⻆会显⽰ "-- 插⼊ --""
按 "ESC" 进⼊底⾏模式
底⾏模式
退出编辑 :q
强制退出: q!
保存并退出: :wq
file
查看文件类型
file
命令会返回文件的类型,如文本文件、二进制文件、压缩文件等,并可能包括文件的编码格式、压缩方式以及系统架构等信息。
-i
显示文件的MIME类型 -z
对于压缩文件,显示其压缩方式及内部文件的类型 -b
不显示文件名,仅显示文件类型 -L
对符号链接文件进行解引用,并显示所指向文件的类型
find
find
命令用于在指定目录下查找文件。它功能强大,可以根据文件名、类型、大小、时间等多种条件进行搜索。
find
命令的常用选项及功能:-name PATTERN:按文件名模式查找文件,支持通配符12。
- 示例:
find /path -name "*.txt"
查找所有扩展名为.txt
的文件。-type TYPE:按文件类型查找,如
f
(文件)、d
(目录)等12。
- 示例:
find /path -type d
查找所有目录。-size n:按文件大小查找,n 可带单位如
c
(字节)、k
(KB)等1。
- 示例:
find /path -size +100k
查找大于 100KB 的文件。-mtime n:按文件修改时间查找,n 为修改天数1。
- 示例:
find /path -mtime -7
查找最近 7 天内修改的文件。-perm MODE:按文件权限查找1。
- 示例:
find /path -perm 644
查找权限为 644 的文件。-exec COMMAND {} ;:对查找到的文件执行指定命令1。
- 示例:
find /path -name "*.txt" -exec rm {} \;
删除所有扩展名为.txt
的文件。-maxdepth n:限制搜索深度为 n 层目录1。
- 示例:
find /path -maxdepth 1 -name "*.txt"
只在当前目录下查找.txt
文件
whereis
whereis
是一个Linux/Unix系统中的命令,用于查找文件的位置。具体来说,它能够定位可执行文件、源代码文件、帮助文件(如man手册)在文件系统中的位置。
-b 只搜索二进制文件的位置 -m 只搜索帮助文档(如man手册)的位置 -s 只搜索源码文件的位置 -u 展示有特殊条目的命令名称,即对于每个明确请求的类型不只有一个条目的命令 -B list 使用空格分隔的目录列表限制查找二进制文件的范围 -M list 使用空格分隔的目录列表限制查找手册文件的范围 -S list 使用空格分隔的目录列表限制查找源文件的范围 -f 终止目录列表并表示文件名的开始,与-B、-M或-S选项一起使用时,表示后续参数为文件名而非目录 -l 输出whereis使用的有效查找路径的列表
which
which
命令会在用户的环境变量PATH所指定的目录路径中,搜索指定的可执行文件,并返回其绝对路径。 which 指令会在环境变量 $PATH 设置的⽬录⾥查找符合条件的⽂件
-a
列出所有的匹配路径,而不仅仅是第一个匹配 -n <数目>
在输出时,限制每个PATH元素的最大字符数 -p <路径>
添加额外的搜索路径 -i
忽略大小写
文件内容查看命令
cat
查看文件内容:cat命令可以显示指定文件的内容,不论文件内容有多少,都会一次性显示
-n 显示每一行的行号 -b 仅对非空白行显示行号 -s 压缩多行空白行到一行 -A 显示所有不可见字符,包括行尾标记$、制表符^I等,相当于-vET的组合选项 -E 在每一行的末尾添加$符号 -T 将制表符显示为^I -v 使用可见的ASCII码显示不可见字符
more
类似于cat命令,但more会以分页的方式显示文件内容,便于用户逐页阅读。
-d
显示翻页进度,包括当前页码和已显示内容的百分比 -f
不折行,即当一行内容超过终端宽度时,不会换行显示,而是继续在同一行内滚动 -p
清除屏幕后才开始显示文件内容,这个选项通常与 -f
一起使用以避免在翻页时产生不必要的屏幕刷新-s
将多个连续的空行压缩为一行,使文件内容看起来更加紧凑。 -u
禁止下划线显示,这在某些终端上可能有用。 -c
从屏幕顶部开始显示,而不是从当前光标位置开始。 -n
指定每页显示的行数 在
more
命令运行时,用户可以使用以下交互式命令来控制显示:
空格键 翻到下一页 b
或Ctrl-b
翻到上一页 Enter
向下滚动一行 q
退出 more
命令/pattern
向前搜索包含指定模式的行 n
在搜索模式中,跳到下一个匹配的行 N
在搜索模式中,跳到上一个匹配的行 v
在 vi
编辑器中打开当前文件(如果系统安装了vi
)h
或?
显示帮助信息
less
less命令在Linux系统中用于分页查看文件内容,与more命令类似,但功能更为强大,允许用户向前和向后浏览文件内容。
-N
显示行号 -i
搜索时忽略大小写差异 -S
将连续多个空行压缩成一行显示 -F
实时跟踪文件的变化,对于监控日志文件非常有用 -X
退出less后保留最后一屏内容,不清空终 交互式键盘命令:
less支持丰富的键盘操作,如使用j和k键或上下箭头键逐行滚动内容,使用/键进行搜索,n键查找下一个匹配项等
head
head命令用于显示文件的开头部分,默认显示文件的前10行内容。
-n
指定显示的行数,如 head -n 20 file.txt
显示前20行-c
按字节数显示,如 head -c 50 file.txt
显示前50个字节
tail
tail命令用于显示文件的末尾部分。
-n 指定显示的行数。例如, tail -n 20 file.txt
显示文件最后20行-f 实时追踪文件更新。常用于查看正在增长的日志文件,如 tail -f /var/log/syslog
-c 按字节数显示文件末尾内容
文件权限
在Linux系统中,文件和目录的权限通常使用三组八进制数来表示,每组数字分别对应文件所有者(用户)、文件所属组(组)以及其他用户的权限。这些八进制数是通过将读(r)、写(w)和执行(x)权限的二进制值相加得到的。
以下是权限和它们对应的八进制数值:
- 读权限(r):二进制表示为
100
,对应的八进制数为4
。 - 写权限(w):二进制表示为
010
,对应的八进制数为2
。 - 执行权限(x):二进制表示为
001
,对应的八进制数为1
。
这些权限可以组合起来表示更复杂的权限设置。例如:
- 权限
7
(rwx
):二进制表示为111
,即4 + 2 + 1 = 7
。 - 权限
6
(rw-
):二进制表示为110
,即4 + 2 = 6
。 - 权限
5
(r-x
):二进制表示为101
,即4 + 1 = 5
。 - 权限
4
(r--
):二进制表示为100
,即只有读权限。 - 权限
2
(-w-
):二进制表示为010
,即只有写权限(这种情况较为罕见,因为通常不会只给写权限而不给读权限)。 - 权限
1
(--x
):二进制表示为001
,即只有执行权限。 - 权限
0
(---
):二进制表示为000
,即没有任何权限。
在Linux中,你可以使用 ls -l
命令来查看文件和目录的权限。输出的每一行都会显示文件或目录的权限,以及其他相关信息,如所有者、所属组、大小、修改时间等。权限部分通常显示为三组字符,每组三个字符,分别代表用户、组和其他用户的权限。
例:-rwxr-xr-x
这表示文件所有者有读、写和执行权限(rwx),文件所属组有读和执行权限(r-x),其他用户也有读和执行权限(r-x)。如果你将这些权限转换为八进制数,就会得到 755。
第⼀位: '-' 就代表是⽂件, 'd' 代表是⽂件夹
第⼀组三位:拥有者的权限
第⼆组三位:拥有者所在的组,组员的权限
第三组三位:代表的是其他⽤⼾的权限
chmod
chmod命令是Linux系统中用于改变文件或目录权限的命令。
-R 递归更改目录及其子目录内的文件权限 -v 详细模式,显示更改权限的过程
chown
chown命令是Linux系统中用于改变文件或目录拥有者或所属群组的命令。
-R 递归更改目录及其子目录内的文件所有权 -v 详细模式,显示更改所有权的过程 -f 静默模式,抑制警告信息 -h 仅更改符号链接的所有权,而不是链接指向的文件 --reference=FILE 参照指定文件的所有者和所属组设置目标文件的所有权 --from=OWNER[] 仅当文件的所有者和所属组与指定值匹配时才更改所有权
chgrp
chgrp命令是Linux系统中用于改变文件或目录所属群组的命令。
-R 递归更改目录及其子目录内的文件群组 -v 详细模式,显示更改群组的过程 -f 静默模式,通常用于抑制错误信息 --reference=FILE 参照指定文件的群组设置目标文件的群组
文件的打包、解压缩以及安装
使用场景:
- tar:常用于打包多个文件和目录,便于备份和传输,常与gzip或bzip2结合使用进行压缩。
- gzip:适用于对单个文件进行压缩,或在与tar结合使用时对打包后的文件进行压缩。
- bzip2:适用于对需要高压缩率的文件进行压缩,如日志文件、备份数据等。
- zip:适用于需要跨平台传输和压缩的场景,以及需要密码保护压缩文件的场景
tar
打包
tar是Unix/Linux系统中用于打包和解压文件的命令,tar 与gzip命令结合可以使⽤实现⽂件打包和压缩。
-c, --create 创建新的tar文件 -x, --extract, --get 从tar文件中解出文件 -f, --file=ARCHIVE 指定要操作的tar文件名 -z, --gzip 通过gzip对tar文件进行压缩或解压 -j, --bzip2 通过bzip2对tar文件进行压缩或解压 -J, --xz 通过xz对tar文件进行压缩或解压 -v, --verbose 详细地列出处理的文件 -C 解压缩到指定⽬录,注意:要解压缩的⽬录必须存在 使用示例:
打包 tar -cvf archive.tar /path/to/directory
压缩
tar -zcvf archive.tar.gz /path/to/directory
(使用gzip压缩)
解压
tar -xvf archive.tar
4;tar -zxvf archive.tar.gz
(解压gzip压缩的tar文件)
解压缩到指定路径 tar -zxvf 打包⽂件 .tar.gz -C ⽬标路径
zip
linux zip压缩命令用于创建ZIP格式的压缩文件。
-r 递归压缩目录及其子目录,将指定目录下的所有文件和子目录都打包到ZIP文件中 -m 压缩后从文件系统中删除原文件,相当于把文件移到压缩文件中 -v 详细模式,显示压缩过程的详细信息 -q 静默模式,不显示压缩过程 -u 更新ZIP文件,只添加新的文件和修改过的文件 -d 从ZIP文件中删除指定的文件 -l 列出ZIP文件中的文件信息 -9 使用最高级别的压缩,但压缩速度最慢 -P 设置密码来保护压缩文件的内容 示例:
压缩单个文件 zip archive.zip filename
递归压缩目录 zip -r archive.zip directory/
压缩多个文件 zip archive.zip file1 file2 file
压缩后删除原文件 zip -m archive.zip filename
添加密码保护 zip -P password archive.zip filename
unzip
unzip是Linux中用于解压缩zip格式文件的命令。
-d 指定解压缩的目标目录 -l 列出zip文件中的内容,而不实际解压缩文件 -o 覆盖现有的文件而不提示确认 -q 静默模式,不显示解压缩过程中的详细输出信息 -n 不解压已存在的文件 -x 排除压缩文件中的指定文件或目录 -P 设置密码来解压缩加密的zip文件
bzip2
要压缩一个文件,只需在命令行中输入
bzip2
,后跟要压缩的文件名,压缩后,原始文件将被删除,并生成一个名为example.txt.bz2
的压缩文件
-f,--force 强制覆盖 -v,--verbose 显示详细信息,如压缩进度等 -s,--small 降低程序执行时的内存使用量 -t,--test 测试 .bz2
压缩文件的完整性,但不解压缩它-k,--keep 在压缩过程中保留原始文件
bunzip2
解压缩以.bz2为扩展名的文件,恢复文件的原始内容。
-f 强制覆盖已存在的文件 -k 解压缩后保留源文件 -v 显示命令执行的详细过程 示例:
解压缩文件 file.bz2
bunzip2 file.bz2
解压缩文件并保留源文件 bunzip2 -k file.bz2
apt
apt是advancedPackagingTool,是Linux下的⼀款安装包管理⼯具,可以在终端中⽅便的安装、卸载和更新软件包。
sudo apt install <软件名>
用于安装指定的软件包 sudo apt update
用于更新本地软件包列表,确保安装的是最新版本 sudo apt upgrade
用于升级所有可升级的软件包 sudo apt remove <软件名>
用于删除指定的软件包,但保留配置文件 sudo apt purge <软件名>
用于删除软件包及其配置文件 sudo apt install htop 查看当前进程排名的软件
创建链接
ln
ln在Linux中是一个用于创建链接的命令。
ln命令可以创建硬链接和符号链接(也称软链接),将文件或目录与另一个位置关联起来。
- 硬链接:多个文件名指向同一个物理存储位置的文件副本,共享相同的inode和数据块。修改任一硬链接的内容,其他硬链接都会同步更新。删除原始文件不会影响已存在的硬链接12。
- 符号链接:只会在选定位置上生成一个文件的镜像,不会占用磁盘空间。它指向的是原始文件的位置,而非文件本身。修改符号链接指向的文件,符号链接会同步更新;但删除原始文件,符号链接将变为“悬空链接”
-s 创建符号链接 -f
强行建立文件或目录的连接,不论文件或目录是否存在 示例:
创建硬链接 ln 源文件 目标文件
创建符号链接 ln -s 源文件 目标文件
文件传输
rz、sz
使⽤rz、sz命令可以实现linux和windows之间的⽂件传输,但要求在windows客⼾端要安装Xshell远程连接⼯具。rz命令和sz命令是⼀对上传与下载的指令。它们的软件包名为lrzsz。
rz中的r意为received(接收),即将⽂件从win本地上传到服务器,为服务器接收⽂件。
sz中的s意为send(发送),输⼊sz时,意为服务器要发送⽂件,既从服务器发送⽂件到本地,或是 说本地从服务器上下载⽂件。
yum install lrzsz -y 安装lrzsz
rz 回⻋后会弹出windows窗⼝,然后选择⽂件
sz [选项] 文件名 将文件下载到本地
sz常用选项
-a
自动应答,传输开始时不提示 -b 以二进制模式传输文件,确保文件内容不被修改 -c 传输完成后关闭连接 -r 接收文件 -s 发送文件(实际上在sz命令中用于指定下载行为) -y 自动回答“yes”,接受所有传输请求 -q 以静默模式运行,不输出任何提示信息
sftp
连接远程主机,上传或下载⽂件。
sftp 172.24.5.12 连接到远程主机get a.txt 下载 a.txt ⽂件
put a.txt 上传 a.txt 到远程主机
scp
scp(secure copy)命令是Linux/Unix系统中用于在不同主机之间进行安全文件传输的命令。它基于SSH(Secure Shell)协议,提供了加密的文件传输通道,确保数据在传输过程中的安全性。
scp命令的使用示例
从本地复制文件到远程:
scp /path/to/local/file.txt username@remote_host:/path/to/remote/directory/
从远程复制文件到本地
scp username@remote_host:/path/to/remote/file.txt /path/to/local/directory/
复制整个目录到远程:
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory/
指定端口复制文件到远程
scp -P 2222 /path/to/local/file.txt username@remote_host:/path/to/remote/directory/
scp命令的常用选项
-r 递归复制整个目录 -P port 指定远程主机的SSH端口(默认是22) -q 静默模式,不显示传输进度和错误信息 -C 启用压缩 -i identity_file 指定私钥文件,用于身份验证
rcp
rcp代表“remote file copy”(远程文件拷贝),能够实现在计算机之间拷贝文件或目录。它支持两种格式,第一种用于文件到文件的拷贝,第二种用于将文件或目录拷贝到另一个目录中
-r 递归地把源目录中的所有内容拷贝到目的目录中 -p 试图保留源文件的修改时间和模式 -k 请求rcp获得在指定区域内的远程主机的Kerberos许可 -x rcp test 192.168.128.169:/test 拷⻉当前⽬录下的 test 到 192.168.128.169 /test ⽬录下
rcp root@192.168.128.169:./test /test 复制远程⽬录到本地的 /test 下
系统管理
防火墙操作
centos7以前 | centos7 | |
---|---|---|
查看防火墙状态 | service iptables status | systemctl status firewalld(.service) |
开启防火墙 | service iptables start | systemctl start firewalld(.service) |
关闭防火墙 | service iptables stop | systemctl stop firewalld(.service) |
重启防火墙 | service iptables restart | systemctl restart firewalld(.service) |
永久关闭防火墙 | chkconfig iptables off | |
永久打开防火墙 | chkconfig iptables on | |
开机启动防火墙 | systemctl enable firewalld(.service) | |
开机禁用防火墙 | systemctl disable firewalld(.service) | |
查看防火墙是否开机 | systemctl is-enabled firewalld(.service) |
hostnamectl
通过执行
hostnamectl
命令,可以显示当前系统的主机名、操作系统版本、内核版本、硬件架构等详细信息。
改主机名 sudo hostnamectl set-hostname <new_hostname>
设置静态主机名
sudo hostnamectl set-static-hostname
<new_static_hostname>
设置图标名称 sudo hostnamectl set-icon-name <icon_name>
查看特定主机名 hostnamectl
命令还可以配合--static
、--transient
、--pretty
等选项,查看系统的静态主机名、瞬间主机名或灵活主机名
ifconfig
使用
查看网络接口信息 使用 ifconfig
或ifconfig -a
命令可以查看系统中所有网络接口的状态信息,包括IP地址、MAC地址、子网掩码、广播地址等启用或禁用网络接口 通过
ifconfig [网卡接口] up
命令可以启用某个网络接口通过
ifconfig [网卡接口] down
命令可以禁用某个网络接口配置IP地址 使用 ifconfig [网卡接口] [IP地址] netmask [子网掩码]
命令可以为网卡接口配置IP地址和子网掩码ifconfig
命令修改IP地址,如sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
端口操作
netstat
netstat命令主要用于显示网络连接、路由表、接口统计等网络相关信息
可以使⽤ Linux 命令 netstat 来查询端⼝号。具体命令如下:
-a 或--all 显示所有连接和监听端口 -t 或 --tcp 仅显示TCP连接 -u 或 --udp 仅显示UDP连接 -n 或 --numeric 以数字形式显示地址和端口号,不进行域名解析 -p 或 --programs 显示与连接关联的进程信息,包括进程ID和进程名称 -r 或 --route
显示路由表信息 -s 或 --statistice
显示网络统计信息,如收发数据包的数量等 -i 或 --interfaces 显示网络接口信息
netstat -ap | grep < 进程名或 进程 ID>
lsof
(List Open Files)命令
lsof
命令用于列出当前系统上所有已经打开的文件,包括常规文件、目录、网络套接字等。它是一个非常强大的工具,可以帮助系统管理员了解哪些进程正在使用哪些文件,以及文件的打开方式。实际上并没有一个直接叫做
lsof
的命令,这里是在提及lsof
命令或者与之相关的功能。对于网络相关的用途,
lsof
可以通过特定的选项来过滤出与网络连接相关的信息。例如:
lsof -i
显示与网络相关的文件(即套接字)。这包括TCP和UDP连接,以及监听端口等 lsof -iTCP
仅显示TCP连接 lsof -iUDP
仅显示UDP连接 lsof -i :端口号
显示特定端口上的连接
与netstat
的区别:netstat
更专注于显示网络连接和统计信息,而lsof
则更侧重于显示哪些进程打开了哪些文件,包括网络套接字。两者可以互补使用,以获取更全面的网络信息。
如果你是在寻找一个特定的命令来查看网络连接和套接字,那么lsof -i
可能是一个不错的选择。但如果你只是想查看网络连接的状态和统计信息,那么netstat
可能更适合你的需求。
ss
ss
命令是一个用于查看套接字(socket)统计信息的强大工具。它提供了比传统netstat
命令更详细、更快速的网络连接信息。ss
命令能够显示所有类型的套接字,包括TCP、UDP、RAW以及UNIX套接字等,并且支持按照不同的过滤条件来显示所需的信息。
-t 显示TCP套接字 -u 显示UDP套接字 -x 显示UNIX套接字 -n 不解析服务名称,直接显示端口号 -p 显示与套接字关联的进程信息 -s 显示套接字统计信息 -a 显示所有套接字,包括监听和非监听的 -l 仅显示监听的套接字 -r 尝试解析主机名 -m 显示套接字的内存使用情况 -k 显示套接字的内核信息 可以通过
grep
等命令进一步过滤特定进程的信息,例如:ss -tunlp | grep 端⼝号
开放端口
开放端口的命令因Linux发行版和使用的防火墙工具而异。以下是几种常见的开放端口命令:
一、ufw(Ubuntu防火墙)
- 开放指定TCP端口:
ufw allow 端口号/tcp
- 例如,开放22端口:
ufw allow 22/tcp
二、firewalld(Red Hat、CentOS等防火墙)
- 开放指定TCP端口并永久生效:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
- 例如,开放1935端口:
firewall-cmd --zone=public --add-port=1935/tcp --permanent
- 重新载入配置使规则生效:
firewall-cmd --reload
三、iptables(Linux通用防火墙命令)
- 开放指定TCP端口:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
- 例如,开放80端口:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 保存设置:
service iptables save
(注意:某些系统可能使用iptables-save
命令来保存)
关闭端口
使用iptables关闭端口:
示例:要关闭80端口,可以运行
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
命令:
sudo iptables -A INPUT -p tcp --dport <端口号> -j DROP
使用firewalld关闭端口:
命令:
sudo firewall-cmd --zone=public --remove-port=<端口号>/tcp --permanent
示例:要关闭80端口,并且希望这个设置永久生效,可以运行
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
。之后,需要运行sudo firewall-cmd --reload
来重新加载防火墙配置
查看进程
ps
ps命令用于查看当前系统中进程的静态快照,即命令执行时刻的进程状态
-a 显示所有终端下的进程,包括其他用户的进程 -A 或-e 显示系统中的所有进程 -u 以用户为中心的格式显示进程信息,提供更详细的进程数据 -f 显示完整的进程信息,包括进程ID、父进程ID、CPU使用率、内存占用等 -l 以长格式显示进程信息,包含进程的详细信息及状态等 -x 显示没有控制终端的进程,这些进程通常在后台运行
top
top是Linux系统中用于实时动态查看进程信息和系统资源使用情况的命令。
-b 以批处理模式运行,通常与重定向或管道一起使用,将输出保存到文件或另一个命令中 -c 显示完整的命令行,包括命令名和参数 -d 设置刷新间隔,单位为秒,默认是5秒 -n 设置top命令显示更新的次数,达到次数后top会退出 -u 只显示指定用户的进程 -p 只显示指定进程ID的信息,可以指定多个PID,用逗号分隔
结束进程
使用kill命令
- 基本用法:
kill [信号] PID
,其中PID是进程ID,信号默认为SIGTERM(15),请求进程正常退出。- 强制终止:若进程不响应SIGTERM,可使用SIGKILL信号强制终止,命令为
kill -9 PID。
使用pkill命令
- 根据进程名终止:
pkill [信号] process_name
,其中process_name是进程名称,信号默认为SIGTERM。- 强制终止进程:使用
pkill -9 process_name
可以强制终止所有名称为指定名称的进程使用killall命令:
killall process_name
,删除所有指定名称的进程
ping
ping是一个计算机网络管理应用,主要用于测试网络连接。
其主要功能和特点包括:
- 确认主机可达性:通过向特定的目的主机发送ICMP Echo请求报文,并根据回复的ICMP回显应答消息,测试目的站是否可达。
- 检测网络状态:可以获取连接的丢包率和平均往返时间等有关状态信息,帮助判断TCP/IP参数是否设置正确,以及网络是否通畅。
- 多种参数设置:支持-t持续发送请求,-n指定发送次数,-l设置数据包大小,-a解析主机名等参数,以满足不同测试需求。
- 高级用法:如批量ping测试、路由跟踪等,可进一步用于网络故障排查和性能分析。
ping IP
检查本地网卡:ping 127.0.0.1
du
Linux du命令也是查看使⽤空间的,但是与df命令不同的是Linuxdu命令是对⽂件和⽬录磁盘使⽤的 空间的查看,还是和df命令有⼀些区别的。
命令格式:
du [ 选项 ] [ ⽂件 ]
-a 或 -all 显⽰⽬录中个别⽂件的⼤⼩ -b 或-bytes 显⽰⽬录或⽂件⼤⼩时,以 byte 为单位 -c 或 --total 除了显⽰个别⽬录或⽂件的⼤⼩外,同时也显⽰所有⽬录或⽂件的总和 -k 或 --kilobytes
以 KB(1024bytes) 为单位输出 -m 或 --megabytes
以 MB 为单位输出 -s 或 --summarize
仅显⽰总计,只列出最后加总的值 -h 或 --human-readable
以 K , M , G 为单位,提⾼信息的可读性 -x 或--one-file-xystem 以⼀开始处理时的⽂件系统为准,若遇上其它不同的⽂件系统⽬录则略 过 -L< 符号链接 > 或--dereference< 符号链接 > 显⽰选项中所指定符号链接的源⽂件⼤⼩ -S 或--separate-dirs 显⽰个别⽬录的⼤⼩时,并不含其⼦⽬录的⼤⼩ -X< ⽂件 > 或--exclude-from=< ⽂件 > 在 < ⽂件 > 指定⽬录或⽂件 --exclude=< ⽬录或⽂件 > 略过指定的⽬录或⽂件 -D 或--dereference-args 显⽰指定符号链接的源⽂件⼤⼩ -H 或--si 与-h 参数相同,但是 K , M , G 是以 1000 为换算单位 -l 或--count-links 重复计算硬件链接的⽂件
df
df
命令用于显示磁盘的使用情况,包括文件系统、已用空间、可用空间、使用百分比以及挂载点等信息。它是Linux系统中常用的磁盘管理工具之一。
-a
或--all
显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统 -h
或--human-readable
以人类易读的格式(如KB、MB、GB)显示磁盘使用情况,提高信息的可读性 -T
显示文件系统类型 -i
显示i节点信息,而不是磁盘块 -t TYPE
显示指定类型的文件系统的磁盘空间使用情况 -x TYPE
列出不是某一指定类型文件系统的磁盘空间使用情况 -l
或--local
仅显示本地文件系统的磁盘使用情况 -B SIZE
或--block-size=SIZE
按指定单位来打印大小信息
grep
grep 是一个在文本中搜索特定模式的命令行工具。
grep 的主要功能
- 搜索文本:grep 可以在文件或文本流中搜索与指定模式(通常是正则表达式)匹配的行。
- 输出匹配行:当找到匹配的行时,grep 会将这些行输出到标准输出(通常是屏幕)。
- 支持多种选项:grep 提供了丰富的选项,允许用户定制搜索行为,如忽略大小写、显示行号、递归搜索目录等。
-i 忽略大小写。在搜索时不区分大小写字母 -v 反转匹配。显示不包含匹配模式的行 -r 或 -R 递归搜索。在指定目录及其子目录中搜索匹配的文件 -n 显示行号。在输出的每行前显示该行在文件中的行号 -l 只显示文件名。列出包含匹配模式的文件名,而不显示匹配的行 -L 显示不匹配的文件名。列出不包含匹配模式的文件名 -c 算匹配的行数。只输出匹配到的行数,而不是匹配的行本身 -e 指定多个搜索模式。允许在一次grep调用中使用多个搜索模式 --f 从文件中读取模式。指定一个包含搜索模式的文件,grep 会从该文件中读取模式并进行搜索 -o 只输出匹配的部分。不显示整行,只显示与模式匹配的部分
用户权限相关命令
组管理
创建组和删除组都要通过sudo执行
序号 命令 作用 1 groupadd 组名 添加组 2 groupdel 组名 删除组 3 cat etc/group 确认组信息 4 chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组 组信息保存在/etc/group 文件中。
创建用户/ 设置密码/删除用户
序号 命令 作用 说明 1 useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录
-g 指定用户所在的组,否则会建立一个同名的组
2 passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码 3 userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录 4 cat etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在etc/passwd 文件中
查看用户信息
命令 作用 id [用户名] 查看用户UID和GID信息 who 查看当前所有登录的用户信息 whoami 查看当前登录用户的账户名