Linux 常用命令
Linux 常用命令简介
关键词:命令行 / 终端 / Shell
Linux 是一种开源的操作系统,广泛应用于服务器、嵌入式系统和个人电脑。Linux 的强大之处在于其命令行界面(CLI),用户可以通过输入命令来执行各种任务。以下是一些常用的 Linux 命令,帮助你更好地使用和管理 Linux 系统。
1. 重启系统
reboot:重启计算机。shutdown -r now:立即重启系统。
2. 关闭系统
shutdown -h now:立即关闭系统。poweroff:关闭计算机电源。
3. 查看内核
uname:显示系统信息。- 参数
-r:显示内核版本。 - 参数
-a:显示所有系统信息。 - 参数
-m:显示机器硬件名称。 - 参数
-p:显示处理器类型。 - 参数
-o:显示操作系统名称。 - 参数
-v:显示内核版本信息。
4. 查看当前用户
whoami:显示当前登录的用户名。
5. 查看主机名
hostname:显示或设置系统的主机名。hostname xxx:将主机名设置为 xxx。hostname -i:显示主机的 IP 地址。hostname -d:显示主机的域名。
6. 查看历史命令
history:显示命令历史记录。history n:显示最近的 n 条命令。
7. 查看网络配置
ifconfig:显示或配置网络接口。ip addr:显示网络接口的 IP 地址信息。
8. 查看文件列表
ls:列出当前目录下的文件和目录。- 参数
-l:以长格式显示文件信息。 等于 ll - 参数
-a:显示所有文件,包括隐藏文件。 - 参数
-h:以人类可读的格式显示文件大小。 - 参数
-R:递归显示子目录内容。 - 参数
-d:显示目录本身而不是其内容。
9. 查看命令路径
which command:显示指定命令的完整路径。
10. 查看 cpu 信息
lscpu:显示 CPU 的详细信息。
11. 帮助 命令
man command:显示指定命令的手册页。command --help:显示指定命令的帮助信息。
12. 创建 目录
mkdir directory_name:创建一个名为 directory_name 的新目录。- 参数
-p:创建多级目录。(递归创建父目录) - 隐藏目录:以 . 开头的目录为隐藏目录。
- 示例:
mkdir .hidden_dir创建一个隐藏目录。 - 带有空格的目录名:使用引号括起来或使用反斜杠转义空格。
- 示例:
mkdir "my folder"或mkdir my\ folder
13. 删除命令
rm file_name:删除指定的文件。- 参数
-r:递归删除目录及其内容。 - 参数
-f:强制删除文件或目录,不提示确认。 - 示例:
rm -rf directory_name删除目录及其所有内容。 - 参数
-d:删除空目录。
14. 通配符
*:匹配任意数量的字符。 比如*.txt可以匹配所有以 .txt 结尾的文件。?:匹配单个字符。比如file?.txt可以匹配 file1.txt、fileA.txt,但不能匹配 file10.txt。[ ]:匹配括号内的任意一个字符。比如[abc]匹配 a、b 或 c。[a-z] 匹配任意小写字母。[0-9] 匹配任意数字。
15. 复制命令
cp source_file destination_file:将 source_file 复制到 destination_file。- 参数
-r:递归复制目录及其内容。 - 覆盖复制
\cp -f source_file destination_file:强制覆盖目标文件而不提示确认。
16. 移动命令
mv source_file destination_file:将 source_file 移动到 destination_file,或重命名文件。
17. 链接命令
- 软链接
ln -s target_file link_name:创建一个指向 target_file 的软链接,名为 link_name。
- 硬链接
ln target_file link_name:创建一个指向 target_file 的硬链接,名为 link_name。
软连接类似于 Windows 系统中的快捷方式,而硬链接则是文件的另一个名称,指向相同的数据块。
18. 查看文件内容
cat file_name:显示文件的全部内容。- 参数
-n:显示行号。 less file_name:分页显示文件内容,支持向前和向后翻页。more file_name:分页显示文件内容,只能向前翻页。head -n number file_name:显示文件的前 number 行。tail -n number file_name:显示文件的后 number 行。tail -f file_name:实时查看文件内容的新增部分,常用于查看日志文件。
19. 统计文件
wc file_name:统计文件的行数、字数和字节数。- 参数
-l:只统计行数。 - 参数
-w:只统计字数。 - 参数
-c:只统计字节数。
20. 查找文件
find /path/to/search -options:在指定路径下查找文件或目录。- 参数
-name "filename":按名称查找文件,支持通配符。 - 参数
-iname "filename":按名称查找文件,忽略大小写,支持通配符。 - 参数
-type:指定查找的文件类型(如 f 表示文件,d 表示目录 ,l 表示快捷方式)。 - 参数
-size:按文件大小查找文件。 - 参数
-mtime:按修改时间查找文件。 - 参数
-user:按文件所有者查找文件。
21. 归档命令
四种常见归档格式:tar、gzip、bzip2、xz
tar 仅归档,不压缩
gzip 压缩率较低,但速度快
bzip2 压缩率较高,但速度较慢
xz 压缩率最高,但速度最慢
一般就用 gzip 就行了,兼顾速度和压缩率
-
创建 tar 包:
tar -cvf archive_name.tar /path/to/directory_or_file -
解压 tar 包:
tar -xvf archive_name.tar -
创建 gzip 压缩包:
tar -czvf archive_name.tar.gz /path/to/directory_or_file -
解压 gzip 压缩包:
tar -xzvf archive_name.tar.gz -
创建 bzip2 压缩包:
tar -cjvf archive_name.tar.bz2 /path/to/directory_or_file -
解压 bzip2 压缩包:
tar -xjvf archive_name.tar.bz2 -
创建 xz 压缩包:
tar -cJvf archive_name.tar.xz /path/to/directory_or_file -
解压 xz 压缩包:
tar -xJvf archive_name.tar.xz -
查看压缩包内容:
tar -tvf archive_name.tar(适用于所有格式) -
解压到指定目录:
tar -xvf archive_name.tar -C /path/to/destination
22. 创建用户
useradd username:创建一个新用户。- 参数
-d /home/username:指定用户的主目录。 - 参数
-u uid:指定用户的 UID。 - 参数
-s /bin/bash:指定用户的默认 shell。 - 参数
-G group1,group2:将用户添加到指定的附加组。
关键文件位置
- 用户信息文件:/etc/passwd
- 用户密码文件:/etc/shadow
23. 修改用户
usermod options username:修改现有用户的信息。- 参数
-d /new/home/username:更改用户的主目录。 - 参数
-u new_uid:更改用户的 UID。 - 参数
-s /bin/zsh:更改用户的默认 shell。 - 参数
-G group1,group2:更改用户的附加组
24. 删除用户
userdel username:删除指定用户。- 参数
-r:删除用户的主目录和邮件目录。
25. 修改密码
- 交互式 修改密码:
passwd username,系统会提示输入新密码。 - 非交互式 修改密码:
echo "username:new_password" | chpasswd或者echo "new_password" | passwd --stdin username(某些系统不支持 --stdin 选项)。
26. 切换用户
su - username:切换到指定用户的环境。su -:切换到 root 用户的环境。sudo command:以超级用户权限执行指定命令。
27. 创建用户组
groupadd groupname:创建一个新用户组。
28. 将用户添加到用户组
gpasswd -a tom groupname # 添加用户至组
gpasswd -d tom groupname # 从组中删除
gpasswd -A bob groupname # 设置 bob 为组管理员
gpasswd -M "tom,alice" groupname # 批量设置组成员
gpasswd -M "" groupname # 清空组成员
或者用 usermod -aG groupname username 29. 删除用户组
关键文件位置
- 组信息文件:/etc/group
- 组的管理文件:/etc/gshadow
29. 修改权限
chmod options file_name:修改文件或目录的权限。- 参数
+r:添加读权限。 - 参数
+w:添加写权限。 - 参数
+x:添加执行权限。 - 参数
-r:移除读权限。 - 参数
-w:移除写权限。 - 参数
-x:移除执行权限。 - 数字表示法:使用数字表示权限,如
chmod 755 file_name。
递归修改权限:chmod -R options directory_name
30. 修改所有者
chown owner:group file_name:修改文件或目录的所有者和 所属组。
31. 设置 ACL 权限
setfacl -m u:username:rwx file_name:为指定用户设置读、写、执行权限。setfacl -m g:groupname:rwx file_name:为指定用户组设置读、写、执行权限。getfacl file_name:查看文件或目录的 ACL 权限。setfacl -x u:username file_name:移除指定用户的 ACL 权限。setfacl -b file_name:移除文件或目录的所有 ACL 权限。setfacl -R -m u:username:rwx directory_name:递归为目录及其内容设置 ACL 权限。
32. 粘滞位权限
- 设置粘滞位:
chmod o+t directory_name,通常用于公共目录,只有文件所有者或 root 用户可以删除或重命名文件。o 是其他用户的意思,+t 是添加粘滞位权限。
33. SGID 权限
- 设置 SGID 位:
chmod g+s directory_name,新创建的文件将继承目录的组所有权。
34. SUID 权限
- 设置 SUID 位:
chmod u+s file_name,允许用户以文件所有者的权限运行该文件。
35. visudo 命令
visudo:安全地编辑 sudoers 文件,防止语法错误导致系统无法使用 sudo 命令。
36. 硬盘相关
-
lsblk:列出系统中的块设备信息。 -
MBR 分区表:支持最多四个主分区或三个主分区加一个扩展分区。
-
fdisk /dev/nvme0n2:用于创建和管理 MBR 分区表。 -
进去之后是交互式界面,可以输入命令进行分区操作。
-
menu 列出帮助菜单。print 列出当前分区表信息。n 新建分区。d 删除分区。w 保存并退出。q 退出不保存。
-
GPT 分区表:支持最多 128 个主分区,适用于大容量硬盘。
-
parted /dev/nvme0n3:用于创建和管理 GPT 分区表。 -
进去之后是交互式界面,可以输入命令进行分区操作。
-
mklabel gpt:创建 GPT 分区表。 -
mkpart primary ext4 0% 100%:创建一个从开始到结束的主分区,文件系统类型为 ext4。 -
rm partition_number:删除指定分区。 -
print:列出当前分区表信息。 -
quit:退出 parted 工具。 -
格式化分区
mkfs.ext4 /dev/nvme0n2p1:将分区格式化为 ext4 文件系统。 -
查看分区类型
blkid /dev/nvme0n2p1:查看分区的文件系统类型。 -
临时挂载分区
mount /dev/nvme0n2p1 /mnt:将分区挂载到 /mnt 目录下。 -
取消挂载分区
umount /mnt:卸载已挂载的分区。 -
查看已挂载分区
df -h:显示已挂载的文件系统及其使用情况。 -
开机自动挂载 修改 /etc/fstab 文件,添加类似以下内容:
/dev/nvme0n2p1 /mnt ext4 defaults 0 0 -
卸载分区
umount /mnt:卸载已挂载的分区。 -
swap 分区 创建 swap 分区
mkswap /dev/nvme0n2p3:将分区格式化为 swap 类型。 -
启用 swap 分区
swapon /dev/nvme0n2p3:启用 swap 分区。 -
查看 swap 使用情况
swapon -s:显示当前启用的 swap 分区信息。 -
关闭 swap 分区
swapoff /dev/nvme0n2p3:禁用 swap 分区。 -
free -h:显示内存和 swap 的使用情况。 -
开机自动启用 swap 修改 /etc/fstab 文件,添加类似以下内容:
/dev/nvme0n2p3 none swap sw 0 0
37. 物理卷相关(PV)
- 创建物理卷
pvcreate /dev/nvme0n2p4:将分区初始化为物理卷。 - 查看物理卷信息
pvs:显示系统中的物理卷信息。 - 删除物理卷
pvremove /dev/nvme0n2p4:删除指定的物理卷。!不能删除正在使用的物理卷
38. 卷组相关(VG)
- 创建卷组
vgcreate vg_name /dev/nvme0n2p4:创建一个名为 vg_name 的卷组,包含指定的物理卷。 vgcreate vg02 /dev/nvme0n3p[2-3]:创建一个名为 vg02 的卷组,包含 /dev/nvme0n3p2 和 /dev/nvme0n3p3 两个物理卷。- 查看卷组信息
vgs:显示系统中的卷组信息。 - 扩展卷组
vgextend vg_name /dev/nvme0n2p5:将新的物理卷添加到已有的卷组中。 - 示例:
vgextend vg01 /dev/nvme0n2p5:将 /dev/nvme0n2p5 添加到 vg01 卷组中 - 删除卷组
vgremove vg_name:删除指定的卷组。!不能删除正在使用的卷组
39. 逻辑卷相关(LV)
- 创建逻辑卷
lvcreate -L size -n lv_name vg_name:在指定的卷组中创建一个逻辑卷。 - 示例:
lvcreate -L 10G -n lv01 vg01:在 vg01 卷组中创建一个名为 lv01 的 10GB 逻辑卷。 - 查看逻辑卷信息
lvs:显示系统中的逻辑卷信息 mkfs.xfs /dev/vg01/lv01:将逻辑卷格式化为 xfs 文件系统。- 挂载逻辑卷
mount /dev/vg01/lv01 /mnt:将逻辑卷挂载到 /mnt 目录下。 - 扩展逻辑卷
lvextend -L +size /dev/vg_name/lv_name:扩展逻辑卷的大小。 - 示例:
lvextend -L +5G /dev/vg01/lv01:将 lv01 逻辑卷扩展 5GB。 - 移除逻辑卷
lvremove /dev/vg_name/lv_name:删除指定的逻辑卷。!不能删除正在挂载使用的逻辑卷
40. 扩容根目录
- 查看根目录所在的逻辑卷
df -h /:显示根目录的挂载信息。 - 扩展根目录所在的逻辑卷
lvextend -L +size /dev/vg_name/lv_name:扩展根目录所在的逻辑卷。
41. 软件包(RPM)
rpm -qa:列出所有已安装的软件包。rpm -q package_name:查询指定软件包是否已安装。rpm -qi package_name:显示指定软件包的详细信息。rpm -qf /path/to/file:查询文件所属的软件包。rpm -ivh package_file.rpm:安装指定的软件包。rpm -e package_name:卸载指定的软件包。rpm -Uvh package_file.rpm:升级指定的软件包。
42. 软件包(YUM)
- /etc/yum.repos.d/ 目录下存放 YUM 仓库配置文件。
yum list:列出所有可用的软件包。yum list nginx:查询 nginx 软件包的信息。yum search keyword:搜索包含关键字的软件包。yum install package_name:安装指定的软件包。yum remove package_name:卸载指定的软件包。yum update package_name:升级指定的软件包。yum update:升级所有已安装的软件包。yum clean all:清理 YUM 缓存。yum repoinfo:显示已配置的 YUM 仓库信息。
43. 修改 ip 地址
nmcli connection show:显示所有网络连接。nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.90.10/24 ipv4.gateway 192.168.90.2 autoconnect yes:修改指定连接的 IP 地址、子网掩码和网关,并设置为自动连接。nmcli connection up ens160:启用指定的网络连接。nmcli connection down ens160:禁用指定的网络连接。- 改完记得改 /etc/resolv.conf 文件,添加 DNS 服务器地址,比如
nameserver 192.168.90.2。 - 或者直接去 vim /etc/NetworkManager/system-connections/ens160.nmconnection 文件里改,改完重启 NetworkManager 服务
systemctl restart NetworkManager。
44. 修改网关
route -n:查看当前路由表。ip route:查看当前路由信息。route add default gw 192.168.90.2:添加默认网关。route del default gw 192.168.90.2:删除默认网关。
45. ssh 服务
- 安装 ssh 服务
yum install -y openssh-server:安装 OpenSSH 服务器。 - 启动 ssh 服务
systemctl start sshd:启动 SSH 服务。 - 设置开机自启
systemctl enable sshd:设置 SSH 服务为开机自启。 - 查看 ssh 服务状态
systemctl status sshd:查看 SSH 服务的运行状态。 - 修改 ssh 配置文件
vim /etc/ssh/sshd_config:编辑 SSH 服务的配置文件。 - 重启 ssh 服务
systemctl restart sshd:重启 SSH 服务以应用配置更改。 - 使用 ssh 连接远程主机
ssh username@hostname_or_ip:通过 SSH 连接到远程主机。
46. scp 命令
- 从本地复制文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/directory。 - 从远程主机复制文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory。 - 递归复制目录
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory。
47. 私钥公钥
- 生成密钥对
ssh-keygen -t rsa -b 2048:生成 RSA 密钥对,密钥长度为 2048 位。 - 将公钥复制到远程主机
ssh-copy-id username@remote_host:将本地公钥复制到远程主机的授权密钥列表中,实现免密钥登录。 - 手动复制公钥:将生成的公钥内容(通常位于 ~/.ssh/id_rsa.pub)添加到远程主机的 ~/.ssh/authorized_keys 文件中。
48. 远程同步
- 使用 rsync 同步本地目录到远程主机
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/directory/。 - 使用 rsync 同步远程主机目录到本地
rsync -avz username@remote_host:/path/to/remote/directory/ /path/to/local/directory/。


