以下是完整的 Linux 命令大全,适用于 Debian、Ubuntu 及其衍生系统,涵盖系统管理、文件操作、磁盘管理、用户管理、网络调试、安全、进程管理等多个方面。
目录
- 基本命令
- 关机与重启
- 文件和目录管理
- 文件搜索
- 挂载文件系统
- 磁盘空间管理
- 用户和群组管理
- 文件和目录权限
- 文件的特殊属性
- 打包和压缩文件
- [DEB 包管理](#DEB 包管理)
- 查看文件内容
- 文本处理
- 字符设置和文件格式转换
- 文件系统分析
- 初始化文件系统
- [SWAP 文件系统](#SWAP 文件系统)
- 备份与恢复
- 光盘操作
- 网络管理与调试
- 系统监控与性能
- 进程管理
- 硬件管理
- 安全与权限
- 日志管理
- [VIM 编辑器](#VIM 编辑器)
- 进阶工具
- 附录:常用快捷命令
- 总结
1. 基本命令
uname -m:显示机器的处理器架构uname -r:显示正在使用的内核版本dmidecode -q:显示硬件系统部件 (SMBIOS / DMI)hdparm -i /dev/hda:列出磁盘的架构特性hdparm -tT /dev/sda:在磁盘上执行测试性读取操作arch:显示机器的处理器架构cat /proc/cpuinfo:显示 CPU 信息cat /proc/interrupts:显示中断cat /proc/meminfo:检查内存使用cat /proc/swaps:显示哪些 swap 被使用cat /proc/version:显示内核的版本cat /proc/net/dev:显示网络适配器及统计cat /proc/mounts:显示已加载的文件系统lspci -tv:列出 PCI 设备lsusb -tv:显示 USB 设备date:显示系统日期cal 2007:显示 2007 年的日历表date 041217002007.00:设置日期和时间(格式:月日时分年.秒)clock -w:将时间修改保存到 BIOS
2. 关机与重启
shutdown -h now:立即关闭系统init 0或telinit 0:关闭系统shutdown -h hh:mm &:按预定时间关闭系统shutdown -c:取消按预定时间关闭系统shutdown -r now:立即重启系统reboot:重启系统logout:注销当前用户
3. 文件和目录管理
导航
cd /home:进入/home目录cd ..:返回上一级目录cd ../..:返回上两级目录cd或cd ~:进入个人的主目录cd ~user1:进入指定用户user1的主目录cd -:返回上次所在的目录pwd:显示当前工作路径
查看目录
ls:列出当前目录文件(不包括隐藏文件)ls -a:列出当前目录文件(包括隐藏文件)ls -F:列出当前目录文件,并附加文件类型标志ls -l:显示文件和目录的详细资料ls *[0-9]*:显示包含数字的文件名和目录名tree:显示目录树(需安装tree工具)
创建与删除
mkdir dir1:创建目录dir1mkdir dir1 dir2:同时创建多个目录mkdir -p /tmp/dir1/dir2:创建一个目录树rm -f file1:强制删除文件file1rmdir dir1:删除空目录dir1rm -rf dir1:删除目录dir1及其内容
复制与移动
mv dir1 new_dir:重命名或移动目录mv 路径/文件 /路径/文件:移动文件到指定路径mv file1 file2:在当前目录下重命名文件cp file1 file2:复制文件cp -a /tmp/dir1 .:复制目录到当前工作目录cp -r source_dir destination_dir:递归复制目录
链接
ln -s file1 lnk1:创建指向文件或目录的软链接ln file1 lnk1:创建物理链接
时间戳与类型
touch -t 0712250000 file1:修改文件的时间戳file file1:输出文件的 MIME 类型
编码转换
iconv -l:列出已知的编码iconv -f fromEncoding -t toEncoding inputFile > outputFile:转换文件编码iconv -f gbk -t utf8 $i > newfile:转换文件内容由 GBK 到 UTF8
批量操作
find . -maxdepth 1 -name "*.jpg" -print -exec convert "{}" -resize 80x60 "thumbs/{}" \;:批量调整文件大小(需安装 ImageMagick)
4. 文件搜索
find / -name file1:从根目录开始搜索文件find / -user user1:搜索属于用户user1的文件和目录find /home/user1 -name "*.bin":在/home/user1目录中搜索.bin文件find /usr/bin -type f -atime +100:搜索过去 100 天内未被使用过的文件find /usr/bin -type f -mtime -10:搜索 10 天内被创建或修改的文件find / -name "*.rpm" -exec chmod 755 '{}' \;:搜索.rpm文件并更改权限find / -xdev -name "*.rpm":搜索.rpm文件,忽略可移动设备locate "*.ps":使用locate工具搜索.ps文件(需先运行updatedb)whereis halt:显示halt的位置which halt:显示halt命令的路径
5. 挂载文件系统
mount /dev/hda2 /mnt/hda2:挂载/dev/hda2到/mnt/hda2umount /dev/hda2:卸载/dev/hda2fuser -km /mnt/hda2:强制卸载磁盘(设备繁忙时)mount /dev/fd0 /mnt/floppy:挂载软盘mount /dev/cdrom /mnt/cdrom:挂载 CD/DVDmount /dev/hdc /mnt/cdrecorder:挂载 CDRW/DVDmount /dev/hdb /mnt/cdrecorder:挂载 CDRW/DVDmount -o loop file.iso /mnt/cdrom:挂载 ISO 镜像文件mount -t vfat /dev/hda5 /mnt/hda5:挂载 Windows FAT32 文件系统mount /dev/sda1 /mnt/usbdisk:挂载 USB 闪存设备mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share:挂载 Windows 网络共享
6. 磁盘空间管理
df -h:显示已挂载的分区列表ls -lSr | more:按尺寸大小排列文件和目录du -sh dir1:估算目录dir1的磁盘使用情况du -sk * | sort -rn:按磁盘使用大小排序显示文件和目录dpkg-query -W -f='${Installed-Size}\t${Package}\n' | sort -k1,1n:显示已安装的 DEB 包的大小free -h:查看内存和交换空间使用情况
7. 用户和群组管理
groupadd group_name:创建一个新用户组groupdel group_name:删除一个用户组groupmod -n new_group_name old_group_name:重命名一个用户组useradd -c "Name Surname" -g admin -d /home/user1 -s /bin/bash user1:创建属于admin用户组的用户useradd user1:创建一个新用户userdel -r user1:删除用户及其主目录usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1:修改用户属性passwd user1:修改用户的口令(需 root 权限)chage -E 2005-12-31 user1:设置用户口令的失效期限pwck:检查/etc/passwd的文件格式和语法grpck:检查群组文件格式和语法newgrp group_name:切换至新群组
8. 文件和目录权限
ls -lh:显示文件权限chmod ugo+rwx directory1:设置所有用户的读、写、执行权限chmod go-rwx directory1:删除群组和其他用户的所有权限chown user1 file1:改变文件所有者chown -R user1 directory1:递归改变目录及其内容的所有者chgrp group1 file1:改变文件的群组chown user1:group1 file1:改变文件的所有者和群组find / -perm -u+s:列出所有使用了 SUID 位控制的文件chmod u+s /bin/file1:设置文件的 SUID 位chmod u-s /bin/file1:禁用文件的 SUID 位chmod g+s /home/public:设置目录的 SGID 位chmod g-s /home/public:禁用目录的 SGID 位chmod o+t /home/public:设置文件的 Sticky 位chmod o-t /home/public:禁用文件的 Sticky 位
添加或删除执行权限
chmod +x 文件路径:为所有用户添加执行权限chmod -x 文件路径:删除所有用户的执行权限chmod u+x 文件路径:为所有者添加执行权限chmod g+x 文件路径:为群组添加执行权限chmod o+x 文件路径:为其他用户添加执行权限chmod ug+x 文件路径:为所有者和群组添加执行权限chmod =wx 文件路径:为所有用户添加写、执行权限,取消读权限chmod ug=wx 文件路径:为所有者和群组添加写、执行权限,取消读权限
9. 文件的特殊属性
- 使用 "+" 设置属性,使用 "-" 取消属性:
chattr +a file1:只允许以追加方式读写文件chattr +c file1:允许文件被内核自动压缩/解压chattr +d file1:在文件系统备份时忽略该文件chattr +i file1:设置文件为不可变,不能删除、修改或重命名chattr +s file1:允许文件被安全删除chattr +S file1:写操作立即写入磁盘chattr +u file1:允许删除后恢复文件
lsattr:显示文件的特殊属性
10. 打包和压缩文件
解压缩
bunzip2 file1.bz2:解压.bz2文件gunzip file1.gz:解压.gz文件unzip file1.zip:解压.zip文件tar -zxvf xxx.tar.gz:解压缩.tar.gz文件tar -jxvf xxx.tar.bz2:解压缩.tar.bz2文件unrar x aaaa.rar:解压 RAR 文件(需安装unrar)
压缩
bzip2 file1:压缩文件为.bz2格式gzip file1:压缩文件为.gz格式gzip -9 file1:以最高压缩率压缩文件rar a file1.rar test_file:创建.rar压缩包rar a file1.rar file1 file2 dir1:同时压缩多个文件和目录
打包
tar -cvf archive.tar file1:创建.tar包tar -cvf archive.tar file1 file2 dir1:创建包含多个文件和目录的.tar包tar -cvfj archive.tar.bz2 dir1:创建.tar.bz2格式的压缩包tar -cvfz archive.tar.gz dir1:创建.tar.gz格式的压缩包zip -r file1.zip file1 file2 dir1:递归压缩多个文件和目录zip file1.zip file1:创建.zip压缩包
查看与解压
tar -tf archive.tar:查看.tar包内容tar -xvf archive.tar:解压.tar包tar -xvfj archive.tar.bz2:解压.tar.bz2包tar -xvfz archive.tar.gz:解压.tar.gz包unzip file1.zip:解压.zip文件
其他
tar -cPzf backup.tar.gz /path/to/directory:创建带绝对路径的压缩包tar -C /path/to/extract -xzf backup.tar.gz:在指定目录解压压缩包
11. DEB 包管理
dpkg 命令
dpkg -i package.deb:安装或更新 DEB 包dpkg -r package_name:从系统删除 DEB 包dpkg -l:列出系统中所有已安装的 DEB 包dpkg -l | grep httpd:列出名称包含 "httpd" 的 DEB 包dpkg -s package_name:获取已安装包的详细信息dpkg -L package_name:列出已安装包提供的文件dpkg --contents package.deb:列出未安装包提供的文件dpkg -S /bin/ping:查找文件所属的 DEB 包
APT 工具
apt-get install package_name:安装 DEB 包apt-cdrom install package_name:从光盘安装 DEB 包apt-get update:更新软件包列表apt-get upgrade:升级所有已安装的软件包apt-get remove package_name:删除 DEB 包apt-get purge package_name:删除 DEB 包,包括配置文件apt-get autoremove:删除系统不再使用的孤立软件apt-get clean:清理下载的包缓存apt-get autoclean:清理无用的软件包apt-get check:检查依赖关系apt-cache search searched-package:搜索软件包apt-cache show package:获取包的相关信息,如说明、大小、版本等apt-cache depends package:了解包的依赖apt-cache rdepends package:查看该包被哪些包依赖apt-get build-dep package:安装相关的编译环境apt-get source package:下载该包的源代码
其他 APT 命令
dpkg --get-selections | grep -v deinstall > ~/somefile:备份当前系统安装的所有包的列表dpkg --set-selections < ~/somefile && sudo dselect:从备份的安装包列表文件恢复所有包apt-get -qq --print-uris install ssh | cut -d\' -f2:查看包在服务器上的地址apt-cdrom add:增加一个光盘源
12. 查看文件内容
cat file1:查看文件内容tac file1:反向查看文件内容more file1:分页显示文件内容(只能向下翻页)less file1:分页查看文件内容(支持上下翻页)head -2 file1:查看文件的前两行tail -2 file1:查看文件的最后两行tail -f /var/log/messages:实时查看文件内容(适用于日志文件)od -c file1:以八进制显示文件内容strings file1:输出文件中的字符串内容
13. 文本处理
管道与重定向
cat file1 | command > result.txt:将命令输出写入新文件cat file1 | command >> result.txt:将命令输出追加到已有文件
搜索与替换
grep Aug /var/log/messages:搜索包含 "Aug" 的行grep ^Aug /var/log/messages:搜索以 "Aug" 开头的行grep [0-9] /var/log/messages:搜索包含数字的行grep Aug -R /var/log/*:递归搜索包含 "Aug" 的行sed 's/stringa1/stringa2/g' example.txt:替换 "stringa1" 为 "stringa2"sed '/^$/d' example.txt:删除所有空白行sed '/ *#/d; /^$/d' example.txt:删除所有注释和空白行
字符转换
echo 'esempio' | tr '[:lower:]' '[:upper:]':将小写转换为大写
行处理
sed -e '1d' result.txt:删除第一行sed -n '/stringa1/p' example.txt:只显示包含 "stringa1" 的行sed -e 's/ *$//' example.txt:删除每行末尾的空白字符sed -e 's/stringa1//g' example.txt:删除 "stringa1"sed -n '1,5p;5q' example.txt:显示前五行sed -n '5p;5q' example.txt:显示第五行sed -e 's/00*/0/g' example.txt:将多个零替换为单个零
列与合并
cat -n file1:显示文件行号awk 'NR%2==1' example.txt:显示所有奇数行echo a b c | awk '{print $1}':显示第一列echo a b c | awk '{print $1,$3}':显示第一和第三列paste file1 file2:合并两个文件的内容paste -d '+' file1 file2:以 "+" 分隔合并两个文件的内容
排序与唯一
sort file1 file2:排序两个文件的内容sort file1 file2 | uniq:去重后显示并集sort file1 file2 | uniq -u:删除交集,显示唯一行sort file1 file2 | uniq -d:显示交集comm -1 file1 file2:比较两个文件,删除file1独有的部分comm -2 file1 file2:比较两个文件,删除file2独有的部分comm -3 file1 file2:比较两个文件,删除共有的部分
14. 字符设置和文件格式转换
dos2unix filedos.txt fileunix.txt:将文件从 DOS 格式转换为 UNIX 格式unix2dos fileunix.txt filedos.txt:将文件从 UNIX 格式转换为 DOS 格式recode ..HTML < page.txt > page.html:将文本文件转换为 HTMLrecode -l | more:显示所有支持的转换格式iconv -f gbk -t utf8 $i > newfile:转换文件内容由 GBK 到 UTF8
15. 文件系统分析
badblocks -v /dev/hda1:检查磁盘/dev/hda1上的坏块fsck /dev/hda1:检查并修复文件系统fsck.ext2 /dev/hda1:检查 Ext2 文件系统e2fsck /dev/hda1:检查 Ext2 文件系统e2fsck -j /dev/hda1:检查 Ext3 文件系统fsck.ext3 /dev/hda1:检查 Ext3 文件系统fsck.vfat /dev/hda1:检查 FAT 文件系统fsck.msdos /dev/hda1:检查 MSDOS 文件系统dosfsck /dev/hda1:检查 DOS 文件系统
16. 初始化文件系统
mkfs /dev/hda1:在分区/dev/hda1创建文件系统mke2fs /dev/hda1:创建 Ext2 文件系统mke2fs -j /dev/hda1:创建 Ext3 文件系统mkfs -t vfat /dev/hda1:创建 FAT32 文件系统fdformat -n /dev/fd0:格式化软盘mkswap /dev/hda3:创建 swap 文件系统
17. SWAP 文件系统
mkswap /dev/hda3:创建 swap 文件系统swapon /dev/hda3:启用 swapswapon /dev/hda2 /dev/hdb3:同时启用多个 swap 分区swapoff /dev/hda3:禁用 swap
18. 备份与恢复
使用 dump 和 restore
dump -0aj -f /tmp/home0.bak /home:制作/home目录的完整备份dump -1aj -f /tmp/home0.bak /home:制作/home目录的交互式备份restore -if /tmp/home0.bak:还原交互式备份
使用 rsync
rsync -rogpav --delete /home /tmp:同步两个目录rsync -rogpav -e ssh --delete /home user@ip_address:/tmp:通过 SSH 同步rsync -az -e ssh --delete user@ip_addr:/home/public /home/local:通过 SSH 和压缩同步远程目录到本地rsync -az -e ssh --delete /home/local user@ip_addr:/home/public:通过 SSH 和压缩同步本地目录到远程
使用 dd
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz':通过 SSH 备份本地磁盘到远程主机dd if=/dev/sda of=/tmp/file1:备份磁盘内容到文件dd if=/dev/hda of=/dev/fd0 bs=512 count=1:复制 MBR 到软盘dd if=/dev/fd0 of=/dev/hda bs=512 count=1:从软盘恢复 MBR
使用 tar
tar -Puf backup.tar /home/user:交互式备份(cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p':通过 SSH 复制目录内容tar cf - . | (cd /tmp/backup ; tar xf - ):本地复制目录,保留权限及链接tar -cvf backup.tar /path/to/directory:创建备份包tar -xvf backup.tar -C /path/to/extract:解压备份包tar -cvf archive.tar file1 file2 dir1:创建包含多个文件和目录的.tar包tar -cvfj archive.tar.bz2 dir1:创建.tar.bz2格式的压缩包tar -cvfz archive.tar.gz dir1:创建.tar.gz格式的压缩包tar -xvfj archive.tar.bz2:解压.tar.bz2包tar -xvfz archive.tar.gz:解压.tar.gz包tar -tf archive.tar:查看.tar包内容tar -xvf archive.tar:解压.tar包
使用 find
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents:查找并复制.txt文件find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2:查找并打包.log文件
19. 光盘操作
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force:清空可复写光盘mkisofs /dev/cdrom > cd.iso:创建光盘 ISO 镜像mkisofs /dev/cdrom | gzip > cd_iso.gz:创建并压缩光盘 ISO 镜像mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd:创建带标签的 ISO 镜像cdrecord -v dev=/dev/cdrom cd.iso:刻录 ISO 镜像gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -:解压并刻录 ISO 镜像mount -o loop cd.iso /mnt/iso:挂载 ISO 镜像cd-paranoia -B:转录 CD 音轨到 WAV 文件(需安装cdparanoia)cd-paranoia -- "-3":转录指定音轨cdrecord --scanbus:扫描 SCSI 总线dd if=/dev/hdc | md5sum:校验设备的 MD5 值
20. 网络管理与调试
网络接口
ifconfig eth0:显示以太网卡配置ifup eth0:启用网络接口ifdown eth0:禁用网络接口ifconfig eth0 192.168.1.1 netmask 255.255.255.0:配置 IP 地址和子网掩码ifconfig eth0 promisc:设置混杂模式dhclient eth0:通过 DHCP 获取 IPip link show:显示所有网络接口状态mii-tool eth0:显示网络接口eth0状态ethtool eth0:查看和修改网络接口eth0设置
路由
route -n:显示路由表route add -net 0.0.0.0/0 gw IP_Gateway:配置默认网关route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1:配置静态路由route del default gw IP_gateway:删除默认网关netstat -rn:查看路由信息
主机与 DNS
hostname:显示系统主机名host www.example.com:查询主机名与 IPnslookup www.example.com:查询 DNS 信息dig www.example.com:查询 DNS 记录whois www.example.com:查询 Whois 数据库
网络工具
ping www.example.com:检测主机连通性traceroute www.example.com:跟踪路由路径curl http://www.example.com:发送 HTTP 请求wget http://www.example.com/file:下载文件tcpdump tcp port 80:抓取 HTTP 流量iwlist scan:扫描无线网络iwconfig eth1:显示无线网络接口配置netcat (nc):网络连接调试工具mtr:结合了ping和traceroute的网络诊断工具(需安装mtr)wireshark:网络协议分析工具(需安装wireshark)ss -tuln:查看 socket 状态lsof -i:列出打开的网络连接arping IP地址:根据 IP 查网卡地址ifconfig eth0 | awk '/inet/ {split($2,x,":");print x[2]}':查看当前 IP 地址w3m -no-cookie -dump www.edu.cn | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}':查看当前外网的 IP 地址
NAT 设置
sudo echo 1 > /proc/sys/net/ipv4/ip_forward:立即让网络支持 NATsudo iptables -t nat -I POSTROUTING -j MASQUERADE:配置 NAT
路由信息
netstat -rn或route -n:查看路由信息sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1:手工增加一条路由sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1:手工删除一条路由
修改网卡 MAC 地址
sudo ifconfig eth0 down:关闭网卡sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE:修改 MAC 地址sudo ifconfig eth0 up:启动网卡
统计 IP 连接
- 统计当前 IP 连接的个数:
netstat -na | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -r -nnetstat -na | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -r -n
- 统计当前 20000 个 IP 包中大于 100 个 IP 包的 IP 地址:
tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk '$1 > 100'
屏蔽 IPV6
echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
21. 系统监控与性能
top:实时显示系统任务管理器,包括 CPU、内存使用情况htop:增强版top,提供更友好的界面和更多功能(需安装htop)uptime:显示系统运行时间和负载dmesg:查看系统启动信息及内核日志vmstat:查看内存、交换区、IO、CPU 等统计信息free -h:查看内存和交换空间使用情况ps aux:列出所有运行的进程iostat:显示 CPU 使用率和磁盘 I/O 使用情况(需安装sysstat)mpstat:显示多核 CPU 使用情况(需安装sysstat)nmon:性能监控工具,支持实时监控(需安装nmon)watch -n 1 'df -h':每秒刷新一次显示磁盘使用情况sar:系统活动报告,提供详细的 CPU、内存、磁盘等历史信息(需安装sysstat)glances:跨平台的系统监控工具(需安装glances)nmon:全面的性能监控工具(需安装nmon)
22. 进程管理
kill <pid>:通过进程 ID 终止进程killall <process_name>:通过进程名称终止进程pkill <process_name>:使用更多匹配规则终止进程nohup command &:后台运行命令,即使关闭终端仍运行bg:将挂起的进程放到后台fg:将后台进程放到前台jobs:列出当前终端的所有作业time command:显示命令的执行时间nice:调整进程优先级renice -n 10 -p 1234:修改进程1234的优先级为 10sleep <seconds>:暂停程序执行指定秒数ps -A:查看当前有哪些进程kill -9 <pid>或killall -9 <process_name>:强制杀死一个进程xkill:图形方式中止一个程序,出现骷髅标志的鼠标,点击需要中止的程序即可
23. 硬件管理
lshw:列出系统硬件(需 root 权限)lsblk:显示磁盘分区信息lsusb:列出所有 USB 设备lspci:列出所有 PCI 设备inxi -Fx:显示系统信息(需安装inxi)hdparm -tT /dev/sda:测试硬盘性能smartctl -a /dev/sda:查看硬盘健康状况(需安装smartmontools)sensors:查看硬件传感器信息(需安装lm-sensors)lsmod:查看内核加载的模块
24. 安全与权限
chmod:更改文件或目录的权限chown:更改文件或目录的所有者chgrp:更改文件或目录的所属组sudo:以超级用户权限运行命令visudo:编辑 sudo 配置文件setfacl:设置文件的 ACL(访问控制列表)getfacl:查看文件的 ACL 设置ufw:简化的防火墙管理工具iptables:配置 Linux 内核防火墙firewalld:使用 firewalld 管理防火墙规则(推荐替代iptables)chattr:更改文件的特殊属性setenforce:设置 SELinux 模式(需安装并配置 SELinux)selinuxenabled:检查 SELinux 是否启用
25. 日志管理
journalctl:查看系统日志(适用于 systemd 系统)dmesg:查看内核和系统启动日志tail -f /var/log/syslog:实时查看系统日志文件grep:结合管道过滤日志内容less /var/log/syslog:分页查看日志文件cat /var/log/auth.log:查看认证相关日志logrotate:管理日志文件的轮转
26. VIM 编辑器
启动与退出
vim 文件路径:启动 Vim 编辑器:q:退出 Vim 编辑器:wq:保存并退出 Vim:x:保存并退出 Vim:q!:强制退出,不保存:w:保存修改:set number:显示行号:set nonumber:隐藏行号:set syntax on:启用语法高亮:set syntax off:禁用语法高亮:!:执行系统命令:sh:切换到命令行Ctrl + D:切换回 Vim
VIM 模式
命令模式(常规模式)
i:在光标前插入文本a:在光标后插入文本o:在当前行下方插入新行dd:删除整行yy:复制当前行nyy:复制 n 行p:粘贴u:撤销Ctrl + r:重做r:替换当前字符/关键字:查找关键字
插入模式
i:进入插入模式a:进入插入模式(在光标后)o:在当前行下方插入新行并进入插入模式Esc:返回命令模式
Ex 模式
::进入 Ex 模式:w:保存修改:q:退出:wq!:强制保存并退出:x:保存并退出:!:执行系统命令:sh:切换到命令行Ctrl + D:切换回 Vim
配置 VIM
一般设定
vim
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
" 不要使用 vi 的键盘模式,而是 vim 自己的
set nocompatible
" history 文件中需要记录的行数
set history=100
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 与 Windows 共享剪贴板
set clipboard+=unnamed
" 侦测文件类型
filetype on
filetype plugin on
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 语法高亮
syntax on
" 高亮字符,让其不受100列限制
highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
match OverLength '%101v.*'
" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White
" 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 使回格键(backspace)正常处理 indent, eol, start 等
set backspace=2
" 允许 backspace 和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在 buffer 的任何地方使用鼠标(类似 Office 中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 启动的时候不显示帮助信息
set shortmess=atI
" 通过使用 :commands 命令,告诉我们文件的哪一行被改变过
set report=0
" 不让 vim 发出讨厌的滴滴声
set noerrorbells
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
文件设置
vim
" 不要备份文件(根据自己需要取舍)
set nobackup
" 不要生成 swap 文件,当 buffer 被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 自动缩进
set autoindent
set smartindent
set cindent
" 制表符设置
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
" 不要换行
set nowrap
" 在行和段开始处使用制表符
set smarttab
CTags 的设定
vim
" 按照名称排序
let Tlist_Sort_Type = "name"
" 在右侧显示窗口
let Tlist_Use_Right_Window = 1
" 压缩方式
let Tlist_Compart_Format = 1
" 如果只有一个 buffer,kill 窗口也 kill 掉 buffer
let Tlist_Exist_OnlyWindow = 1
" 不要关闭其他文件的 tags
let Tlist_File_Fold_Auto_Close = 0
" 不要显示折叠树
let Tlist_Enable_Fold_Column = 0
Autocommands
vim
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap
endif
27. 进阶工具
图形化工具
-
meld:文件比较与合并工具(需安装meld) -
inxi:显示系统信息(需安装inxi) -
nmon:全面的性能监控工具(需安装nmon) -
gnome-search-tool:全盘搜索文件的图形化工具
firefox
:安装 Flash Player 插件
- 下载插件:
install_flash_player_9_linux.tar.gz - 解压并安装:
tar -zxf install_flash_player_9_linux.tar.gz,./flashplayer-installer - 拷贝插件到 Firefox 插件目录:
sudo cp libflashplayer.so /usr/lib/firefox/plugins
filezilla
:FTP 文件传输工具,支持中文目录显示
-
安装:
sudo apt-get install filezilla -
设置中文显示:
-
下载 FileZilla 中文包到本地目录,如
~/ -
解压:
unrar x Filezilla3_zhCN.rar -
如果没有
unrar,先安装:sudo apt-get install rar unrar -
创建符号链接:
sudo ln -f /usr/bin/rar /usr/bin/unrar -
备份原语言包并安装新语言包:
bashsudo cp /usr/share/locale/zh_CN/filezilla.mo /usr/share/locale/zh_CN/filezilla.mo.bak sudo cp ~/locale/zh_CN/filezilla.mo /usr/share/locale/zh_CN/filezilla.mo -
重启 FileZilla 即可
-
网络工具
netcat (nc):网络连接调试工具mtr:结合了ping和traceroute的网络诊断工具(需安装mtr)wireshark:网络协议分析工具(需安装wireshark)
性能监控
htop:增强版top,提供更友好的界面和更多功能(需安装htop)glances:跨平台的系统监控工具(需安装glances)nmon:全面的性能监控工具(需安装nmon)watch -n 1 'df -h':每秒刷新一次显示磁盘使用情况sar:系统活动报告,提供详细的 CPU、内存、磁盘等历史信息(需安装sysstat)
28. 附录:常用快捷命令
- 快速查找某个文件
whereis filenamefind 目录 -name 文件名
- 查看文件类型
file filename
- 让
tail不停地读取最新内容tail -n 10 -f /var/log/apache2/access.log
- 查看文件中间的行
sed -n '5,10p' /var/log/apache2/access.log:查看第五行到第十行
- 通过 SSH 传输文件
- 上传:
scp -rp /path/filename username@remoteIP:/path - 下载:
scp -rp username@remoteIP:/path/filename /path
- 上传:
- 查看某个文件被哪些应用程序读写
lsof 文件名
- 批量修改文件名
rename 's/.rm$/.rmvb/' *:将所有文件的后缀由.rm改为.rmvbrename 'tr/A-Z/a-z/' *:将所有文件名中的大写改为小写
- 删除特殊文件名的文件
rm -- --help.txt或rm ./--help.txt
- 查看当前目录的子目录
ls -d */或echo */
- 移动最近访问过的文件
find . -type f -atime -30 -exec mv {} ../back \;:将最近 30 天访问过的文件移动到上级back目录
- 显示最近一段时间内的文件
find . -mmin +120 -mmin -480 -exec more {} \;:显示最近 2 小时到 8 小时之内的文件
- 删除特定条件的文件
find . -type f -mtime +30 -mtime -3600 -exec rm {} \;:删除修改时间在 30 天之前的所有文件find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;:删除 guest 用户的.avi或.rm文件find . ! -name '*.java' ! -name '*.xml' -atime +7 -exec rm {} \;:删除不以.java和.xml结尾,且 7 天未使用的文件
- 统计文件和目录
ls /usr/bin | wc -w:统计当前文件个数ls -l /usr/bin | grep ^d | wc -l:统计当前目录个数ls -l | grep '2006-01-01' | awk '{print $8}':显示 2006-01-01 创建的文件名
29. 总结
这个命令大全涵盖了常见的 Linux 系统管理、文件操作、磁盘管理、用户管理、网络调试、安全、进程管理等方面的命令。掌握这些命令能够帮助您更高效地管理和维护 Linux 系统。如果您有特定需求或需要更深入的操作,欢迎随时咨询!
注 :部分命令可能需要安装额外的软件包。例如,htop、nmon、inxi、meld、tree、sysstat、smartmontools、lm-sensors 等工具需通过包管理器安装。此外,某些操作需要超级用户权限(使用 sudo)。
附加信息
常用软件安装示例
-
安装解码器、Flash Player、Java 虚拟机、微软字体
bashsudo apt-get install ubuntu-restricted-extras -
安装 FileZilla FTP 工具
bashsudo apt-get install filezilla -
安装 RAR 压缩和解压工具
bashsudo apt-get install rar unrar -
安装媒体播放器
bashsudo apt-get install mplayer mozilla-mplayer totem-xine libxine-extracodecs -
安装下载工具(多线程下载、BT下载、电驴)
bashsudo apt-get install d4x amule azureus -
安装文件名编码转换工具
bashsudo apt-get install convmv -
安装 MP3 标签编码转换工具
bashsudo apt-get install python-mutagen -
安装控制台中文显示工具
bashsudo apt-get install zhcon -
安装支持 QT 的 scim 插件以在 Eva 中输入中文
bashsudo apt-get install scim-qtimm -
安装 Beryl 桌面效果
bashsudo apt-get install beryl-core beryl-plugins beryl-plugins-data emerald beryl-settings beryl-manager beryl beryl-dev emerald-themes -
安装硬件传感器信息查看工具
bashsudo apt-get install lm-sensors -
安装硬盘健康状况查看工具
bashsudo apt-get install smartmontools -
安装系统信息查看工具
bashsudo apt-get install inxi -
安装性能监控工具
bashsudo apt-get install nmon -
安装系统统计工具(包含
iostat、mpstat、sar等)bashsudo apt-get install sysstat -
安装完整版本的 Vim 编辑器
bashsudo apt-get install vim-full -
安装 GNOME 全盘搜索工具
bashsudo apt-get install gnome-search-tool -
安装图形化文件比较工具
bashsudo apt-get install meld