linux常用命令及解释大全(万字总结)

前言

Linux 是一种自由和开放源代码的操作系统,它是基于 Unix 系统的,并在全球范围内得到广泛使用。Linux 操作系统的核心由 Linus Torvalds 在 1991 年开发,并由全球各地的开发者共同参与和维护。

本篇文章介绍了linux常用命令,包括系统信息,关机、重启及登出 ,文件和目录,文件搜索,挂载文件系统,磁盘空间,用户,群组,文件的权限,文件的特殊属性,打包和压缩文件,查看文件内容,文本处理,字符设置和文件格式转换,文件系统分析,初始化一个文件系统,备份,光盘,网络这十八个部分。linux常用命令及解释详情请看正文。

使用 Linux 命令可能需要一些学习和适应过程,但一旦掌握了它们,将会带来许多便利和优势。无论是在个人使用还是在服务器管理等领域,Linux 命令都是非常有用和强大的工具。以下是linux常用命令及解释:

一、系统信息

  • arch:显示机器的处理器架构(方法1)
  • uname -m:显示机器的处理器架构(方法2)
  • uname -r:显示正在使用的内核版本
  • dmidecode -q:显示硬件系统部件(SMBIOS / DMI)
  • hdparm -i /dev/hda:罗列一个磁盘的架构特性
  • hdparm -tT /dev/sda:在磁盘上执行测试性读取操作
  • 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

二、关机、重启及登出 

  • shutdown -h now:立即关闭系统(方法1)
  • init 0:关闭系统(方法2)
  • telinit 0:关闭系统(方法3)
  • shutdown -h hours:minutes &:按预定时间关闭系统
  • shutdown -c:取消按预定时间关闭系统
  • shutdown -r now:立即重启系统(方法1)
  • reboot:重启系统(方法2)
  • logout:注销当前用户

三、文件和目录

3.1 导航命令

  • cd /home:进入 ‘/home’ 目录
  • cd …:返回上一级目录
  • cd …/…:返回上两级目录
  • cd:进入个人的主目录
  • cd ~user1:进入个人的主目录
  • cd -:返回上次所在的目录
  • pwd:显示当前工作路径

3.2 查看命令

  • ls:查看目录中的文件
  • ls -F:查看目录中的文件,并标记文件类型
  • ls -l:显示文件和目录的详细信息
  • ls -a:显示所有文件,包括隐藏文件
  • ls [0-9] :显示文件名和目录名中包含数字的内容
  • tree:以树形结构显示文件和目录(方法1)
  • lstree:以树形结构显示文件和目录(方法2)

3.3 创建和删除命令

  • mkdir dir1:创建一个名为 ‘dir1’ 的目录
  • mkdir dir1 dir2:同时创建两个目录
  • mkdir -p /tmp/dir1/dir2:创建一个目录树
  • rm -f file1:删除一个名为 ‘file1’ 的文件
  • rmdir dir1:删除一个名为 ‘dir1’ 的目录
  • rm -rf dir1:删除一个名为 ‘dir1’ 的目录及其内容
  • rm -rf dir1 dir2:同时删除两个目录及其内容
  • mv dir1 new_dir:重命名或移动一个目录

