Unix操作系统以其强大的命令行工具闻名,这些命令是系统管理和日常操作的核心,掌握常用命令不仅能提高工作效率,还能深入理解系统运行机制,以下从文件管理、文本处理、系统监控、网络工具和权限管理五个方面,详细解析Unix常用命令。

文件管理是Unix操作的基础,其中ls
命令用于列出目录内容,通过ls -l
可显示详细信息,包括权限、所有者、大小和修改时间;ls -a
则显示所有文件,包括隐藏文件。cd
命令用于切换目录,cd ..
返回上级目录,cd ~
进入用户主目录。cp
命令用于复制文件或目录,cp -r
可递归复制整个目录结构;mv
命令则用于移动文件或重命名,mv oldname newname
即可完成重命名。rm
命令用于删除文件,rm -r
递归删除目录,rm -f
强制删除不提示。mkdir
创建新目录,mkdir -p
可创建多级目录,如mkdir -p a/b/c
。touch
命令用于创建空文件或更新文件时间戳,touch file.txt
会创建file.txt或更新其修改时间。
文本处理命令在Unix中极为强大。cat
命令用于查看文件内容,cat file.txt
直接输出文件内容;more
和less
则分页显示文件,less
支持上下翻页和搜索。grep
是文本搜索工具,grep "pattern" file.txt
在文件中搜索匹配模式的行,grep -i
忽略大小写,grep -r
递归搜索目录。sed
是流编辑器,用于文本替换,sed 's/old/new/g' file.txt
将文件中所有old替换为new。awk
是强大的文本分析工具,awk '{print $1}' file.txt
打印每行的第一列,awk -F',' '{print $2}'
以逗号为分隔符打印第二列。head
和tail
分别查看文件开头和结尾,head -n 10 file.txt
显示前10行,tail -f file.txt
实时追踪文件更新。
系统监控命令帮助用户了解系统状态。top
命令动态显示进程和系统资源使用情况,按P
按CPU排序,按M
按内存排序。ps
命令列出当前进程,ps aux
显示所有进程详细信息,ps -ef
以全格式列出进程。df
用于查看磁盘空间使用,df -h
以人类可读格式显示(如KB、MB)。du
统计目录大小,du -sh *
显示当前目录下各文件和目录的总大小。free
命令查看内存使用情况,free -h
以易读格式显示。uname
显示系统信息,uname -a
显示所有可用信息。
网络工具在Unix系统中同样重要。ping
测试网络连通性,ping google.com
持续发送ICMP包到目标主机。ifconfig
或ip addr
显示和配置网络接口信息,ifconfig eth0 up
启用eth0接口。netstat
查看网络连接状态,netstat -an
显示所有连接,netstat -tuln
显示监听端口。ssh
用于远程登录,ssh user@hostname
以user身份登录到hostname。scp
在主机间安全复制文件,scp file.txt user@hostname:/remote/path
将文件复制到远程主机。wget
或curl
用于下载文件,wget https://example.com/file.zip
下载文件,curl -I https://example.com
仅获取HTTP头信息。

权限管理是Unix安全的核心。chmod
修改文件权限,chmod 755 file.txt
设置所有者可读写执行,组和其他用户可读执行;chmod u+x file.txt
为所有者添加执行权限。chown
更改文件所有者,chown user:group file.txt
将文件所有者改为user,组改为group。su
切换用户,su -
切换到root用户并加载其环境变量。sudo
以其他用户身份执行命令,通常用于以root权限执行操作。passwd
修改用户密码,passwd username
修改指定用户密码。
Unix命令组合使用能发挥更大威力,例如ls -l | grep "txt"
将ls的输出通过管道传递给grep,筛选出包含txt的行;find . -name "*.log" -exec rm {} \;
递归查找当前目录下.log文件并删除,熟练掌握这些命令及其组合,能极大提升在Unix环境下的工作效率和问题解决能力。
相关问答FAQs
-
问:如何快速查找大文件并清理磁盘空间?
答:可以使用du
命令配合sort
和head
查找大文件。du -sh /* | sort -rh | head -10
会列出根目录下最大的10个文件或目录,找到不需要的大文件后,使用rm
命令删除,如rm largefile.log
,清理前建议使用df -h
确认磁盘空间变化。(图片来源网络,侵删) -
问:如何批量重命名文件?
答:可以使用rename
命令(Perl版本)或for
循环结合mv
命令,将当前目录下所有.txt文件改为.bak文件,可使用rename 's/\.txt$/\.bak/' *.txt
;或通过for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
实现,前者适合简单替换,后者支持更复杂的重命名逻辑。