Linux 系统常用命令总结

提示

  • [ ]:代表[ ]中的字段为可选参数
  • [options] :可选参数,代表命令的选项,选项通常由一个短划线(-)后面跟着一个字母或一个长划线(–)后面跟着一个单词组成。这些选项允许对命令的输出进行不同的格式化和过滤。
  • [directory] :可选参数,代表目录的路径。

一、文件和目录操作

  • ls: 列出目录内容。
ls [options] [directory]
# 列出当前目录的内容(通常是用户的主目录)
ls

# 列出指定目录的内容
ls /path/directory

# 列出当前目录的内容,包括隐藏文件和目录的内容
ls -a

# 以长格式列出当前目录的内容(包括权限、所有者、文件大小等信息)
ls -l
  • pwd: 显示当前工作目录。
pwd
  • cd: 切换目录。
cd [directory]
# 进入指定目录
cd /path/to/directory

# 进入用户的主目录(通常是 home 目录)
cd ~

# 进入上级目录
cd ..

# 进入根目录
cd /

# 返回上一次所在的目录(使用 - 作为参数)
cd -
  • touch: 创建空文件。
touch filename
  • mkdir: 创建目录。
mkdir directory
  • rm: 删除文件或目录。
rm [options] file/directory
# -r 或 -R:递归删除目录及其内容。
# 使用这个选项时,要特别小心,因为它将删除目录及其所有子目录和文件。
rm -r directory/

# -f:强制删除,不会提示用户确认。
# 这个选项通常与 -r 一起使用,以删除目录及其内容而无需确认。
rm -rf directory/

# -i:交互式删除,会在删除前提示用户确认。
rm -i file
  • cp: 复制文件或目录。
cp [options] source destination

options:可以是一系列选项,用于控制复制行为。
source:要复制的源文件或源目录的路径。
destination:目标文件或目录的路径,即复制后的位置。

# 复制文件到另一个位置
cp file1.txt /path/to/destination/

# 复制多个文件到目标目录
cp file1.txt file2.txt /path/to/destination/

# 复制目录及其内容到目标目录,使用 -r 选项进行递归复制
cp -r directory/ /path/to/destination/

# 保留原文件的权限和属性,使用 -p 选项
cp -p file1.txt /path/to/destination/

# 强制覆盖目标文件,如果目标文件已存在,使用 -f 选项
cp -f file1.txt /path/to/destination/

# 显示复制进度,使用 -v 选项(verbose)
cp -v file1.txt /path/to/destination/
  • mv: 移动或重命名文件或目录。
mv [options] source destination

options:可以是一系列选项,用于控制移动或重命名的行为。
source:要移动或重命名的源文件或源目录的路径。
destination:目标文件或目录的路径,即移动后的位置或重命名后的名称。

# 移动文件到另一个位置
mv file1.txt /path/to/destination/

# 重命名文件
mv oldname.txt newname.txt

# 移动目录到另一个位置,使用 -i 选项进行交互式确认
mv -i directory/ /path/to/destination/

# 强制覆盖目标文件,如果目标文件已存在,使用 -f 选项
mv -f file1.txt /path/to/destination/

# 移动目录并保留原文件的权限和属性,使用 -p 选项
mv -p directory/ /path/to/destination/

# 移动多个文件到目标目录
mv file1.txt file2.txt /path/to/destination/

# 显示移动过程,使用 -v 选项(verbose)
mv -v file1.txt /path/to/destination/

二、文件查看和编辑

  • cat: 查看文件内容。
cat filename
  • more / less: 分屏查看文件内容。
# more 命令以一页一页地显示文件内容,每次按下空格键会显示下一页,按下 q 键退出。
# more 不支持回滚操作,只能向前查看。
more filename

# less 支持向前和向后滚动查看文件。
# 你可以使用空格键向下滚动一页,使用 b 键向上滚动一页,按下 q 键退出。
less filename
  • head / tail: 查看文件头部或尾部。