3.4 复制和链接命令

  • cp file1 file2:复制一个文件
  • cp dir/* .:将一个目录下的所有文件复制到当前工作目录
  • cp -a /tmp/dir1 .:复制一个目录到当前工作目录
  • cp -a dir1 dir2:复制一个目录
  • ln -s file1 lnk1:创建一个指向文件或目录的软链接
  • ln file1 lnk1:创建一个指向文件或目录的物理链接

3.5 其他命令

  • touch -t 0712250000 file1:修改一个文件或目录的时间戳(YYMMDDhhmm)
  • file file1:显示文件的MIME类型
  • iconv -l:列出已知的编码
  • iconv -f fromEncoding -t toEncoding inputFile > outputFile:将输入文件以fromEncoding编码转换为toEncoding编码,并输出为输出文件
  • find . -maxdepth 1 -name *.jpg -print -exec convert “{}” -resize 80x60 “thumbs/{}” ;:在当前目录批量调整文件大小,并将其发送到thumbnails目录(需要Imagemagick的convert命令)

四、文件搜索

  • find / -name file1:从根文件系统开始搜索名为 ‘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:寻找以 ‘.ps’ 结尾的文件(运行前需先执行 ‘updatedb’ 命令)
  • whereis halt:显示二进制文件、源码或man文档的位置
  • which halt:显示二进制文件或可执行文件的完整路径

五、挂载文件系统

  • mount /dev/hda2 /mnt/hda2:挂载名为hda2的分区到/mnt/hda2目录(确保目录已存在)
  • umount /dev/hda2:卸载名为hda2的分区(首先从挂载点/mnt/hda2退出)
  • fuser -km /mnt/hda2:在设备忙碌时强制卸载
  • umount -n /mnt/hda2:执行卸载操作而不写入/etc/mtab文件,对只读文件系统或磁盘已满时非常有用
  • mount /dev/fd0 /mnt/floppy:挂载软盘
  • mount /dev/cdrom /mnt/cdrom:挂载CD-ROM或DVD-ROM
  • mount /dev/hdc /mnt/cdrecorder:挂载CD-RW或DVD-ROM
  • mount /dev/hdb /mnt/cdrecorder:挂载CD-RW或DVD-ROM
  • mount -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网络共享

六、磁盘空间

  • df -h:显示已挂载的分区列表及其磁盘空间使用情况
  • ls -lSr | more:按照文件和目录的大小进行排序
  • du -sh dir1:估算目录 ‘dir1’ 已使用的磁盘空间
  • du -sk * | sort -rn:按照容量大小依次显示文件和目录的大小
  • rpm -q -a --qf ‘%10{SIZE}t%{NAME}\n’ | sort -k1,1n:以大小为依据依次显示已安装的rpm包所使用的空间(适用于Fedora、Red Hat等系统)
  • dpkg-query -W -f='Installed−Size;10t{Installed-Size;10}tInstalled−Size;10t{Package}n' | sort -k1,1n :以大小为依据显示已安装的deb包所使用的空间(适用于Ubuntu、Debian等系统)

七、用户和群组

  • 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” 用户组、主目录为 /home/user1、使用 /bin/bash 作为默认 shell 的用户
  • useradd user1:创建一个新用户
  • userdel -r user1:删除一个用户(使用 -r 参数同时删除用户的主目录)
  • usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1:修改用户的属性,包括用户的注释、所属用户组、主目录、默认 shell
  • passwd:修改当前用户的密码
  • passwd user1:修改用户 user1 的密码(只有 root 用户可执行)
  • chage -E 2005-12-31 user1:设置用户 user1 的密码过期日期
  • pwck:检查并修复 /etc/passwd 文件的格式和语法错误,同时检查存在的用户
  • grpck:检查并修复 /etc/group 文件的格式和语法错误,同时检查存在的用户组
  • newgrp group_name:登录一个新的群组,以更改新创建文件的默认所属群组

八、文件的权限

  • 使用 "+" 设置权限,使用 "-" 用于取消
  • ls -lh:列出文件的详细信息,包括文件权限。
  • ls /tmp | pr -T5 -W$COLUMNS:将/tmp目录下的文件按照5栏的格式在终端中显示。
  • chmod ugo+rwx directory1:设置目录directory1的所有者、群组和其他人的读、写和执行权限。
  • chmod go-rwx directory1:取消目录directory1的群组和其他人的读、写和执行权限。
  • chown user1 file1:将文件file1的所有者更改为user1。
  • chown -R user1 directory1:将目录directory1的所有者和其中所有文件的所有者都更改为user1。
  • chgrp group1 file1:将文件file1的群组更改为group1。
  • chown user1:group1 file1:将文件file1的所有者和群组同时更改为user1和group1。
  • find / -perm -u+s:列出系统中所有使用了SUID权限的文件。
  • chmod u+s /bin/file1:给文件file1设置SUID权限,允许执行该文件的用户具有与所有者相同的权限。
  • chmod u-s /bin/file1:禁用文件file1的SUID权限。
  • chmod g+s /home/public:给目录/public设置SGID权限,类似于SUID,但针对目录。
  • chmod g-s /home/public:禁用目录/public的SGID权限。
  • chmod o+t /home/public:给文件/public设置粘贴(STIKY)权限,只允许合法的所有者删除文件。
  • chmod o-t /home/public:禁用目录/public的粘贴(STIKY)权限。
  • 九、文件的特殊属性

  • chattr +a file1:设置文件 file1 为只追加属性,只允许以追加方式读写文件,禁止修改和删除文件。
  • chattr +c file1:设置文件 file1 可以被内核自动压缩和解压缩(需要特定的文件系统和工具支持)。
  • chattr +d file1:设置文件 file1 在进行文件系统备份时,dump 程序将忽略该文件。
  • chattr +i file1:设置文件 file1 为不可变属性,即不能被删除、修改、重命名或链接。
  • chattr +s file1:设置文件 file1 可以被安全地删除,即删除后不会被恢复。
  • chattr +S file1:使系统在应用程序对文件 file1 执行写操作后,立即将修改的结果写到磁盘。
  • chattr +u file1:设置文件 file1 允许恢复,即如果文件被删除,系统将允许在以后恢复该被删除的文件。
  • lsattr:显示文件的特殊属性。
  • 十、打包和压缩文件

  • bunzip2 file1.bz2:解压名为 ‘file1.bz2’ 的文件。
  • bzip2 file1:压缩名为 ‘file1’ 的文件。
  • gunzip file1.gz:解压名为 ‘file1.gz’ 的文件。
  • gzip file1:压缩名为 ‘file1’ 的文件。
  • gzip -9 file1:以最大程度压缩的方式压缩 ‘file1’。
  • rar a file1.rar test_file:创建名为 ‘file1.rar’ 的压缩包,其中包含 ‘test_file’。
  • rar a file1.rar file1 file2 dir1:同时压缩 ‘file1’、 ‘file2’ 和目录 ‘dir1’ 到 ‘file1.rar’。
  • rar x file1.rar:解压名为 ‘file1.rar’ 的压缩包。
  • unrar x file1.rar:解压名为 ‘file1.rar’ 的压缩包。
  • tar -cvf archive.tar file1:创建一个非压缩的 tarball,将 ‘file1’ 放入其中。
  • tar -cvf archive.tar file1 file2 dir1:创建一个包含 ‘file1’、 ‘file2’ 和 ‘dir1’ 的档案文件。
  • tar -tf archive.tar:显示 tar 包中的内容。
  • tar -xvf archive.tar:解压 tar 包。
  • tar -xvf archive.tar -C /tmp:将压缩包解压到 /tmp 目录下。
  • tar -cvfj archive.tar.bz2 dir1:创建一个使用 bzip2 格式压缩的 tar 包。
  • tar -jxvf archive.tar.bz2:解压使用 bzip2 格式压缩的 tar 包。
  • tar -cvfz archive.tar.gz dir1:创建一个使用 gzip 格式压缩的 tar 包。
  • tar -zxvf archive.tar.gz:解压使用 gzip 格式压缩的 tar 包。
  • zip file1.zip file1:创建一个 zip 格式的压缩包,其中包含 ‘file1’。
  • zip -r file1.zip file1 file2 dir1:将多个文件和目录同时压缩成一个 zip 格式的压缩包。
  • unzip file1.zip:解压 zip 格式的压缩包。
  • 十一、查看文件内容

  • cat file1:从第一个字节开始正向查看文件 ‘file1’ 的内容。
  • tac file1:从最后一行开始反向查看文件 ‘file1’ 的内容。
  • more file1:查看一个长文件 ‘file1’ 的内容,可以逐页浏览。
  • less file1:类似于 ‘more’ 命令,但允许使用反向操作,可以在文件中进行正向和反向操作。
  • head -2 file1:查看文件 ‘file1’ 的前两行。
  • tail -2 file1:查看文件 ‘file1’ 的最后两行。
  • tail -f /var/log/messages:实时查看被添加到文件 ‘/var/log/messages’ 中的内容,适用于日志文件等需要实时监控的文件。
  • 十二、文本处理

    12.1 grep

    这些命令是使用管道、标准输入(STDIN)和标准输出(STDOUT)进行文本操作的:

  • 将命令应用于 file1 的内容,并将处理结果输出到 result.txt 文件中:
    cat file1 | command( sed, grep, awk, 等等...) > result.txt
    
  • 将命令应用于 file1 的内容,并将处理结果附加到已有的 result.txt 文件末尾:
    cat file1 | command( sed, grep, awk, 等等...) >> result.txt
    
  • 在文件 ‘/var/log/messages’ 中查找包含关键词 “Aug” 的行:
    grep Aug /var/log/messages
    
  • 在文件 ‘/var/log/messages’ 中查找以 “Aug” 开头的词汇:
    grep ^Aug /var/log/messages
    
  • 选择在文件 ‘/var/log/messages’ 中包含数字的所有行:
    grep [0-9] /var/log/messages
    
  • 在目录 ‘/var/log’ 及其子目录中递归搜索字符串 “Aug”:
    grep Aug -R /var/log/*
    
  • 12.2 sed

    这些 sed 命令能够对文本文件进行替换、删除、查找等操作:

  • 将 example.txt 文件中的 “string1” 替换为 “string2”:
    sed 's/stringa1/stringa2/g' example.txt
    
  • 从 example.txt 文件中删除所有空白行:
    sed '/^$/d' example.txt
    
  • 从 example.txt 文件中删除所有带有零个或多个空格开头的注释行,以及所有空白行:
    sed '/ *#/d; /^$/d' example.txt
    
  • 将输入字符串 “esempio” 转换为大写字母:
    echo 'esempio' | tr '[:lower:]' '[:upper:]'
    
  • 从 result.txt 文件中排除第一行:
    sed -e '1d' result.txt
    
  • 只查看 example.txt 文件中包含关键词 “string1” 的行:
    sed -n '/stringa1/p' example.txt
    
  • 从 example.txt 文件中删除每一行末尾的零个或多个空白字符:
    sed -e 's/ *$//' example.txt
    
  • 从文档中删除所有的 “string1” 词汇,保留剩余的内容:
    sed -e 's/stringa1//g' example.txt
    
  • 查看 example.txt 文件中从第一行到第五行的内容:
    sed -n '1,5p;5q' example.txt
    
  • 查看 example.txt 文件中的第五行内容:
    sed -n '5p;5q' example.txt
    
  • 将 example.txt 文件中的每个连续的零替换为单个零:
    sed -e 's/00*/0/g' example.txt
    
  • 12.3 其它

    这些命令可以帮助你进行文件的处理、比较和合并等操作:

  • 显示 file1 文件的内容,并在每行前面标记行号:

    cat -n file1
    

  • 删除 example.txt 文件中的所有偶数行。使用 awk 命令筛选出奇数行:

    cat example.txt | awk 'NR%2==1'
    

  • 在字符串 “a b c” 中,使用 awk 命令打印第一列(以空格分隔的单词):

    echo a b c | awk '{print $1}'
    

  • 在字符串 “a b c” 中,使用 awk 命令打印第一列和第三列:

    echo a b c | awk '{print $1,$3}'
    

  • 将 file1 和 file2 的内容按行合并:

    paste file1 file2
    

  • 将 file1 和 file2 的内容按行合并,并使用 “+” 字符进行分隔:

    paste -d '+' file1 file2
    

  • 对 file1 和 file2 的内容进行排序:

    sort file1 file2
    

  • 取出 file1 和 file2 的并集,并去除重复的行:

    sort file1 file2 | uniq
    

  • 删除 file1 和 file2 的交集,并保留其他行:

    sort file1 file2 | uniq -u
    

  • 取出 file1 和 file2 的交集,并仅保留同时存在于两个文件中的行:

    sort file1 file2 | uniq -d
    

  • 比较 file1 和 file2 的内容,仅删除在 file1 中包含的行:

    comm -1 file1 file2
    

  • 比较 file1 和 file2 的内容,仅删除在 file2 中包含的行:

    comm -2 file1 file2
    

  • 比较 file1 和 file2 的内容,仅删除两个文件都包含的行:

    comm -3 file1 file2
    

  • 十三、字符设置和文件格式转换

    在执行这些命令之前,要确保已正确安装相应的工具(如dos2unix、unix2dos和recode),并提前备份你的文件以防止丢失。

  • dos2unix filedos.txt fileunix.txt
    

    该命令将名为 filedos.txt 的MSDOS格式文本文件转换为UNIX格式,并将结果保存为 fileunix.txt