前言
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:登录一个新的群组,以更改新创建文件的默认所属群组
八、文件的权限
- 使用 "+" 设置权限,使用 "-" 用于取消
九、文件的特殊属性
十、打包和压缩文件
十一、查看文件内容
十二、文本处理
12.1 grep
这些命令是使用管道、标准输入(STDIN)和标准输出(STDOUT)进行文本操作的:
cat file1 | command( sed, grep, awk, 等等...) > result.txt
cat file1 | command( sed, grep, awk, 等等...) >> result.txt
grep Aug /var/log/messages
grep ^Aug /var/log/messages
grep [0-9] /var/log/messages
grep Aug -R /var/log/*
12.2 sed
这些
sed
命令能够对文本文件进行替换、删除、查找等操作:
sed 's/stringa1/stringa2/g' example.txt
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
sed -e 's/ *$//' example.txt
sed -e 's/stringa1//g' example.txt
sed -n '1,5p;5q' example.txt
sed -n '5p;5q' 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
。
unix2dos fileunix.txt filedos.txt
该命令将名为 fileunix.txt
的UNIX格式文本文件转换为MSDOS格式,并将结果保存为 filedos.txt
。
recode ..HTML page.html
该命令将名为 page.txt
的文本文件转换为HTML格式,并将结果输出到名为 page.html
的文件中。
recode -l | more
该命令将显示所有可用的字符转换格式列表,并以分页方式展示,你可以逐页查看。
十四、文件系统分析
badblocks -v /dev/hda1
该命令用于检查磁盘 “/dev/hda1” 上的坏磁块,并以详细模式显示检查的进度和结果。
fsck /dev/hda1
该命令用于修复或检查磁盘 “/dev/hda1” 上Linux文件系统的完整性,它会自动进行必要的修复操作。
fsck.ext2 /dev/hda1
或
e2fsck /dev/hda1
这两个命令都用于修复或检查磁盘 “/dev/hda1” 上ext2文件系统的完整性,可以选择使用其中之一。
e2fsck -j /dev/hda1
或
fsck.ext3 /dev/hda1
这两个命令都用于修复或检查磁盘 “/dev/hda1” 上ext3文件系统的完整性,可以选择使用其中之一。
fsck.vfat /dev/hda1
或
fsck.msdos /dev/hda1
或
dosfsck /dev/hda1
这些命令用于修复或检查磁盘 “/dev/hda1” 上FAT文件系统或DOS文件系统的完整性,可以选择使用其中之一。
十五、初始化一个文件系统
mkfs /dev/hda1
该命令将在hda1分区上创建一个文件系统,具体的文件系统类型将取决于系统的默认设置。
mke2fs /dev/hda1
该命令将在hda1分区上创建一个Linux ext2的文件系统。
mke2fs -j /dev/hda1
该命令将在hda1分区上创建一个Linux ext3(带日志)的文件系统。
mkfs -t vfat -F 32 /dev/hda1
该命令将在hda1分区上创建一个FAT32文件系统。
fdformat -n /dev/fd0
该命令用于格式化一个软盘。
mkswap /dev/hda3
该命令将在hda3分区上创建一个swap文件系统。
swapon /dev/hda3
该命令用于启用一个新的swap文件系统。
swapon /dev/hda2 /dev/hdb3
该命令用于启用多个swap分区,以hda2和hdb3为例。
十六、备份
dump -0aj -f /tmp/home0.bak /home
该命令将创建一个 ‘/home’ 目录的完整备份,并将其保存到"/tmp/home0.bak"文件中。
dump -1aj -f /tmp/home0.bak /home
该命令将创建一个 ‘/home’ 目录的交互式备份,并将其保存到"/tmp/home0.bak"文件中。
restore -if /tmp/home0.bak
该命令将从"/tmp/home0.bak"文件中还原备份的内容。
rsync -rogpav --delete /home /tmp
该命令将同步源目录"/home"和目标目录"/tmp"之间的文件和目录,并确保目标目录与源目录保持一致。
ip_address和ip_addr是示例中的占位符,实际使用时需要替换为合适的IP地址或主机名 。
rsync -rogpav -e ssh --delete /home ip_address:/tmp
该命令将使用SSH通道,将源目录"/home"的内容同步到远程主机的目标目录"/tmp"中。
rsync -az -e ssh --delete ip_addr:/home/public /home/local
该命令将通过SSH通道在本地将远程主机上的目录“/home/public”内容同步到本地目录“/home/local”中,并且使用压缩来加快传输速度。
rsync -az -e ssh --delete /home/local ip_addr:/home/public
该命令将通过SSH通道在本地将目录“/home/local”的内容同步到远程主机的目录“/home/public”中,并且使用压缩来加快传输速度。
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'
该命令将备份本地磁盘/dev/hda的内容,并通过SSH通道将其传输到远程主机,并保存为hda.gz文件。
dd if=/dev/sda of=/tmp/file1
该命令将/dev/sda的磁盘内容备份到文件/tmp/file1中。
tar -Puf backup.tar /home/user
该命令将对目录/home/user执行一次交互式备份操作,并将结果保存为backup.tar文件。
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'
该命令将本地目录/tmp/local/的内容通过SSH通道复制到远程主机的目录/home/share/中。
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'
该命令将本地目录/home的内容通过SSH通道复制到远程主机的目录/home/backup-home中。
tar cf - . | (cd /tmp/backup ; tar xf - )
该命令将当前目录的内容复制到另一个目录/tmp/backup中,并保留原有的权限和链接关系。
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents
该命令将在目录/home/user1中查找所有以 ‘.txt’ 结尾的文件,并将它们复制到目录/home/backup/中,并保留原有的目录结构。
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2
该命令将在目录/var/log中查找所有以 ‘.log’ 结尾的文件,并将它们打包为一个bzip2压缩包log.tar.bz2。
dd if=/dev/hda of=/dev/fd0 bs=512 count=1
该命令将将磁盘/dev/hda的MBR内容复制到软盘/dev/fd0。
dd if=/dev/fd0 of=/dev/hda bs=512 count=1
该命令将从软盘/dev/fd0中复制的MBR内容恢复到磁盘/dev/hda。
十七、光盘
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force
该命令将清空一个可复写的光盘的内容,并弹出光盘。
mkisofs /dev/cdrom > cd.iso
该命令将从光驱设备/dev/cdrom中创建一个光盘的ISO镜像文件cd.iso。
mkisofs /dev/cdrom | gzip > cd_iso.gz
该命令将从光驱设备/dev/cdrom中创建一个光盘的ISO镜像文件,并将其压缩为cd_iso.gz文件。
mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd
该命令将创建一个名为cd.iso的ISO镜像文件,其中包含目录data_cd的内容,并添加标签“Label CD”。
cdrecord -v dev=/dev/cdrom cd.iso
该命令将刻录名为cd.iso的ISO镜像文件到光驱设备/dev/cdrom中。
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -
该命令将刻录一个压缩了的ISO镜像文件cd_iso.gz到光驱设备/dev/cdrom中。
mount -o loop cd.iso /mnt/iso
该命令将ISO镜像文件cd.iso挂载到目录/mnt/iso中,以便访问其中的内容。
cd-paranoia -B
该命令将从CD光盘转录音轨,并将其保存为WAV文件。
cd-paranoia -- "-3"
该命令将从CD光盘转录音轨,并将其保存为WAV文件。参数-3指定了一些特定的选项,可以根据需要进行修改。
cdrecord --scanbus
该命令将扫描总线以识别SCSI通道,并列出可用的CD/DVD设备。
dd if=/dev/hdc | md5sum
该命令将从设备/dev/hdc读取数据,并计算其MD5校验和。
十八、网络
ifconfig eth0
该命令将显示名为eth0的以太网卡的配置信息。
ifup eth0
该命令将启用名为eth0的网络设备。
ifdown eth0
该命令将禁用名为eth0的网络设备。
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
该命令将设置名为eth0的网络设备的IP地址为192.168.1.1,子网掩码为255.255.255.0。
ifconfig eth0 promisc
该命令将设置名为eth0的网络设备成为混杂模式,以便嗅探网络数据包。
dhclient eth0
该命令将以DHCP模式启用名为eth0的网络设备,从DHCP服务器获取IP地址和配置信息。
route -n
该命令将显示当前系统的路由表。
route add -net 0/0 gw IP_Gateway
该命令将配置默认网关,其中IP_Gateway是要设置的网关的IP地址。
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
该命令将配置一个静态路由以将流量发送到目标网络’192.168.0.0/16’,其中IP地址192.168.1.1是用于到达目标网络的网关。
route del 0/0 gw IP_gateway
该命令将删除一个静态路由,其中IP_gateway是要删除的路由的网关IP地址。
hostname
该命令将显示当前主机的机器名。
host www.example.com
该命令将解析主机名www.example.com为对应的IP地址,或将IP地址解析为主机名。
nslookup www.example.com
该命令用于查询DNS记录,检查域名解析是否正常。在网络故障排除时,可用于诊断网络问题。
ip link show
该命令将显示当前系统中的网卡信息。
mii-tool
该命令用于查看和管理介质网络接口的状态。
ethtool
该命令用于查询和设置网卡的配置信息。
netstat -tupl
该命令用于显示当前系统上TCP/UDP的状态信息。
tcpdump tcp port 80
该命令用于捕获并显示所有HTTP协议流量。
总结
Linux 命令是管理和操作 Linux 系统的重要工具,通过它们可以执行各种任务,包括文件操作、系统管理、网络配置等。通过学习和使用 Linux 命令,用户可以更好地理解和掌握操作系统的工作原理,从而提高技能和解决问题的能力。熟悉和掌握常用的 Linux 命令对于任何使用 Linux 系统的用户都是非常有益的。
学习Linux命令可以提高系统管理和维护的能力,扩展技术广度,更高效地完成任务。同时,它培养了问题解决和自动化思维,提升了技术竞争力。掌握Linux命令还能够深入理解操作系统和网络的工作原理,为进一步学习与开发打下坚实基础。