head [options] filename
tail [options] filename
# 查看文件的前 20 行
head -n 20 filename

# 查看文件的最后 20 行
tail -n 20 filename 

# 实时监视文件的末尾内容 
tail -f filename    
  • nano / vi / vim: 文本编辑器。
  • nano 是一个相对简单的文本编辑器,适合初学者。它提供了基本的文本编辑功能,包括打开、编辑、保存和退出文件。nano 提供了一些常用的快捷键操作,例如 Ctrl + O 保存文件,Ctrl + X 退出编辑器等
  • vi 是一个强大但稍微复杂的文本编辑器,通常需要一些时间来熟悉。它分为多种模式,包括正常模式、插入模式和命令模式。默认情况下,vi 打开文件后处于正常模式,需要按 i 键进入插入模式以编辑文本。编辑完成后,按 Esc 键返回正常模式,然后使用 :w 保存文件,:q 退出编辑器。
  • vim 是 vi 的增强版,具有更多功能和定制选项。vim 也有多种模式,使用 i 键进入插入模式,按 Esc 返回正常模式,然后使用 :w 保存文件,:q 退出编辑器,:wq 保存并退出编辑器,:q! 放弃所有更改并强制退出编辑器。
nano filename
vi filename
vim filename

三、文件权限管理

  • chmod: 修改文件权限。
chmod [options] mode filename

options:chmod 命令的选项,例如 -R 用于递归修改目录及其内容的权限。
mode:权限模式,可以使用数字或符号来表示。
filename:要修改权限的文件或目录的名称。

使用数字设置权限
chmod 命令可以使用数字来表示权限,其中每个权限有一个数字值:
4:读权限(r)
2:写权限(w)
1:执行权限(x)

使用这些数字,可以将它们相加以创建权限模式。

# 将文件 filename 的权限设置为所有者可读、写和执行,而其他用户只能读和执行
chmod 755 filename

# 递归地设置目录 directory 及其所有内容的权限
chmod -R 755 directory

使用符号设置权限
使用符号也可以更直观地表示权限模式。
+:添加权限。
-:删除权限。
=:设置权限。

# 允许所有者添加执行权限
chmod u+x filename 

#删除群组和其他用户的读写权限
chmod go-rw filename
  • chown: 修改文件所有者和所属组。
chown [newowner]:[newgroup] filename

newowner:要分配给文件或目录的新所有者的用户名或用户 ID。
newgroup:要分配给文件或目录的新所属组的组名或组 ID。
filename:要修改所有者和所属组的文件或目录的名称。

# 将文件 file.txt 的所有者更改为用户 alice
chown alice file.txt 

# 将文件 file.txt 的所属组更改为组 users
chown :users file.txt 

# 将文件 file.txt 的所有者更改为用户 alice,并将所属组更改为组 users
chown alice:users file.txt 

四、文件压缩和解压缩

  • tar: 打包(压缩)文件。
tar -cvf archive.tar files/directories

-c:创建归档文件。
-v:显示详细信息,通常用于查看正在打包的文件列表。
-f:指定归档文件的名称。

# 创建一个名为 myarchive.tar 的归档文件,包含 file1.txt、file2.txt 和 directory1/
tar -cvf myarchive.tar file1.txt file2.txt directory1/
  • tar: 解包(解压缩)文件。
tar -xvf archive.tar

-x:解包归档文件。
-v:显示详细信息,通常用于查看正在解包的文件列表。
-f:指定要解包的归档文件的名称。

# 解包名为 myarchive.tar 的归档文件
tar -xvf myarchive.tar
  • tar: 查看归档文件内容。
tar -tvf archive.tar

-t:显示归档文件的内容列表。
-v:显示详细信息,通常用于查看文件列表。
-f:指定要查看的归档文件的名称。

# 显示 myarchive.tar 归档文件的内容列表
tar -tvf myarchive.tar
  • tar: 向归档文件添加文件或目录。
