文件与目录管理相关命令
ls
用于显示当前目录或指定目录下的文件和子目录列表。
常用选项:
-
-l
:以详细信息列出(long format) -
-a
:显示所有文件,包括以.
开头的隐藏文件 -
-h
:人类可读的文件大小(与-l
一起使用)
ls -lah /home/user/
#结果
drwxr-xr-x 2 user user 4096 May 1 12:34 Documents
-rw-r--r-- 1 user user 220 May 1 12:34 file.txt
cd
切换当前工作目录。
cd [路径]
cd /home/user/Documents
pwd
显示当前工作目录的绝对路径。
pwd
#结果
/home/user/Documents
mkdir
创建新目录。
常见选项:
-
-p
:递归创建父目录。
mkdir [选项] 目录名
mkdir -p /home/user/Documents/new_folder
rmdir
删除空目录。
rmdir [目录名]
rmdir /home/user/Documents/new_folder
rm
删除文件或目录。
rm [选项] 文件名
常见选项:
-r:递归删除目录及其内容。
-f:强制删除,不会询问确认。
-i:交互式删除,删除前会询问确认。
cp
复制文件或目录。
常见选项:
-
-r
:递归复制目录。 -
-i
:交互式,覆盖前询问。 -
-u
:仅在源文件比目标文件更新
cp [选项] 源文件 目标文件
rm file.txt
rm -r dir1
touch
创建一个空文件,或更新文件的访问时间和修改时间。
touch 文件名
touch newfile.txt
find
在文件系统中查找文件或目录。
find [路径] [条件] [动作]
#在/home/user目录下查找所有后缀为.txt的文件
find /home/user -name "*.txt"
cat
查看文件内容,或者同时查看多个文件内容。
cat [文件1] [文件2] ...
file1.txt:
Hello from file1!
This is the first file.
file2.txt:
Hello from file2!
This is the second file.
cat file1.txt file2.txt
#结果
Hello from file1!
This is the first file.
Hello from file2!
This is the second file.
ln
创建硬链接或符号链接。
硬链接:
ln 源文件 链接文件
符号链接:
ln -s 源文件 链接文件
创建 file.txt 的硬链接 file_link.txt:
ln file.txt file_link.txt
创建了一个硬链接 file_link.txt,它与原文件 file.txt 指向同一数据块。
此时
cat file.txt # 输出 file.txt 的内容
cat file_link.txt # 输出 file.txt 的内容
创建 file.txt 的符号链接 file_symlink.txt:
ln -s file.txt file_symlink.txt
创建了一个符号链接 file_symlink.txt,它是一个指向 file.txt 的快捷方式。
stat
显示文件或文件系统的详细信息。
stat 文件
stat file.txt
#输出
File: file.txt
Size: 2048 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 1234567 Links: 1
Access: 2025-05-01 14:00:00.000000000
Modify: 2025-04-30 09:00:00.000000000
Change: 2025-04-30 09:00:00.000000000
Birth: -
tar
tar
是 Linux 中常用的归档工具,可以将多个文件打包成一个 .tar
文件,还可以结合 gzip、bzip2 实现压缩。
常见选项:
-
-c
:创建归档文件(create)。 -
-x
:解包归档文件(extract)。 -
-v
:显示处理过程(verbose)。 -
-f
:指定文件名(file)。 -
-z
:使用 gzip 压缩(.tar.gz)。 -
-j
:使用 bzip2 压缩(.tar.bz2)。
示例(打包并压缩):
tar -czvf archive.tar.gz mydir/
示例(解压):
tar -xzvf archive.tar.gz
gzip
/ gunzip
gzip
:压缩单个文件,生成 .gz
文件。
常见选项:
-
-k
:保留原始文件。 -
-v
:显示详细信息。
gunzip
:解压 .gz
文件。
示例(压缩):
gzip -k file.txt
示例结果:
file.txt.gz (原始 file.txt 仍保留)
示例(解压):
gunzip file.txt.gz
zip
zip
是 Windows/Linux 都常见的压缩格式,支持多个文件。
常见选项:
-
-r
:递归压缩目录 -
-v
:显示详细信息 -
-9
:最大压缩率
zip -r myarchive.zip mydir/
unzip
解压 .zip
文件
常见选项:
-
-l
:列出压缩包内容但不解压 -
-d
:指定解压目录 -
-o
:覆盖已存在文件而不提示
unzip myarchive.zip
权限与用户管理类命令
chmod
更改文件或目录的权限。
chmod [选项] 权限 文件
常见选项:
-
+
:添加权限 -
-
:删除权限 -
=
:设置权限 -
r
:读权限 -
w
:写权限 -
x
:执行权限
#给file.txt添加可执行权限
chmod +x file.txt
#给 file.txt 设置为所有者可读、可写,其他用户只读
chmod 644 file.txt
补充:文件权限
chmod
命令用于更改文件的权限。权限以三位八进制数字(如 644、777)表示,每一位数字控制不同用户类型的权限:文件所有者、所属用户组、其他用户。
权限的数字表示法
每个数字表示一个权限集,其中:
-
4 表示读权限(r)
-
2 表示写权限(w)
-
1 表示执行权限(x)
这三个数字可以组合起来,表示不同的权限组合。每一位数字表示一种用户类型的权限设置:
-
第一个数字:表示文件所有者的权限
-
第二个数字:表示文件所属用户组的权限
-
第三个数字:表示其他用户的权限
举例:
644
-
6(文件所有者的权限):
6
是4 + 2
,意味着文件所有者拥有 读 和 写 权限,但没有 执行 权限。 -
4(所属用户组的权限):
4
意味着该用户组只有 读 权限。 -
4(其他用户的权限):
4
同样意味着其他用户只有 读 权限。
所以,chmod 644 file.txt
表示文件 file.txt
对文件所有者可读可写,对用户组和其他用户只读。
777
-
7(文件所有者的权限):
7
是4 + 2 + 1
,意味着文件所有者拥有 读、写、执行 权限。 -
7(所属用户组的权限):
7
同样意味着该用户组拥有 读、写、执行 权限。 -
7(其他用户的权限):
7
也意味着其他用户拥有 读、写、执行 权限。
所以,chmod 777 file.txt
表示文件 file.txt
对所有人(包括文件所有者、用户组、其他用户)都具有 读、写、执行 权限。
chown
更改文件或目录的所有者。
chown [选项] 用户[:用户组] 文件
常见选项:
-
-R
:递归操作,改变目录及其中的文件和子目录的所有者。
#更改文件 file.txt 的所有者为 user1:
chown user1 file.txt
#递归地更改目录 mydir 及其所有子目录和文件的所有者:
chown -R user1 mydir
chgrp
更改文件或目录的所属用户组。
-
用户:是操作系统中的个体,可以是人,也可以是服务、进程等。
-
用户组:是一组用户的集合,允许多个用户共享一组资源或权限。
-
所属用户组:是指一个文件或目录的管理和访问权限的用户组。每个文件或目录都有一个所属用户组,可以是文件所有者所属的组,也可以是其他组。
chgrp [选项] 用户组 文件
常见选项:
-
-R
:递归更改目录及其中所有文件的所属用户组。
将 file.txt 的用户组更改为 group1:
chgrp group1 file.txt
递归更改目录 mydir 的所属用户组为 group1:
chgrp -R group1 mydir
groupadd
创建一个新的用户组。
groupadd [选项] 用户组
创建一个新用户组 group1:
groupadd group1
useradd
创建一个新的用户账户。
useradd [选项] 用户
常见选项:
-
-m
:创建用户时自动创建用户的主目录。 -
-G
:将用户添加到一个或多个附加组。 -
-s
:指定用户的默认登录 shell。
创建一个名为 user1 的新用户,并自动创建其主目录:
useradd -m user1
创建一个新用户 user2,并将其添加到 group1 组:
useradd -m -G group1 user2
passwd
修改用户的密码。
passwd [用户]
#修改当前用户的密码:
passwd
#修改 user1 的密码:
passwd user1
groups
显示当前用户或指定用户所属的所有用户组。
#显示当前用户所属的组:
groups
#显示 user1 所属的组:
groups user1
进程管理类命令
ps
查看当前系统中的进程信息。它可以显示所有进程、特定进程或某个特定条件下的进程。
ps [选项]
常见选项:
-
-e
或-A
:显示所有进程。 -
-f
:显示更详细的信息。 -
-u
:显示指定用户的进程。 -
aux
:常用选项,显示所有用户的进程,并以用户友好的方式显示。
top
实时查看系统中的进程信息,并动态更新。它显示 CPU、内存使用情况,帮助用户了解系统资源的分配情况。
top
常见选项:
-
-d
:指定更新间隔时间(单位:秒)。 -
-n
:指定显示更新的次数。 -
-u
:显示指定用户的进程。 -
-p
:显示指定进程ID的信息。 -
-b
:以批处理模式运行,适用于脚本。
top - 11:23:45 up 2 days, 4:19, 3 users, load average: 0.13, 0.20, 0.18
Tasks: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.6 sy, 0.0 ni, 97.9 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 16003.7 total, 4327.1 free, 8323.5 used, 3353.1 buff/cache
MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 6089.0 avail Mem
kill
发送信号到进程,最常用的信号是 SIGTERM
(终止进程)和 SIGKILL
(强制终止进程)。通过进程 ID(PID)指定要终止的进程。
kill [选项] PID
常见选项:
-
-9
:强制终止进程(即SIGKILL
)。 -
-15
:默认终止信号(即SIGTERM
)。
发送默认的终止信号(SIGTERM)给进程:
kill 1234
强制终止进程(SIGKILL):
kill -9 1234
pkill
根据进程名称发送信号,可以用来结束特定名称的进程,类似于 kill
,但不需要知道 PID。
pkill [选项] 进程名称
常见选项:
-
-9
:强制终止进程。 -
-u
:指定用户。
根据进程名称终止所有 firefox 进程:
pkill firefox
强制终止 firefox 进程:
pkill -9 firefox
nice
启动一个进程并设置其优先级。数值越小,优先级越高;数值越大,优先级越低。
nice [选项] 命令 [参数]
常见选项:
-
-n
:指定优先级数值,范围是-20
(最高优先级)到19
(最低优先级)。
启动一个进程并设置其优先级为 10(低优先级):
nice -n 10 command
启动一个进程并设置其优先级为 -10(高优先级):
nice -n -10 command
renice
修改正在运行的进程的优先级(也称为 "nice 值")。这个命令通常用于调整某个进程的资源使用优先级。
renice [选项] 优先级 PID
常见选项:
-
-n
:指定优先级数值。 -
-p
:指定进程 ID。
将进程 1234 的优先级修改为 -5:
renice -n -5 -p 1234
将 bob 用户的所有进程的优先级修改为 10:
renice -n 10 -u bob
系统信息查看类命令
uname
显示系统的基本信息,如操作系统名称、内核版本等。
常见选项:
-
-a
:显示所有信息,包括内核名称、主机名、内核版本、机器硬件架构等。 -
-r
:显示内核版本。 -
-s
:显示操作系统名称。 -
-m
:显示机器硬件架构。
uname -a
#示例结果:
Linux hostname 5.4.0-42-generic #46-Ubuntu SMP Tue Jun 23 18:39:25 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
hostname
显示或设置系统的主机名。
常见选项:
-
-I
:显示系统的 IP 地址。 -
-f
:显示完整的主机名。
hostname -I
示例结果:
192.168.1.10
uptime
显示系统的运行时间、当前时间、系统负载等信息。
常见选项:
-
-p
:以简洁格式显示系统的运行时间。
uptime
示例结果:
11:23:45 up 2 days, 4:19, 3 users, load average: 0.13, 0.20, 0.18
df
显示文件系统的磁盘空间使用情况。
常见选项:
-
-h
:以人类可读的格式(例如 MB、GB)显示磁盘空间。 -
-T
:显示文件系统类型。
df -h
示例结果:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 25G 23G 54% /
tmpfs 16G 1.2G 14G 8% /dev/shm
网络管理类命令
ifconfig
显示或配置网络接口信息。
常见选项:
-
-a
:显示所有接口的信息,包括已关闭的接口。 -
up
:启用指定的网络接口。 -
down
:禁用指定的网络接口。 -
eth0
:指定一个特定的接口,例如eth0
,查看该接口的信息。
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe7f:1c14 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3e:61:fc txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 12345678 (12.3 MB)
TX packets 12345 bytes 12345678 (12.3 MB)
ping
测试与另一台计算机的网络连接情况。
常见选项:
-
-c
:指定发送的 ICMP 数据包数量。 -
-i
:指定发送数据包的间隔时间(单位:秒)。 -
-t
:指定 TTL(生存时间)。
ping -c 4 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.050 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.046 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.047 ms
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.044/0.047/0.050/0.003 ms
netstat
显示网络连接、路由表、接口统计等信息。
常见选项:
-
-t
:显示 TCP 连接。 -
-u
:显示 UDP 连接。 -
-l
:显示监听中的服务端口。 -
-a
:显示所有的连接和监听端口。 -
-n
:以数字形式显示地址和端口(不进行域名解析)。
netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
ss
查看 socket 统计信息,功能更强大且效率更高,相较于 netstat
。
常见选项:
-
-t
:显示 TCP 套接字。 -
-u
:显示 UDP 套接字。 -
-l
:显示监听中的套接字。 -
-a
:显示所有套接字。 -
-n
:显示数字格式的地址和端口(不进行解析)。
ss -tuln
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:80 [::]:*
traceroute
显示数据包到达目标主机的路径,帮助排查网络延迟和路由问题。
常见选项:
-
-n
:以数字形式显示 IP 地址(不进行域名解析)。 -
-m
:指定最大跳数。 -
-T
:使用 TCP 协议进行追踪。
traceroute -n google.com
traceroute to google.com (216.58.192.174), 30 hops max, 60 byte packets
1 192.168.1.1 0.588 ms 0.701 ms 0.797 ms
2 10.10.10.1 3.059 ms 3.192 ms 3.336 ms
3 172.217.0.14 5.466 ms 5.715 ms 6.016 ms
软件包管理类命令
apt
适用于 Debian/Ubuntu,用于管理 Debian 系系统的软件包(简化版 apt-get)。
常见选项:
-
install <package>
:安装指定软件包。 -
remove <package>
:卸载指定软件包(保留配置文件)。 -
purge <package>
:卸载并删除配置文件。 -
update
:更新本地软件包索引。 -
upgrade
:升级已安装的软件包。
sudo apt update
sudo apt install vim
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
...
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
vim
dpkg
适用于 Debian/Ubuntu,低层级的软件包管理器,用于 .deb
包的安装、查询等。
常见选项:
-
-i <package.deb>
:安装.deb
包。 -
-r <package>
:卸载包。 -
-l
:列出已安装包。 -
-s <package>
:查看某个软件包的信息。 -
-L <package>
:查看软件包安装的文件列表。
sudo dpkg -i example.deb
Selecting previously unselected package example.
(Reading database ... 158000 files and directories currently installed.)
Preparing to unpack example.deb ...
Unpacking example ...
Setting up example ...
yum
老版 RedHat/CentOS 的软件包管理器。
常见选项:
-
install <package>
:安装软件包。 -
remove <package>
:删除软件包。 -
update
:更新软件包到最新版本。 -
list installed
:列出已安装的软件包。 -
search <name>
:查找包含关键词的软件包。
sudo yum install wget
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7 will be installed
...
Installed:
wget.x86_64 0:1.14-18.el7
Complete!
dnf
yum
的替代品,提供更好的依赖解决方案和性能。
常见选项:
-
install <package>
:安装包。 -
remove <package>
:卸载包。 -
update
:升级包。 -
search <keyword>
:搜索包。 -
info <package>
:显示包信息。
sudo dnf install curl
Last metadata expiration check: 0:00:03 ago on Thu 01 May 2025 12:00:00 PM UTC.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
curl x86_64 7.76.1-20.el8 baseos 270 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 270 k
Installed size: 545 k