Shell 命令汇总
1.目录操作
-
ls
:列出目录内容。使用-l
选项以长列表格式显示详细信息,使用-a
显示隐藏文件。
1 | ls -la |
-
cd
:更改目录。
1 | cd /path/to/directory |
-
pwd
:显示当前工作目录的路径。
1 | pwd |
-
mkdir
:创建一个新目录。
1 | mkdir new_directory |
-
rmdir
:删除空目录。
1 | rmdir empty_directory |
-
rm
:删除文件或目录。使用-r
递归删除目录及其内容,使用-f
强制删除无需确认。
1 | rm -rf /path/to/directory |
-
cp
:复制文件或目录。使用-r
复制目录。
1 | cp source_file target_file |
-
mv
:移动或重命名文件或目录。
1 | mv old_name new_name |
-
touch
:创建一个空文件或者更新现有文件的时间戳。
1 | touch filename |
-
rename
:批量重命名文件。
1 | rename 's/old/new/' *.txt |
2.文件操作
-
cat
:查看文件内容或将多个文件合并输出。
1 | cat filename |
-
more
和less
:分页查看文件内容。less
比more
功能更强大,支持向前和向后翻页。
1 | less filename |
-
tail
:查看文件末尾的内容。使用-f
可以实时跟踪文件的更新。
1 | tail -f filename |
-
head
:查看文件开头的内容。
1 | head filename |
-
grep
:搜索文本并打印匹配的行。使用-i
忽略大小写,使用-r
递归搜索。
1 | grep 'pattern' filename |
-
sed
:流编辑器,可以对文本进行过滤和替换。
1 | sed 's/old/new/' filename |
-
awk
:文本模式扫描和处理语言,用于复杂的文本处理。
1 | awk '{print $1}' filename |
-
nano
,vi
,vim
,emacs
:文本编辑器。
1 | nano filename |
-
find
:在目录树中查找文件。
1 | find /path/to/search -name "filename" |
-
locate
:使用预建的数据库快速查找文件的位置(数据库通过updatedb
命令更新)。
1 | locate filename |
3.系统信息
-
top
:实时显示系统进程和资源使用情况。
1 | top |
-
ps
:显示当前运行的进程。
1 | ps aux |
-
kill
:终止进程。使用-9
强制终止。
1 | kill -9 PID |
-
df
:查看磁盘使用情况。
1 | df -h |
-
du
:查看文件或目录的磁盘使用量。
1 | du -sh /path/to/directory |
-
free
:查看内存使用情况。
1 | free -m |
-
uptime
:显示系统运行时间和负载。
1 | uptime |
-
uname
:显示系统信息。使用-a
显示所有信息。
1 | uname -a |
-
who
:显示当前登录的用户。
1 | who |
-
w
:显示当前登录用户和他们正在做的事情。
1 | w |
-
hostname
:显示或设置系统的主机名。
1 | hostname |
4.网络操作
-
ping
:检查与远程服务器的连接。
1 | ping example.com |
-
ifconfig
/ip addr
:显示网络接口的配置信息。
1 | ifconfig |
-
netstat
:显示网络连接、路由表、接口统计等网络信息。
1 | netstat -tulpn |
-
ssh
:远程登录到其他计算机。
1 | ssh [email protected] |
-
scp
:安全地复制文件到远端服务器或从远端服务器复制文件。
1 | scp local_file [email protected]:remote_file |
-
wget
/curl
:从网络上下载文件。
1 | wget http://example.com/file |
-
traceroute
/tracepath
:显示数据包到达主机所经过的路由。
1 | traceroute example.com |
-
dig
:查询 DNS 名称服务器信息。
1 | dig example.com |
-
nslookup
:查询域名系统以获取域名或 IP 地址对应的信息。
1 | nslookup example.com |
-
route
:显示和操作 IP 路由表。
1 | route -n |
-
iptables
:配置 Linux 内核防火墙。
1 | iptables -L |
-
httpd
/apache2
:Apache HTTP 服务器。
1 | systemctl start apache2 |
-
nginx
:高性能的 HTTP 和反向代理服务器。
1 | systemctl start nginx |
-
ftp
:文件传输协议客户端。
1 | ftp ftp.example.com |
-
sftp
:SSH 文件传输协议,安全地传输文件。
1 | sftp [email protected] |
5.压缩操作
-
tar
:创建和解压 tar 归档文件。
1 | tar cvf archive_name.tar /path/to/directory |
-
gzip
/gunzip
:压缩或解压缩 gzip 文件。
1 | gzip filename |
-
zip
/unzip
:创建和解压 zip 文件。
1 | zip archive_name.zip file1 file2 |
-
bzip2
/bunzip2
:压缩或解压缩 bzip2 文件。
1 | bzip2 filename |
6.管道和重定向
-
|
:管道,将一个命令的输出作为另一个命令的输入。
1 | cat file.txt | grep "search_term" |
-
>
:重定向标准输出到文件,覆盖文件内容。
1 | echo "Hello, World!" > file.txt |
-
>>
:重定向标准输出到文件,附加在文件末尾。
1 | echo "Hello, World!" >> file.txt |
-
<
:将文件内容作为命令的标准输入。
1 | grep "search_term" < file.txt |
-
2>
:重定向标准错误到文件。
1 | command 2> error.log |
-
&>
:重定向标准输出和标准错误到同一个文件。
1 | command &> output.log |
-
tee
:读取标准输入的数据,并同时写入到标准输出和一个或多个文件中,常与管道一起使用。
1 | command | tee output.txt |
7.包管理
-
dpkg
:Debian 包管理工具,用于安装、构建、删除和管理 Debian 包。
1 | dpkg -i package.deb |
-
rpm
:RPM 包管理工具,用于安装、卸载、查询和更新 RPM 包。
1 | rpm -ivh package.rpm |
8.权限管理
-
sudo
:以超级用户(或其他用户)的身份执行命令。
1 | sudo apt-get update |
-
su
:切换当前用户到另一个用户。
1 | su - username |
-
useradd
/adduser
:创建新的系统用户。
1 | useradd new_user |
-
usermod
:修改用户账号属性。
1 | usermod -aG groupname username |
-
passwd
:更改用户密码。
1 | passwd username |
-
groups
:显示用户所属的所有组。
1 | groups username |
-
chgrp
:更改文件或目录的群组所有权。
1 | chgrp groupname filename |
-
setfacl
:设置文件访问控制列表(ACL),提供比传统权限更详细的权限设置。
1 | setfacl -m u:username:rwx file |
-
getfacl
:获取文件的访问控制列表。
1 | getfacl file |
-
chmod
:改变文件或目录的权限。
1 | chmod 755 filename |
-
chown
:改变文件或目录的所有者。
1 | chown username:groupname filename |
9.系统管理
-
apt-get
,yum
,dnf
,pacman
:不同的Linux发行版使用不同的包管理器来安装、更新和删除软件包。
1 | apt-get install package_name |
-
service
:在系统上启动、停止、重启和管理服务。
1 | service service_name start |
-
systemctl
:控制 systemd 系统和服务管理器。
1 | systemctl start service_name |
-
crontab
:安排定时任务。
1 | crontab -e |
-
journalctl
:查看由 systemd 管理的系统和服务日志。
1 | journalctl -u service_name |
-
dmesg
:显示或控制内核环形缓冲区消息。
1 | dmesg | grep something |
-
logrotate
:自动轮转、压缩、删除和邮寄系统日志文件。
1 | logrotate /etc/logrotate.conf |
-
syslog
/rsyslog
/syslog-ng
:处理系统日志的守护进程。
1 | service rsyslog status |
-
fsck
:检查和修复 Linux 文件系统。
1 | fsck /dev/sda1 |
-
testdisk
:强大的免费数据恢复软件。
1 | testdisk /dev/sda |
-
photorec
:与 testdisk 相关的工具,用于恢复丢失的文件。
1 | photorec /dev/sda |
-
grub
:GNU GRUB 是一个启动加载程序,用于在多操作系统中管理引导过程。
1 | update-grub |
-
init
/telinit
:init 是所有进程的父进程,用于控制系统的运行级别。
1 | telinit 3 |
10.硬件管理
-
fdisk
:磁盘分区工具。
1 | fdisk /dev/sdx |
-
mkfs
:在分区上创建文件系统。
1 | mkfs -t ext4 /dev/sdx1 |
-
mount
/umount
:挂载或卸载文件系统。
1 | mount /dev/sdx1 /mnt |
-
lscpu
:显示 CPU 架构信息。
1 | lscpu |
-
lsblk
:列出所有可用的块设备。
1 | lsblk |
-
lspci
:列出所有 PCI 设备。
1 | lspci |
-
lsusb
:列出 USB 设备。
1 | lsusb |
-
dmidecode
:提取硬件系统组件的信息,如序列号和固件版本。
1 | dmidecode |
11.进程管理
-
bg
:将一个在后台暂停的作业继续执行。
1 | bg %job_id |
-
fg
:将后台中的作业调至前台继续运行。
1 | fg %job_id |
-
jobs
:显示当前会话中的所有作业及其状态。
1 | jobs |
-
nohup
:运行命令,即使退出登录也不会中断。
1 | nohup command & |
-
screen
/tmux
:使用虚拟终端,允许用户在单个终端窗口中多次登录会话。
1 | screen |
12.脚本编写和执行
-
bash
/sh
:Shell 脚本解释器,用于执行 Shell 脚本。
1 | bash script.sh |
-
cron
:time-based 作业调度器,用于自动运行脚本和命令。
1 | crontab -l |
-
at
:用于安排一次性任务。
1 | at 10:30 PM |
-
watch
:周期性地执行命令,并显示输出。
1 | watch -n 5 'ls -l /path/to/directory' |
-
alias
:创建命令别名简化命令输入。
1 | alias ll='ls -la' |
13.系统监控和性能
-
iostat
:报告 CPU 统计和所有块设备的 I/O 统计。
1 | iostat |
-
vmstat
:报告虚拟内存统计。
1 | vmstat |
-
htop
:交互式进程查看器,类似于top
,但提供更多信息和更好的用户界面。
1 | htop |
-
lsof
:列出被进程打开的文件。
1 | lsof |
-
strace
:跟踪系统调用和信号。
1 | strace -p PID |
-
tcpdump
:抓取网络上的数据包。
1 | tcpdump -i eth0 |
-
nmap
:网络探测和安全审核。
1 | nmap -A target_host |
-
nice
/renice
:调整程序运行的优先级。
1 | nice -n 10 command |
-
ionice
:设置程序访问磁盘的优先级。
1 | ionice -c 3 -p PID |
-
tune2fs
:调整可调文件系统参数。
1 | tune2fs -l /dev/sda1 |
14.文本处理
-
sort
:对文本文件中的行进行排序。
1 | sort filename |
-
uniq
:报告或省略重复的行,常用于sort
命令之后。
1 | sort filename | uniq |
-
cut
:移除文件中的部分字段。
1 | cut -d',' -f1 filename |
-
paste
:合并两个或多个文件的行。
1 | paste file1 file2 |
-
join
:在两个文件中,将含有相同字段的行连接起来。
1 | join file1 file2 |
-
tr
:替换或删除字符。
1 | cat file.txt | tr '[:lower:]' '[:upper:]' |
-
nl
:给文件加上行号。
1 | nl file.txt |
-
wc
:统计文件的行、词和字符数。
1 | wc filename |
15.加密和备份
-
openssl
:强大的加密工具,用于创建私钥、证书签名请求(CSR)、证书和其他。
1 | openssl genrsa -out private.key 2048 |
-
gpg
:GNU Privacy Guard,用于加密和签名数据。
1 | gpg --encrypt --recipient [email protected] file |
-
ssh-keygen
:用于生成 SSH 密钥对。
1 | ssh-keygen -t rsa |
-
fail2ban
:防止暴力破解的工具,它监视日志文件并基于配置的规则封禁可疑的 IP 地址。
1 | fail2ban-client status |
-
rsync
:用于备份和同步文件和目录。
1 | rsync -a /path/to/source /path/to/destination |
-
dd
:用于复制和转换原始磁盘数据。
1 | dd if=/dev/sda of=/path/to/backup.img |
-
tar
:除了创建和解压归档文件,tar
也常用于备份。
1 | tar cvpzf backup.tar.gz /path/to/directory |
16.虚拟化和容器
-
docker
:容器化平台,用于开发、运输和运行应用。
1 | docker run image_name |
-
virsh
:命令行工具,用于管理 KVM 和 Xen 虚拟机。
1 | virsh list --all |
-
vagrant
:构建和维护虚拟化环境的命令行工具。
1 | vagrant up |
17.版本控制系统
-
git
:分布式版本控制系统,用于跟踪和协调源代码变更。
1 | git clone https://github.com/user/repo.git |
-
svn
:集中式版本控制系统。
1 | svn checkout http://example.com/svn/repo/trunk |
18.编程和开发工具
-
make
:自动化编译程序,通常与Makefile
文件一起使用。
1 | make |
-
gcc
:GNU 编译器集合,用于编译 C 和 C++ 程序。
1 | gcc -o output source.c |
-
gdb
:GNU 调试器,用于调试程序。
1 | gdb ./program |