tar -rvf archive.tar new_files/directories

-r:向归档文件中添加文件或目录。
-v:显示详细信息,通常用于查看添加的文件列表。
-f:指定归档文件的名称。

# 向名为 myarchive.tar 的归档文件中添加新文件和目录
tar -rvf myarchive.tar newfile.txt newdirectory/
  • gzip / gunzip: 压缩和解压缩文件。
# 压缩
tar -czvf archive.tar.gz files/directories

# 解压缩
tar -xzvf archive.tar.gz

-z:表示使用 gzip 压缩(或解压缩)

五、查找文件

  • find: 在文件系统中查找文件和目录。
find [directory] [condition] filename

directory:要搜索的起始目录路径。如果不指定,默认为当前目录。
-name:定义搜索的匹配条件。常见的是 -name 用于按文件名匹配,还有 -type、-size、-mtime 等用于根据类型、大小、修改日期等匹配。
filename:要搜索的文件或目录的名称,可以使用通配符进行模糊匹配。

# 在当前目录及其子目录中搜索文件名为 "example.txt" 的文件
find . -name example.txt

# 在 /home/user/documents 目录中搜索文件名以 ".pdf" 结尾的文件
find /home/user/documents -name "*.pdf"

# 在整个文件系统中搜索目录名为 "backup" 的目录
find / -type d -name backup

# 搜索当前目录及其子目录中所有的空文件夹
find . -type d -empty

# 查找 /var/log 目录下最近 7 天内修改过的 .log 文件
find /var/log -type f -name "*.log" -mtime -7
  • grep: 在文件中搜索文本。
grep [options] pattern [file...]

pattern:要搜索的文本模式,可以是普通字符串或正则表达式。
file…:要搜索的文件列表。你可以指定一个或多个文件。如果不指定文件名,grep 将从标准输入读取数据。

常用选项
-i 或 --ignore-case:忽略大小写匹配。
-r 或 --recursive:递归搜索目录中的文件。
-w 或 --word-regexp:只匹配整个单词,而不是部分匹配。
-n 或 --line-number:显示匹配行的行号。
-l 或 --files-with-matches:只显示包含匹配文本的文件名,不显示匹配的具体行。
-v 或 --invert-match:显示不匹配模式的行。
-c 或 --count:只显示匹配模式的行数,而不显示具体行。
-e 或 --regexp:允许在命令行中指定多个搜索模式。

# 在文件中搜索特定字符串
grep "pattern" filename

# 使用正则表达式搜索
grep -E "regex_pattern" filename

# 递归搜索目录中的文件
grep -r "pattern" /path/to/search

# 显示匹配行的行号
grep -n "pattern" filename

