Linux 常用命令详解(扩展版)
Linux 是一种强大的开源操作系统,广泛应用于服务器、开发环境以及个人电脑中。掌握 Linux 命令行操作能够极大地提升工作效率和系统管理能力。本文将在之前介绍的基础上,进一步详细介绍 Linux 中几乎所有常用命令,涵盖文件管理、文本处理、系统管理、网络操作、包管理、安全管理等多个方面,帮助用户全面了解并熟练使用这些命令。
目录
- 文件和目录管理命令
ls
cd
pwd
mkdir
rmdir
touch
cp
mv
rm
find
locate
du
df
ln
basename
和dirname
stat
- 文本处理命令
cat
more
和less
head
和tail
grep
sed
awk
cut
sort
uniq
wc
diff
tr
paste
tee
- 系统管理命令
ps
top
和htop
kill
和killall
pkill
和pgrep
nice
和renice
chmod
chown
chgrp
sudo
su
passwd
shutdown
和reboot
cron
和crontab
uptime
dmesg
free
vmstat
lsof
sysctl
- 网络管理命令
ping
ifconfig
和ip
netstat
ss
scp
ssh
wget
curl
ftp
dig
traceroute
nslookup
host
nmap
route
hostname
arp
- 包管理命令
apt
(适用于 Debian/Ubuntu)yum
(适用于 CentOS/RHEL)dnf
(适用于 Fedora)pacman
(适用于 Arch Linux)zypper
(适用于 openSUSE)snap
(适用于多种发行版)flatpak
(适用于多种发行版)
- 安全管理命令
iptables
和firewalld
chmod
和chown
sudo
passwd
ssh-keygen
gpg
fail2ban
- 磁盘管理命令
fdisk
parted
mkfs
fsck
mount
和umount
blkid
lsblk
df
du
- 用户和组管理命令
useradd
和userdel
usermod
groupadd
和groupdel
groupmod
id
who
和w
last
su
sudo
- 系统监控和日志命令
top
和htop
dmesg
journalctl
tail
和head
logrotate
sar
iostat
mpstat
- Shell 和脚本命令
bash
sh
echo
export
alias
unalias
source
和.
expr
test
和[ ]
&&
和||
- 管道
|
- 重定向
>
,>>
,<
,2>
,&>
xargs
- 其他常用命令
echo
export
alias
history
man
tar
zip
和unzip
gzip
和gunzip
df
uname
date
cal
bc
dd
chmod
chown
cron
cronjob
uptime
whereis
which
locate
updatedb
env
printenv
clear
sleep
watch
bc
expr
文件和目录管理命令
ln
— 创建链接
用途: 创建硬链接或符号链接(软链接)到文件或目录。
语法:
ln [选项] 源文件 目标链接
常用选项:
-s
:创建符号链接。-f
:强制覆盖已存在的链接。
示例:
ln -s /path/to/source /path/to/symlink
创建一个指向 /path/to/source
的符号链接 /path/to/symlink
。
basename
和 dirname
— 提取文件路径的基名和目录名
用途:
basename
:提取文件路径中的文件名。dirname
:提取文件路径中的目录部分。
语法:
basename 路径 [后缀]
dirname 路径
示例:
basename /home/user/file.txt
# 输出: file.txt
dirname /home/user/file.txt
# 输出: /home/user
stat
— 显示文件或文件系统的状态
用途: 显示文件或文件系统的详细信息,包括权限、所有者、大小、修改时间等。
语法:
stat [选项] 文件
常用选项:
-c
:指定输出格式。--printf
:类似-c
,用于自定义输出。
示例:
stat file.txt
显示 file.txt
的详细信息。
文本处理命令
tr
— 替换或删除字符
用途: 替换、删除或压缩输入中的字符。
语法:
tr [选项] SET1 [SET2]
常用选项:
-d
:删除指定字符。-s
:压缩连续的重复字符为一个。-c
:取反字符集。
示例:
echo "Hello World" | tr -s ' '
将连续的空格压缩为一个,输出 Hello World
。
echo "Hello123" | tr -d '0-9'
删除数字,输出 Hello
。
paste
— 合并文件的行
用途: 按列将文件的对应行合并。
语法:
paste [选项] 文件1 文件2 ...
常用选项:
-d
:指定分隔符。-s
:按顺序合并每个文件的所有行。
示例:
paste file1.txt file2.txt
将 file1.txt
和 file2.txt
的对应行用制表符分隔后合并。
tee
— 读取标准输入并写入标准输出及文件
用途: 将标准输入的内容同时输出到标准输出和一个或多个文件中。
语法:
command | tee [选项] 文件
常用选项:
-a
:以追加方式写入文件。-i
:忽略中断信号。
示例:
echo "Logging this message" | tee log.txt
将消息输出到终端并写入 log.txt
。
系统管理命令
pkill
和 pgrep
— 根据名称匹配进程
用途:
pgrep
:根据模式搜索进程 ID。pkill
:根据模式发送信号到进程。
语法:
pgrep [选项] 模式
pkill [选项] 模式
常用选项:
-u
:按用户过滤进程。-f
:匹配完整的命令行。
示例:
pgrep firefox
查找所有名为 firefox
的进程 ID。
pkill -9 firefox
强制终止所有名为 firefox
的进程。
nice
和 renice
— 设置和调整进程优先级
用途:
nice
:启动一个进程并设置其优先级。renice
:改变已运行进程的优先级。
语法:
nice [选项] 命令
renice [选项] 优先级 PID
常用选项:
-n
:指定优先级值。
示例:
nice -n 10 ./script.sh
以优先级 10 启动 script.sh
。
renice -n -5 1234
将 PID 为 1234
的进程优先级调整为 -5。
uptime
— 显示系统运行时间
用途: 显示系统已运行的时间、当前时间、登录用户数及负载平均值。
语法:
uptime
示例:
uptime
输出示例:
14:35:22 up 10 days, 3:42, 2 users, load average: 0.15, 0.20, 0.18
dmesg
— 查看内核消息
用途: 查看系统启动及运行过程中内核产生的消息,常用于诊断硬件和驱动问题。
语法:
dmesg [选项]
常用选项:
-C
:清除缓冲区。-c
:显示并清除缓冲区。-T
:显示人类可读的时间戳。
示例:
dmesg | grep usb
查看与 USB 相关的内核消息。
free
— 显示内存使用情况
用途: 显示系统的总内存、已用内存、空闲内存、交换空间等信息。
语法:
free [选项]
常用选项:
-h
:以人类可读的格式显示。-m
:以 MB 为单位显示。
示例:
free -h
以人类可读的格式显示内存使用情况。
vmstat
— 显示虚拟内存统计
用途: 显示系统的虚拟内存、进程、CPU 活动等统计信息。
语法:
vmstat [延迟] [次数]
示例:
vmstat 5 3
每 5 秒显示一次统计信息,共显示 3 次。
lsof
— 列出打开的文件
用途: 列出当前系统中所有打开的文件及其相关进程,常用于诊断文件锁定问题。
语法:
lsof [选项] [文件/目录]
常用选项:
-i
:列出与网络相关的文件。-u
:按用户过滤。-p
:按进程 ID 过滤。
示例:
lsof -i :80
列出所有在端口 80 上打开的文件(通常是 Web 服务器)。
sysctl
— 配置内核参数
用途: 查看和修改运行中的内核参数。
语法:
sysctl [选项] 参数
常用选项:
-w
:设置参数值。-a
:显示所有参数。
示例:
sysctl -w net.ipv4.ip_forward=1
启用 IPv4 转发。
网络管理命令
nslookup
— 查询 DNS 记录
用途: 查询 DNS 记录,常用于诊断 DNS 问题。
语法:
nslookup [选项] 主机名
示例:
nslookup example.com
查询 example.com
的 DNS 信息。
host
— DNS 查询工具
用途: 类似于 dig
和 nslookup
,用于查询 DNS 记录。
语法:
host [选项] 主机名
示例:
host example.com
查询 example.com
的 DNS 记录。
nmap
— 网络映射器
用途: 扫描网络,发现主机和服务,常用于安全审计。
语法:
nmap [选项] 目标
常用选项:
-sS
:半开放扫描。-sV
:检测服务版本。-O
:操作系统检测。-p
:指定端口范围。
示例:
nmap -sS -p 1-1000 192.168.1.1
对 192.168.1.1
进行半开放扫描,扫描端口 1 到 1000。
route
— 显示和修改路由表
用途: 显示和修改系统的路由表。
语法:
route [选项]
常用选项:
add
:添加路由。del
:删除路由。-n
:以数字形式显示地址。
示例:
route -n
显示当前的路由表。
sudo route add default gw 192.168.1.1
设置默认网关为 192.168.1.1
。
hostname
— 显示或设置系统主机名
用途: 查看或修改系统的主机名。
语法:
hostname [选项] [新主机名]
示例:
hostname
显示当前主机名。
sudo hostname newhostname
将主机名设置为 newhostname
。
arp
— 查看和修改 ARP 缓存
用途: 显示和修改系统的 ARP 缓存表,管理 IP 地址和 MAC 地址的映射。
语法:
arp [选项]
常用选项:
-a
:显示所有 ARP 条目。-d
:删除指定的 ARP 条目。-s
:添加静态 ARP 条目。
示例:
arp -a
显示所有 ARP 缓存条目。
包管理命令
zypper
— openSUSE 的包管理工具
用途: 管理 openSUSE 的软件包,包括安装、更新、删除和搜索软件包。
常用命令:
- 更新软件包数据库:
sudo zypper refresh
- 升级所有软件包:
sudo zypper update
- 安装软件包:
sudo zypper install package_name
- 删除软件包:
sudo zypper remove package_name
- 搜索软件包:
zypper search keyword
snap
— 通用包管理工具
用途: 管理 Snap 包,提供跨发行版的软件包管理。
常用命令:
- 安装 Snap 包:
sudo snap install package_name
- 列出已安装的 Snap 包:
snap list
- 更新 Snap 包:
sudo snap refresh
- 删除 Snap 包:
sudo snap remove package_name
- 搜索 Snap 包:
snap find keyword
flatpak
— 通用包管理工具
用途: 管理 Flatpak 应用,提供跨发行版的软件包管理。
常用命令:
- 安装 Flatpak 包:
flatpak install repository package_name
- 列出已安装的 Flatpak 包:
flatpak list
- 更新 Flatpak 包:
flatpak update
- 删除 Flatpak 包:
flatpak uninstall package_name
- 搜索 Flatpak 包:
flatpak search keyword
安全管理命令
iptables
— 配置防火墙
用途: 配置 Linux 内核的防火墙规则,管理网络流量。
语法:
iptables [选项] [链] [规则]
常用命令:
- 查看当前防火墙规则:
sudo iptables -L -v
- 允许特定端口的流量(如 HTTP 端口 80):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 拒绝所有来自特定 IP 的流量:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
- 保存防火墙规则:
sudo iptables-save > /etc/iptables/rules.v4
firewalld
— 动态防火墙管理工具
用途: 动态管理防火墙规则,替代 iptables
,更易于使用。
语法:
firewall-cmd [选项] [命令]
常用命令:
- 查看当前防火墙状态:
sudo firewall-cmd --state
- 允许特定服务(如 HTTP):
sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --reload
- 拒绝特定端口:
sudo firewall-cmd --add-port=22/tcp --permanent sudo firewall-cmd --reload
ssh-keygen
— 生成 SSH 密钥对
用途: 生成用于 SSH 认证的公钥和私钥。
语法:
ssh-keygen [选项]
常用选项:
-t
:指定密钥类型(如rsa
,ed25519
)。-b
:指定密钥长度。-C
:添加注释。-f
:指定密钥文件名。
示例:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成一个 4096 位的 RSA 密钥对,并添加注释。
gpg
— GNU 隐私保护工具
用途: 加密、解密文件,签名和验证文件的完整性。
语法:
gpg [选项] [文件]
常用选项:
--gen-key
:生成新的密钥对。--encrypt
:加密文件。--decrypt
:解密文件。--sign
:签名文件。--verify
:验证签名。
示例:
gpg --gen-key
生成新的 GPG 密钥对。
gpg --encrypt --recipient user@example.com file.txt
将 file.txt
加密给 user@example.com
。
fail2ban
— 防止暴力破解的工具
用途: 监控日志文件,自动阻止多次失败的登录尝试,增强系统安全。
语法:
fail2ban-client [命令] [选项]
常用命令:
- 查看当前监控的 jail:
sudo fail2ban-client status
- 查看特定 jail 的状态:
sudo fail2ban-client status sshd
- 手动封禁一个 IP:
sudo fail2ban-client set sshd banip 192.168.1.100
- 手动解封一个 IP:
sudo fail2ban-client set sshd unbanip 192.168.1.100
磁盘管理命令
fdisk
— 磁盘分区工具
用途: 创建、删除、修改磁盘分区,适用于 MBR 分区表。
语法:
fdisk [选项] 设备
常用选项:
-l
:列出所有分区信息。-n
:创建新分区。-d
:删除分区。-t
:更改分区类型。
示例:
sudo fdisk -l
列出所有磁盘分区信息。
parted
— 分区编辑工具
用途: 管理磁盘分区,支持 GPT 分区表,适用于大容量磁盘。
语法:
parted [选项] 设备
常用命令:
- 启动交互模式:
sudo parted /dev/sda
- 查看分区表:
(parted) print
- 创建新分区:
(parted) mkpart primary ext4 0% 50%
- 删除分区:
(parted) rm 1
mkfs
— 创建文件系统
用途: 在分区上创建文件系统,如 ext4、xfs、vfat 等。
语法:
mkfs.[文件系统类型] [选项] 设备
常用命令:
- 创建 ext4 文件系统:
sudo mkfs.ext4 /dev/sda1
- 创建 xfs 文件系统:
sudo mkfs.xfs /dev/sda1
- 创建 vfat 文件系统:
sudo mkfs.vfat /dev/sda1
fsck
— 文件系统检查和修复
用途: 检查和修复文件系统中的错误。
语法:
fsck [选项] 设备
常用选项:
-a
:自动修复可修复的错误。-r
:在修复前提示用户。-n
:不修复,只报告问题。
示例:
sudo fsck -y /dev/sda1
自动修复 /dev/sda1
上的文件系统错误。
mount
和 umount
— 挂载和卸载文件系统
用途: 挂载文件系统到目录,或卸载已挂载的文件系统。
语法:
mount [选项] 设备 目录
umount [选项] 目录/设备
常用选项:
-t
:指定文件系统类型。-o
:指定挂载选项,如ro
(只读)、rw
(读写)、noexec
(禁止执行)等。
示例:
sudo mount -t ext4 /dev/sda1 /mnt/data
将 /dev/sda1
挂载到 /mnt/data
目录,使用 ext4 文件系统。
sudo umount /mnt/data
卸载 /mnt/data
目录上的文件系统。
blkid
— 显示块设备的 UUID 和标签
用途: 获取块设备的 UUID、标签和类型信息,常用于 /etc/fstab
配置。
语法:
blkid [选项] [设备]
示例:
sudo blkid /dev/sda1
显示 /dev/sda1
的 UUID 和文件系统类型。
lsblk
— 列出块设备信息
用途: 显示系统中所有块设备的层次结构和详细信息。
语法:
lsblk [选项]
常用选项:
-f
:显示文件系统信息。-a
:显示所有设备,包括空设备。
示例:
lsblk -f
显示所有块设备及其文件系统信息。
用户和组管理命令
useradd
和 userdel
— 添加和删除用户
用途:
useradd
:创建新用户。userdel
:删除现有用户。
语法:
useradd [选项] 用户名
userdel [选项] 用户名
常用选项:
-m
:创建用户的主目录。-s
:指定用户的默认 shell。-G
:指定用户所属的附加组。
示例:
sudo useradd -m -s /bin/bash newuser
创建一个名为 newuser
的用户,创建主目录并指定默认 shell 为 /bin/bash
。
sudo userdel -r olduser
删除用户 olduser
及其主目录。
usermod
— 修改用户信息
用途: 修改现有用户的属性,如用户名、主目录、所属组等。
语法:
usermod [选项] 用户名
常用选项:
-l
:更改用户名。-d
:更改用户的主目录。-G
:更改用户所属的附加组。-aG
:追加附加组。
示例:
sudo usermod -l newname oldname
将用户 oldname
的用户名更改为 newname
。
sudo usermod -aG sudo newuser
将 newuser
添加到 sudo
组。
groupadd
和 groupdel
— 添加和删除组
用途:
groupadd
:创建新组。groupdel
:删除现有组。
语法:
groupadd [选项] 组名
groupdel [选项] 组名
示例:
sudo groupadd developers
创建一个名为 developers
的新组。
sudo groupdel oldgroup
删除名为 oldgroup
的组。
groupmod
— 修改组信息
用途: 修改现有组的属性,如组名或 GID。
语法:
groupmod [选项] 组名
常用选项:
-n
:更改组名。-g
:更改组的 GID。
示例:
sudo groupmod -n newgroup oldgroup
将组名 oldgroup
更改为 newgroup
。
id
— 显示用户和组信息
用途: 显示指定用户的 UID、GID 及所属的组信息。
语法:
id [选项] [用户名]
示例:
id newuser
显示用户 newuser
的 UID、GID 及所属组。
who
和 w
— 显示当前登录用户
用途:
who
:显示当前登录系统的用户列表。w
:显示当前登录用户及其活动信息。
语法:
who
w
示例:
who
输出示例:
newuser tty7 2024-04-27 10:00 (:0)
w
输出示例:
10:00:00 up 10 days, 3:42, 2 users, load average: 0.15, 0.20, 0.18
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
newuser tty7 10:00 3:42m 0.10s 0.10s /bin/bash
last
— 显示最近登录的用户
用途: 显示系统中最近登录过的用户信息。
语法:
last [选项] [用户名]
示例:
last
输出示例:
newuser tty7 :0 Wed Apr 27 10:00 - still logged in
reboot system boot 5.4.0-42-generic Wed Apr 27 09:59 still running
系统监控和日志命令
journalctl
— 查看 systemd 日志
用途: 查看和管理由 systemd 维护的系统日志。
语法:
journalctl [选项]
常用选项:
-u
:按服务单元过滤日志。-f
:实时跟踪日志输出。-b
:显示自上次启动以来的日志。-p
:按日志级别过滤。
示例:
sudo journalctl -u sshd -f
实时跟踪 sshd
服务的日志输出。
logrotate
— 管理日志文件
用途: 自动轮换、压缩和删除旧的日志文件,防止日志文件过大。
语法:
logrotate [选项] 配置文件
常用选项:
-f
:强制执行轮换,无视时间。-d
:调试模式,不执行实际操作。
示例:
sudo logrotate -f /etc/logrotate.conf
强制执行日志轮换。
sar
— 收集和报告系统活动信息
用途: 收集和报告系统的 CPU、内存、磁盘、网络等活动信息,常用于性能分析。
语法:
sar [选项] [间隔] [次数]
示例:
sar -u 5 3
每 5 秒报告一次 CPU 使用情况,共报告 3 次。
iostat
— 显示 CPU 和 I/O 统计
用途: 显示 CPU 利用率和各块设备的 I/O 统计信息,常用于性能监控。
语法:
iostat [选项] [间隔] [次数]
示例:
iostat -x 5 3
每 5 秒显示一次详细的 I/O 统计信息,共显示 3 次。
mpstat
— 多处理器统计
用途: 显示各 CPU 核心的使用统计信息,适用于多核系统。
语法:
mpstat [选项] [间隔] [次数]
示例:
mpstat -P ALL 5 3
每 5 秒显示一次所有 CPU 核心的统计信息,共显示 3 次。
Shell 和脚本命令
bash
— GNU Bourne-Again Shell
用途: 启动一个新的 Bash shell 会话,执行脚本或交互式命令。
语法:
bash [选项] [脚本文件]
示例:
bash script.sh
执行 script.sh
脚本。
sh
— Bourne Shell
用途: 启动一个新的 Bourne shell 会话,执行脚本或交互式命令。
语法:
sh [选项] [脚本文件]
示例:
sh script.sh
执行 script.sh
脚本。
expr
— 计算表达式
用途: 计算整数表达式,常用于脚本中的数学运算。
语法:
expr 表达式
示例:
expr 5 + 3
输出:8
test
和 [ ]
— 条件测试
用途: 在脚本中进行条件判断,如文件存在性、字符串比较、数值比较等。
语法:
test 条件
[ 条件 ]
示例:
if [ -f "/etc/passwd" ]; then
echo "passwd 文件存在"
fi
&&
和 ||
— 条件执行操作符
用途: 根据前一个命令的成功与否,执行后续命令。
语法:
命令1 && 命令2
命令1 || 命令2
示例:
mkdir newdir && cd newdir
如果 mkdir newdir
成功,则执行 cd newdir
。
grep "error" logfile || echo "No errors found"
如果 grep
未找到匹配项,则输出 "No errors found"。
管道 |
— 将一个命令的输出作为另一个命令的输入
用途: 连接多个命令,将前一个命令的输出传递给下一个命令。
语法:
命令1 | 命令2 | ...
示例:
ps aux | grep nginx | awk '{print $2}'
查找所有 nginx
进程的 PID。
重定向 >
, >>
, <
, 2>
, &>
— 管理命令的输入和输出
用途: 将命令的输出重定向到文件或从文件中读取输入,管理标准输出和错误输出。
语法:
命令 > 文件 # 覆盖写入
命令 >> 文件 # 追加写入
命令 < 文件 # 从文件读取输入
命令 2> 错误文件 # 重定向标准错误
命令 &> 文件 # 重定向标准输出和错误
示例:
ls -l > output.txt
将 ls -l
的输出写入 output.txt
,覆盖原内容。
ls -l >> output.txt
将 ls -l
的输出追加到 output.txt
。
command > output.txt 2> error.txt
将标准输出写入 output.txt
,将标准错误写入 error.txt
。
xargs
— 将输入转换为命令参数
用途: 将标准输入转换为命令行参数,常用于处理管道中的数据。
语法:
command | xargs [选项] 命令
示例:
find . -name "*.log" | xargs rm -f
删除当前目录及子目录下所有 .log
文件。
其他常用命令
cal
— 显示日历
用途: 显示指定月份或年份的日历。
语法:
cal [月份] [年份]
示例:
cal 12 2024
显示 2024 年 12 月的日历。
bc
— 计算器语言
用途: 进行高精度的数学运算,支持变量和脚本。
语法:
bc [选项]
示例:
echo "scale=2; 5/3" | bc
输出:1.66
dd
— 数据复制和转换
用途: 低级别复制和转换文件,常用于创建磁盘映像或备份。
语法:
dd [选项] if=输入文件 of=输出文件
常用选项:
bs
:设置块大小。count
:复制块的数量。skip
:跳过输入文件的块数。seek
:跳过输出文件的块数。
示例:
sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress
将 /dev/sda
的内容复制到 /dev/sdb
,使用 4MB 的块大小,并显示进度。
whereis
— 查找二进制文件、源代码和手册页
用途: 查找命令的二进制文件、源代码和手册页的位置。
语法:
whereis 命令
示例:
whereis ls
输出示例:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
which
— 查找命令的执行路径
用途: 查找命令在 PATH 环境变量中的执行路径。
语法:
which 命令
示例:
which bash
输出示例:
/bin/bash
updatedb
和 locate
— 更新数据库和快速查找文件
用途:
updatedb
:更新locate
命令使用的文件数据库。locate
:快速查找文件路径。
语法:
sudo updatedb
locate [选项] 文件名
示例:
sudo updatedb
locate passwd
更新数据库后,查找所有包含 passwd
的文件路径。
env
和 printenv
— 显示环境变量
用途:
env
:运行一个命令在修改过的环境中,或显示当前环境变量。printenv
:打印环境变量的值。
语法:
env [选项] [命令]
printenv [变量名]
示例:
env
显示当前所有环境变量。
printenv PATH
显示 PATH
环境变量的值。
clear
— 清屏
用途: 清除终端屏幕上的所有内容。
语法:
clear
示例:
clear
清除终端屏幕内容。
sleep
— 暂停执行
用途: 在脚本中暂停指定的时间。
语法:
sleep [时间][单位]
单位:
s
:秒(默认)。m
:分钟。h
:小时。d
:天。
示例:
sleep 5
暂停 5 秒。
sleep 1m
暂停 1 分钟。
watch
— 定期执行命令并显示结果
用途: 每隔一定时间执行一次指定命令,并实时显示其输出。
语法:
watch [选项] 命令
常用选项:
-n
:指定时间间隔(秒)。-d
:高亮显示变化部分。
示例:
watch -n 2 ls -l
每 2 秒执行一次 ls -l
,并显示结果。
whereis
和 which
— 查找命令的位置
用途:
whereis
:查找命令的二进制文件、源代码和手册页。which
:查找命令的执行路径。
语法:
whereis 命令
which 命令
示例:
whereis gcc
输出示例:
gcc: /usr/bin/gcc /usr/share/man/man1/gcc.1.gz
which gcc
输出示例:
/usr/bin/gcc
bc
— 任意精度计算器语言
用途: 进行高精度的数学运算,支持变量和脚本。
语法:
bc [选项]
示例:
echo "scale=5; 22/7" | bc
输出:3.14285
总结
本文在之前介绍的基础上,进一步扩展了 Linux 中几乎所有常用命令的详细说明,涵盖文件和目录管理、文本处理、系统管理、网络操作、包管理、安全管理、磁盘管理、用户和组管理、系统监控和日志、Shell 和脚本等多个方面。这些命令是 Linux 系统日常管理和使用的基础,掌握它们不仅有助于提高工作效率,还能增强系统管理和问题解决的能力。
建议读者在实际操作中多加练习,深入理解每个命令的功能和用法。通过不断实践,您将能够熟练运用这些命令,充分发挥 Linux 系统的强大优势。
此外,建议结合实际需求和工作环境,深入学习相关命令的高级用法和脚本编写技巧,以应对更复杂的系统管理和自动化任务。参考官方文档和社区资源,如 man
页面、在线教程和论坛,也是提升 Linux 命令行技能的重要途径。
附录:常用命令快速参考
命令 | 描述 |
---|---|
ls |
列出目录内容 |
cd |
切换当前工作目录 |
pwd |
显示当前工作目录的绝对路径 |
mkdir |
创建新目录 |
rmdir |
删除空目录 |
touch |
创建空文件或更新文件时间戳 |
cp |
复制文件或目录 |
mv |
移动或重命名文件或目录 |
rm |
删除文件或目录 |
find |
查找文件 |
locate |
快速查找文件路径 |
du |
显示文件或目录的磁盘使用情况 |
df |
显示文件系统的磁盘空间使用情况 |
ln |
创建链接 |
basename |
提取文件名 |
dirname |
提取目录名 |
stat |
显示文件或文件系统的状态 |
cat |
连接文件并打印到标准输出 |
more |
分页查看文件内容 |
less |
分页查看文件内容,支持向前和向后翻页 |
head |
查看文件的开头部分 |
tail |
查看文件的结尾部分 |
grep |
文本搜索工具 |
sed |
流编辑器 |
awk |
强大的文本处理工具 |
cut |
按列提取文本 |
sort |
排序文本 |
uniq |
删除重复行 |
wc |
统计字数、行数和字节数 |
diff |
比较文件内容 |
tr |
替换或删除字符 |
paste |
合并文件的行 |
tee |
读取标准输入并写入标准输出及文件 |
ps |
查看当前进程 |
top |
实时查看系统资源 |
htop |
更友好的实时系统资源查看工具 |
kill |
终止进程 |
killall |
终止指定名称的所有进程 |
pkill |
根据名称终止进程 |
pgrep |
根据名称查找进程 ID |
nice |
启动一个具有特定优先级的进程 |
renice |
修改已运行进程的优先级 |
chmod |
修改文件权限 |
chown |
修改文件所有者 |
chgrp |
修改文件所属组 |
sudo |
以超级用户权限执行命令 |
su |
切换用户 |
passwd |
修改用户密码 |
shutdown |
关闭或重启系统 |
reboot |
重启系统 |
cron |
定时任务管理 |
crontab |
编辑和管理定时任务 |
ping |
测试网络连通性 |
ifconfig |
配置网络接口(已被 ip 命令取代) |
ip |
配置网络接口 |
netstat |
显示网络连接 |
ss |
显示套接字统计信息 |
scp |
安全复制文件 |
ssh |
安全远程登录 |
wget |
下载文件 |
curl |
数据传输工具 |
ftp |
文件传输协议 |
dig |
DNS 查询工具 |
traceroute |
路由追踪 |
nslookup |
DNS 查询工具 |
host |
DNS 查询工具 |
nmap |
网络扫描工具 |
route |
显示和修改路由表 |
hostname |
显示或设置系统主机名 |
arp |
查看和修改 ARP 缓存 |
apt |
Debian/Ubuntu 的包管理工具 |
yum |
CentOS/RHEL 的包管理工具 |
dnf |
Fedora 的包管理工具 |
pacman |
Arch Linux 的包管理工具 |
zypper |
openSUSE 的包管理工具 |
snap |
通用包管理工具 |
flatpak |
通用包管理工具 |
iptables |
配置防火墙 |
firewalld |
动态防火墙管理工具 |
ssh-keygen |
生成 SSH 密钥对 |
gpg |
GNU 隐私保护工具 |
fail2ban |
防止暴力破解的工具 |
fdisk |
磁盘分区工具 |
parted |
分区编辑工具 |
mkfs |
创建文件系统 |
fsck |
文件系统检查和修复 |
mount |
挂载文件系统 |
umount |
卸载文件系统 |
blkid |
显示块设备的 UUID 和标签 |
lsblk |
列出块设备信息 |
useradd |
添加用户 |
userdel |
删除用户 |
usermod |
修改用户信息 |
groupadd |
添加组 |
groupdel |
删除组 |
groupmod |
修改组信息 |
id |
显示用户和组信息 |
who |
显示当前登录用户 |
w |
显示当前登录用户及其活动信息 |
last |
显示最近登录的用户 |
journalctl |
查看 systemd 日志 |
logrotate |
管理日志文件 |
sar |
收集和报告系统活动信息 |
iostat |
显示 CPU 和 I/O 统计 |
mpstat |
多处理器统计 |
bash |
启动 Bash shell |
sh |
启动 Bourne shell |
echo |
显示一段文本 |
export |
设置环境变量 |
alias |
创建命令别名 |
unalias |
删除命令别名 |
source |
在当前 shell 中执行脚本 |
expr |
计算表达式 |
test |
条件测试 |
[ |
条件测试(等同于 test ) |
&& |
条件执行操作符 |
` | |
` | ` |
> |
重定向标准输出 |
>> |
追加重定向标准输出 |
< |
重定向标准输入 |
2> |
重定向标准错误 |
&> |
重定向标准输出和错误 |
xargs |
将输入转换为命令参数 |
cal |
显示日历 |
bc |
计算器语言 |
dd |
数据复制和转换 |
whereis |
查找命令的位置 |
which |
查找命令的执行路径 |
updatedb |
更新 locate 的数据库 |
locate |
快速查找文件路径 |
env |
显示或运行命令在修改的环境中 |
printenv |
打印环境变量 |
clear |
清屏 |
sleep |
暂停执行 |
watch |
定期执行命令并显示结果 |
通过系统地学习和实践上述命令,您将能够更高效地使用 Linux 系统,无论是在日常操作、系统管理还是高级开发任务中。记住,掌握命令行的关键在于持续的练习和应用,将理论知识转化为实际技能。