# 只显示包含匹配文本的文件名
grep -l "pattern" /path/to/search/*

# 显示不匹配模式的行
grep -v "pattern" filename

# 指定多个搜索模式
grep -e "pattern1" -e "pattern2" filename
  • locate: 基于数据库查找文件。
locate [options] pattern

pattern:要搜索的文件名模式。可以是普通字符串,不是正则表达式。

常用选项
-i 或 --ignore-case:忽略大小写匹配。
-l 或 --limit:限制显示匹配结果的数量。
-c 或 --count:只显示匹配结果的数量,而不显示文件名。
-r 或 --regexp:允许在命令行中指定正则表达式模式。

# 查找包含指定名称的文件
locate filename

# 查找包含指定名称的目录
locate directoryname

# 忽略大小写查找
locate -i filename

# 限制显示结果数量
locate -l 5 filename

# 显示匹配结果的数量而不显示文件名
locate -c filename

# 使用正则表达式搜索
locate -r "regex_pattern"

六、系统信息和状态

  • uname: 显示系统信息。
uname [options]

常用选项:
-a 或 --all:显示所有信息,等同于 -s -n -r -v -m -p -i.
-s 或 --kernel-name:显示内核名称。
-n 或 --nodename:显示网络节点主机名。
-r 或 --kernel-release:显示内核版本。
-v 或 --kernel-version:显示内核发布信息。
-m 或 --machine:显示硬件架构。
-p 或 --processor:显示处理器类型。
-i 或 --hardware-platform:显示硬件平台

# 显示操作系统名称
uname

# 显示所有系统信息
uname -a

# 显示内核版本
uname -r

# 显示硬件架构
uname -m
  • top/htop: 显示系统进程和资源使用情况。
# 多数 Linux 发行版中都默认安装了 top
# top 会以实时更新的方式显示系统状态,按 q 键可以退出
top

# 需要单独安装 htop。
# 是 top 的增强版本,提供了更多的功能和可视化效果
htop
  • ps: 显示当前用户的进程。
ps [options]
# 显示当前用户的所有进程
ps

# 显示所有进程的详细信息(包括其他用户的进程)
ps aux

# 以树状结构显示进程(显示进程的父子关系)
ps -ejH

# 显示某个特定用户的进程(以用户名为条件过滤)
ps -u username

# 显示某个特定进程的信息(以进程ID为条件过滤)
ps -p process_id

# 显示完整的进程命令行(包括参数)
ps -f

# 按 CPU 使用率排序并显示前 N 个进程
ps aux --sort=-%cpu | head -n N

# 按内存使用排序并显示前 N 个进程
ps aux --sort=-%mem | head -n N
  • df: 查看磁盘空间。
df [options]
# 查看所有挂载点的磁盘空间信息
df

# 查看指定文件系统类型(如 ext4、NTFS)的磁盘空间信息
df -t ext4

# 以更易读的格式显示磁盘空间(以 GB、MB 等单位显示)
df -h

# 仅显示本地文件系统(不包括虚拟文件系统)的磁盘空间信息
df -x tmpfs -x devtmpfs

# 显示指定挂载点的磁盘空间信息(用于特定目录的磁盘空间查看)
df /path/to/directory

# 以 inode 数量的方式查看文件系统信息(显示可用 inode 数量等)
df -i
  • du: 查看目录空间占用。
du [options] directory
# 查看指定目录的磁盘空间使用情况(默认单位为千字节)
du /path/to/directory

# 以人类可读的格式显示磁盘空间(以 GB、MB 等单位显示)
du -h /path/to/directory

# 查看目录的总磁盘使用情况,不显示子目录的详细信息
du -s /path/to/directory

# 仅显示指定深度内的目录磁盘使用情况(例如,只显示一级子目录的情况)
du --max-depth=1 /path/to/directory

# 以更多详细信息显示目录的磁盘使用情况,包括子目录
du -ah /path/to/directory

# 排除指定目录或文件的磁盘使用情况,以忽略特定内容
du --exclude=pattern /path/to/directory

七、用户和权限管理

  • who: 查看当前登录到系统的用户列表。
who
  • whoami: 显示当前登录用户的用户名。
whoami
  • passwd: 更改用户密码。
passwd [username]

如果未提供用户名,则只需键入 passwd,然后按 Enter 键,系统将提示您输入当前用户的密码,然后再提示您输入新密码和确认密码。
如果提供了用户名,系统将提示您输入新密码和确认密码,并将更改该用户的密码。

  • adduser / useradd: 添加用户。
useradd [options] username
# 创建用户并创建home目录
useradd -m username 
  • deluser / userdel: 删除用户。
userdel [options] username
  • sudo: 以超级用户权限执行命令。

sudo 是一个非常重要的Linux命令,它允许普通用户以超级用户(也称为root用户)的权限来执行特权命令。这是一种重要的安全措施,以确保不是每个用户都能够执行潜在危险的操作。

sudo command

command 是要以超级用户权限执行的命令

八、网络相关操作

  • ping: 测试主机之间的连通性。
ping [options] hostname/IP

hostname/IP 是你想要测试的目标主机的主机名或IP地址
常用选项
-c count:指定发送数据包的次数。例如,-c 4 表示发送4个数据包。
-i interval:指定发送数据包之间的时间间隔(以秒为单位)。例如,-i 2 表示每隔2秒发送一个数据包。
-s packetsize:指定发送的数据包大小(以字节为单位)。例如,-s 64 表示发送64字节的数据包。
-t timeout:设置超时时间,即等待目标主机响应的最大时间。超过这个时间没有响应则认为连接失败。
-q:以安静模式运行 ping,只显示结果摘要而不显示每个数据包的详细信息。
-v:以详细模式运行 ping,显示每个数据包的详细信息。

# 向示例主机 example.com 发送4个数据包
ping -c 4 example.com

# 设置数据包大小为100字节,并每隔1秒发送一个
ping -s 100 -i 1 example.com
  • ifconfig / ip: 配置网络接口信息。

ifconfig 和 ip 命令都用于配置和管理网络接口信息,但它们在不同的Linux发行版中可能有所不同。ifconfig 在一些Linux发行版中已被弃用,因此,在新的Linux系统中,推荐使用 ip 命令进行网络接口的配置和管理。

# 显示当前系统上所有的网络接口(如以太网接口、无线接口等)的配置信息,包括IP地址、子网掩码、MAC地址等。
ifconfig

# 将以太网接口 eth0 的IP地址设置为 192.168.1.2,子网掩码为 255.255.255.0
ifconfig eth0 192.168.1.2 netmask 255.255.255.0

# 显示当前系统上所有网络接口的详细信息
ip addr show

# 将以太网接口 eth0 的IP地址设置为 192.168.1.2,子网掩码为 /24,表示 255.255.255.0
ip addr add 192.168.1.2/24 dev eth0
  • netstat/ss: 查看网络状态。
netstat [options]

ss [options]

netstat 和 ss 都是用于查看网络状态和网络连接信息的命令,但它们在不同的Linux发行版中可能有所不同。需要注意的是,ss 命令在一些新的Linux系统中已经取代了 netstat,因为它更快速且支持更多的选项。因此,如果你使用较新的Linux发行版,推荐使用 ss 命令来查看网络状态。


# 查看网络接口信息
netstat -i

# 查看路由表信息
netstat -r

# 查看所有网络套接字的详细信息
ss -tuln

# 查看监听的TCP套接字
ss -tln

# 查看UNIX套接字
ss -lx
  • ssh: 远程登录到其他主机。
ssh [options] [user@]hostname

[user@]hostname:远程主机的用户名和主机名(或IP地址)。
常用选项
-p port:指定连接的远程端口号(默认是 22)。
-i identity_file:指定用于身份验证的私钥文件。
-L [bind_address:]port:host:hostport:创建本地端口转发。
-R [bind_address:]port:host:hostport:创建远程端口转发。
-X:启用 X11 转发,允许在远程主机上运行图形化应用程序。
-C:启用压缩以提高数据传输性能。
-A:启用代理跳转,允许通过远程主机连接到其他主机。

# 系统将提示你输入远程主机的用户密码以进行身份验证。一旦验证成功,你就可以在远程主机上执行命令。
ssh [email protected]

九、包管理

  • apt / apt-get: Debian/Ubuntu 包管理器。

apt 和 apt-get 是用于管理 Debian 和基于 Debian 的 Linux 发行版(如 Ubuntu)上的软件包的包管理工具。

# 更新软件包列表,这会从软件源更新软件包列表,以确保你能够获取到最新的软件包信息
apt update

# 安装指定名称的软件包
apt install package-name

# 升级系统中的所有软件包
apt upgrade

# 删除软件包,但保留配置文件
apt remove package-name

# 如果要删除软件包及其配置文件
apt purge package-name

# 搜索包含指定搜索词的软件包
apt search search-term

# 显示软件包信息
apt show package-name

# 查看已安装的软件包列表
apt list --installed

# 清理不再需要的依赖和缓存
apt autoremove
  • yum / dnf: Red Hat/CentOS 包管理器。

yum 和 dnf 是用于管理 Red Hat、CentOS 和 Fedora 等 Linux 发行版上的软件包的包管理工具.

# 更新软件包列表
sudo yum update
# 或者
sudo dnf update

# 安装软件包
sudo yum install package-name
# 或者
sudo dnf install package-name

# 升级系统中的所有软件包
sudo yum upgrade
# 或者
sudo dnf upgrade

# 删除软件包,但保留配置文件
sudo yum remove package-name
# 或者
sudo dnf remove package-name

# 删除已安装的软件包及其配置文件
sudo yum erase package-name
# 或者
sudo dnf erase package-name

# 搜索软件包
yum search search-term
# 或者
dnf search search-term

# 显示软件包信息
yum info package-name
# 或者
dnf info package-name

# 查看已安装的软件包列表
yum list installed
# 或者
dnf list installed

# 清理不再需要的依赖和缓存
sudo yum autoremove
# 或者
sudo dnf autoremove

十、进程管理

  • kill: 终止指定进程ID的进程。
kill [options] process_id
  • ps: 查看进程信息。
ps [options]
  • top / htop: 查看系统进程。
top

htop
  • killall: 终止指定名称的进程。
killall [options] process_name

十一、时间和日期

  • date: 显示系统日期和时间。
date
  • cal: 显示日历。
cal

# 查看 2023 年 8 月的日历
cal 8 2023
  • timedatectl: 配置系统时间和时区。
# 查看当前的时间和时区设置
timedatectl

# 启用自动时间同步(NTP)
sudo timedatectl set-ntp true

# 将时区设置为 "Asia/Shanghai"
timedatectl set-timezone Asia/Shanghai

# 将日期设置为 "2023-08-28",时间设置为 "14:30:00"
timedatectl set-time "2023-08-28 14:30:00"

十二、系统关机和重启

  • shutdown: 关闭系统。
# 立即关闭系统
sudo shutdown -h now

# 立即重启系统
sudo shutdown -r now

# 计划在一定时间后关闭系统
sudo shutdown -h +30

# 取消计划的关机
sudo shutdown -c
  • reboot: 重启系统。
reboot

十三、文件传输

  • scp: 安全复制文件。
scp [options] source destination

source 是要复制的文件或目录的路径。
destination 是目标位置,可以是本地或远程计算机的路径,格式为 [user@]host:destination。

# 从本地复制到远程计算机
scp /path/to/local/file username@remote:/path/to/destination/

# 从远程计算机复制到本地
scp username@remote:/path/to/remote/file /path/to/local/destination/

# 从远程计算机复制到本地并保持原始文件名
scp username@remote:/path/to/remote/file /path/to/local/destination/

# 从本地复制到远程计算机并保持原始文件名
scp /path/to/local/file username@remote:/path/to/destination/
  • rsync: 同步文件和目录。
rsync [options] source destination
# 从本地复制到远程计算机
rsync [options] /path/to/local/file username@remote:/path/to/destination/

# 从远程计算机复制到本地
rsync [options] username@remote:/path/to/remote/file /path/to/local/destination/

# 从远程计算机复制到本地并保持原始文件名
rsync [options] --relative username@remote:/path/to/remote/file /path/to/local/destination/

# 从本地复制到远程计算机并保持原始文件名
rsync [options] --relative /path/to/local/file username@remote:/path/to/destination/

十四、其他常用命令

  • echo: 打印文本。
echo "text"
  • history: 查看命令历史记录。
history [options]
  • wget/curl: 下载文件。
wget [options] URL
curl [options] URL

这些命令是 Linux 系统中常用的命令,用于执行各种系统管理和文件操作任务。每个命令都有各自的选项和参数,可以通过命令后跟 --help 查看帮助信息以获取更多详细信息。

猜你喜欢

转载自blog.csdn.net/weixin_53902288/article/details/132752115