100 个常用 Shell 命令使用讲解

100 个常用 Shell 命令使用讲解

在大多数的Linux和Unix系统、及其他类Unix系统中,Shell是用户与操作系统内核交互的主要方式。作为一种强大的命令行解释器,它也支持编程功能,用户可以写脚本来处理各种任务。

无论是新手还是专业人士,掌握Shell命令都是必不可少的技能。本文逐个解读和展示Shell脚本中最常用的100个命令,并为每个命令提供实际的例子。

文件操作命令以下是在Linux系统中操作文件的一些常用命令:

ls:列出目录的内容代码语言:javascript代码运行次数:0运行复制ls /home

cd:改变目录代码语言:javascript代码运行次数:0运行复制cd /home/user/Documents

pwd:打印当前工作目录代码语言:javascript代码运行次数:0运行复制pwd

cat:查看文件内容代码语言:javascript代码运行次数:0运行复制cat /etc/passwd

more:分页查看文件内容代码语言:javascript代码运行次数:0运行复制more /var/log/syslog

less:反向分页查看文件内容代码语言:javascript代码运行次数:0运行复制less /var/log/syslog

touch:创建一个空文件或更改文件的访问和修改时间代码语言:javascript代码运行次数:0运行复制touch /home/user/newfile.txt

cp:复制文件或目录代码语言:javascript代码运行次数:0运行复制cp /home/user/file.txt /home/user/Documents

mv:移动或重命名文件或目录代码语言:javascript代码运行次数:0运行复制mv /home/user/file.txt /home/user/Documents/newfile.txt

rm:删除文件或目录代码语言:javascript代码运行次数:0运行复制rm /home/user/unwantedfile.txt

find:在文件系统中搜索文件或目录代码语言:javascript代码运行次数:0运行复制find / -name '*.log'

grep:在文件中搜索具有特定模式的行代码语言:javascript代码运行次数:0运行复制grep 'error' /var/log/syslog

head:输出文件的开始部分代码语言:javascript代码运行次数:0运行复制head -n 10 /var/log/syslog

tail:输出文件的尾部代码语言:javascript代码运行次数:0运行复制tail -n 20 /var/log/syslog

sort:对文本文件的行进行排序代码语言:javascript代码运行次数:0运行复制sort /etc/passwd

wc:计算字数、行数和字节数代码语言:javascript代码运行次数:0运行复制wc /var/log/syslog

cut:从文件的每一行中剪切字节、字符和字段代码语言:javascript代码运行次数:0运行复制cut -d: -f1 /etc/passwd

nano,vi,emacs:常用的文本编辑器代码语言:javascript代码运行次数:0运行复制nano /home/user/file.txt

vi /home/user/file.txt

emacs /home/user/file.txt

paste:合并文件的行。代码语言:javascript代码运行次数:0运行复制paste file1.txt file2.txt

搜索命令以下命令可以帮助你搜索文件或文本:

find:在文件系统中搜索文件或目录。代码语言:javascript代码运行次数:0运行复制find / -name '*.log'

grep:在文本文件中搜索决定的文本模式。代码语言:javascript代码运行次数:0运行复制grep 'error' /var/log/syslog

locate:基于文件名在数据库中快速找到文件。代码语言:javascript代码运行次数:0运行复制locate myFile.txt

which:返回可执行文件的路径。代码语言:javascript代码运行次数:0运行复制which java

ack:特别为程序员设计的一款文件搜索工具。默认会忽略多数版本控制文件夹(如.git, .svn等)的内容。代码语言:javascript代码运行次数:0运行复制ack 'your_search_term'

ag(The Silver Searcher):比ack更快的代码搜索工具,同样默认忽略 .git 等版本控制文件夹中的内容。代码语言:javascript代码运行次数:0运行复制ag 'your_search_term'

whereis:此命令可用于查找二进制程序、源文件、手册页以及其他文件的位置。代码语言:javascript代码运行次数:0运行复制whereis ls

type:此命令用于确定某个命令是内部 shell 命令、可执行文件还是别名。代码语言:javascript代码运行次数:0运行复制type pwd

apropos:如果你只记得关于某个命令的部分信息,你可以使用 apropos 命令来搜索帮助手册中的命令描述。代码语言:javascript代码运行次数:0运行复制apropos partition

alias:如果你经常使用某些 Linux 命令,你可以使用 alias 命令为这些常用命令创建一个短名,以提升你的工作效率。代码语言:javascript代码运行次数:0运行复制alias l='ls -al'

目录操作命令以下是在Linux系统中操作目录的一些常用命令:

mkdir:创建一个新的目录代码语言:javascript代码运行次数:0运行复制mkdir /home/user/new_directory

rmdir:删除一个空目录代码语言:javascript代码运行次数:0运行复制rmdir /home/user/empty_directory

tree:以树形结构列出目录的内容代码语言:javascript代码运行次数:0运行复制tree /home/user/

du:估计文件和目录的磁盘使用空间代码语言:javascript代码运行次数:0运行复制du -sh /home/user/Documents

df:显示磁盘使用空间代码语言:javascript代码运行次数:0运行复制df -h

权限操作命令在Linux系统中,文件和目录的访问可以通过权限操作命令进行控制:

chmod:更改文件或目录的权限代码语言:javascript代码运行次数:0运行复制 chmod 755 /home/user/file.txt

表示设置文件的主用户有读,写和执行权限(rwx = 7),同组的用户和其他用户有读和执行权限(rx = 5)。

chown:更改文件或目录的所有者和所属的组代码语言:javascript代码运行次数:0运行复制chown newuser:newgroup /home/user/file.txt

表示将/home/user/file.txt的所有者更改为newuser,所属的组更改为newgroup。

chgrp:更改文件或目录的所属组代码语言:javascript代码运行次数:0运行复制chgrp newgroup /home/user/file.txt

表示将/home/user/file.txt的所属的组更改为newgroup。

网络操作命令以下是在Linux系统中与网络相关的一些常用命令:

ping:发送网络请求以测试网络连接代码语言:javascript代码运行次数:0运行复制ping www.linuxyz.cn

ifconfig:显示或配置网络接口代码语言:javascript代码运行次数:0运行复制ifconfig eth0

netstat:显示网络连接、路由表等网络状态信息代码语言:javascript代码运行次数:0运行复制netstat -ntlp

ssh:远程登录或执行远程命令代码语言:javascript代码运行次数:0运行复制 ssh user@remote_host

scp:在本地和远程系统之间安全地复制文件代码语言:javascript代码运行次数:0运行复制scp /path/to/file user@remote_host:/remote/path/

curl:获取网络资源代码语言:javascript代码运行次数:0运行复制curl www.linuxyz.cn

telnet:远程登录工具代码语言:javascript代码运行次数:0运行复制 telnet remote_host 23

nslookup:查询 DNS 名称服务器的记录代码语言:javascript代码运行次数:0运行复制nslookup www.linuxyz.cn

ftp:在本地主机和FTP服务器之间建立FTP连接。代码语言:javascript代码运行次数:0运行复制ftp ftp_server

wget:获取网络资源代码语言:javascript代码运行次数:0运行复制wget www.linuxyz.cn -o google.html

进程和系统控制命令以下是在Linux系统中管理进程和控制系统的一些常用命令:

ps:显示当前进程的状态代码语言:javascript代码运行次数:0运行复制ps aux

top:动态显示运行中的进程kill:发送信号以终止进程代码语言:javascript代码运行次数:0运行复制kill 1234

shutdown:关闭机器代码语言:javascript代码运行次数:0运行复制 shutdown -h now

reboot:重启机器logout:退出登录会话文本操作命令在编写或处理文本文件时,下列命令可以帮助你完成各种复杂任务:

echo:打印信息到终端。代码语言:javascript代码运行次数:0运行复制echo 'Hello, World!'

printf:格式化并打印信息。代码语言:javascript代码运行次数:0运行复制printf 'Name: %s\nAge: %d\n' 'Alice' 20

sed:流编辑器,用于对文本文件进行特定的行处理和替换。代码语言:javascript代码运行次数:0运行复制echo 'Hello, World!' | sed 's/World/Shell/g'

awk:在文本文件中进行模式扫描和处理语言。代码语言:javascript代码运行次数:0运行复制echo -e 'name\tage\nAlice\t20\nBob\t22' | awk '{if ($2 >= 21) print $1}'

压缩与解压命令以下命令主要用于管理和操作文件压缩及解压:

tar:创建、展开及管理tar包。代码语言:javascript代码运行次数:0运行复制tar -cvf archive.tar folder

gzip:用于文件压缩或解压。代码语言:javascript代码运行次数:0运行复制gzip file

gunzip:用于解压gzip压缩的文件。代码语言:javascript代码运行次数:0运行复制gunzip file.gz

zip/unzip:创建和解压zip格式的压缩包。代码语言:javascript代码运行次数:0运行复制zip -r archive.zip folder

unzip archive.zip

磁盘使用管理命令管理和查看磁盘使用情况:

df:报告文件系统磁盘空间使用情况。代码语言:javascript代码运行次数:0运行复制df -h

du:估计并报告文件及文件夹的磁盘使用情况。代码语言:javascript代码运行次数:0运行复制du -sh folder

fdisk:对磁盘进行分区管理。代码语言:javascript代码运行次数:0运行复制sudo fdisk -l

hdparm:查看或修改SATA/ATA磁盘参数。代码语言:javascript代码运行次数:0运行复制sudo hdparm -i /dev/sda

包管理命令在Debian,Ubuntu及其他基于Debian的系统中,可以使用以下命令进行软件包管理:

apt-get:APT包处理工具,用于处理包。代码语言:javascript代码运行次数:0运行复制sudo apt-get install package

dpkg:Debian包管理器。代码语言:javascript代码运行次数:0运行复制sudo dpkg -i package.deb

在RedHat, CentOS及其他基于RPM的系统中,可以使用以下命令进行软件包管理:

yum:高级软件包管理器,用于处理rpm包。代码语言:javascript代码运行次数:0运行复制sudo yum install package

rpm:RPM包管理器。代码语言:javascript代码运行次数:0运行复制sudo rpm -i package.rpm

进程管理命令查看和管理正在运行的进程:

ps:报告进程当前状态。代码语言:javascript代码运行次数:0运行复制ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.4 225848 7836 ? Ss Nov10 4:05 /lib/systemd/systemd --system --deserialize 39

root 2 0.0 0.0 0 0 ? S Nov10 0:00 [kthreadd]

root 4 0.0 0.0 0 0 ? I< Nov10 0:00 [kworker/0:0H]

top:动态显示当前耗费系统资源最多的进程。htop:比top更友好的动态进程查看工具。代码语言:javascript代码运行次数:0运行复制htop

kill:终止或者发送一个信号到指定进程。pkill:条件地终止或者发送一个信号到指定进程。代码语言:javascript代码运行次数:0运行复制pkill process_name

环境变量命令查看或设置环境变量:

env:显示当前所有的环境变量。代码语言:javascript代码运行次数:0运行复制输入:env

输出:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SHELL=/bin/bash

PWD=/home/user

set:显示当前shell所有的环境变量及函数。代码语言:javascript代码运行次数:0运行复制 输入:set

输出:展示所环境变量以及函数

export:设置或显示环境变量。代码语言:javascript代码运行次数:0运行复制输入:

export VARName='Value'

echo $VARName

输出结果:

Value

系统信息发布相关命令有时,你可能想要查看有关你的系统或硬件的信息。以下命令可以帮助你做到这一点:

uname:会打印操作系统的名称。代码语言:javascript代码运行次数:0运行复制输入:

uname

输出:

Linux

hostname:打印系统的主机名。代码语言:javascript代码运行次数:0运行复制输入:

hostname

输出:

myhostname

dmesg:打印或控制内核环形缓冲区。代码语言:javascript代码运行次数:0运行复制输入:

dmesg | less

df:展示文件系统的磁盘空间使用情况。代码语言:javascript代码运行次数:0运行复制 输入:df -h

输出:

Filesystem Size Used Avail Use% Mounted on

udev 962M 0 962M 0% /dev

tmpfs 200M 4.3M 196M 3% /run

/dev/sda1 30G 4.7G 24G 17% /

free:展示系统中未使用和已经使用的物理和swap内存。代码语言:javascript代码运行次数:0运行复制输入:free -h

输出:

total used free shared buff/cache available

Mem: 3.8G 487M 1.9G 122M 1.4G 3.0G

Swap: 0B 0B 0B

uptime:展示系统已经运行了多久,有多少用户正在登录,以及系统负载。代码语言:javascript代码运行次数:0运行复制输入:uptime

输出: 16:14:30 up 43 min, 1 user, load average: 0.34, 0.36, 0.40

last:查看系统的重启和关机记录。代码语言:javascript代码运行次数:0运行复制输入:last reboot

w:展示哪些用户正在登录。代码语言:javascript代码运行次数:0运行复制输入:w

输出: 16:17:51 up 1:42, 1 user, load average: 0.45, 0.47, 0.38

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

user tty1 14:36 1:42m 1.55s 0.06s w

who:展示哪些用户正在登录,和w命令相似但信息更少。代码语言:javascript代码运行次数:0运行复制输入:who

输出: user tty1 2022-01-28 14:36

id:展示当前用户的UID、GID以及所在的组。代码语言:javascript代码运行次数:0运行复制 输入:id

输出:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)

系统控制命令在一些特殊情况下,你可能需要进行一些系统控制操作。以下命令可以帮助你做到这一点:

halt:关机。代码语言:javascript代码运行次数:0运行复制输入:sudo halt

reboot:重启系统。代码语言:javascript代码运行次数:0运行复制输入:sudo reboot

shutdown:关机或者重启,和上述两个命令一样,但是提供更多的选项。代码语言:javascript代码运行次数:0运行复制关闭系统:sudo shutdown -h now

重启系统:sudo shutdown -r now

passwd:更改用户密码。代码语言:javascript代码运行次数:0运行复制更改密码:passwd

文本编辑器命令Linux提供了多种命令行文本编辑器。以下这些可能是你需要知道的:

vi/vim:vi是一个文本编辑器,而vim是vi的改进版,提供了更多的功能。nano:一个简单易用的命令行文本编辑器。emac:一个强大的文本编辑器,也是一个定制化的计算环境。其他常用命令man:查看命令的帮助文档。whatis:显示一个命令的简单描述。代码语言:javascript代码运行次数:0运行复制输入:whatis ls

输出:ls (1) - list directory contents

whereis:查找命令的二进制文件、源文件及帮助文档位置。代码语言:javascript代码运行次数:0运行复制输入:whereis ls

输出:ls: /bin/ls /usr/share/man/man1/ls.1.gz

which:查找并显示给定命令的完整路径。代码语言:javascript代码运行次数:0运行复制 输入:which ls

输出:/bin/ls

whoami:打印当前有效的用户名。代码语言:javascript代码运行次数:0运行复制输入:whoami

输出:user

date:显示或设置系统日期和时间代码语言:javascript代码运行次数:0运行复制输入:date

输出: Tue Dec 21 02:16:12 UTC 2021

cal:显示日历代码语言:javascript代码运行次数:0运行复制输入:cal

输出:

January 2022

Su Mo Tu We Th Fr Sa

1

2 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30 31

alias:创建命令别名unalias:删除别名history:显示命令历史clear:清除屏幕或窗口内容watch:用于实时查看当前命令打印信息代码语言:javascript代码运行次数:0运行复制输入:watch -n 2 date

解释:watch`命令会每2秒运行一次`date`命令,并实时显示输出

大多数人学习Shell脚本的最大动力是提高效率。使用Shell脚本,可以编写一个任务,然后让计算机去做,而你可以去忙其他的事情;可以编写一个任务,让计算机重复执行,而不需要你每次在命令行手动输入;可以更灵活地处理任务,比如管理用户,管理程序等。就这样,Shell脚本赋予你控制计算机的能力,一切尽在掌握。

在未来,实践未知,探索无限,最好的方式是动手试试看,愿这完整的100个命令清单能够成为你在Linux世界里的指南针!掌握Shell命令并利用它们来编写脚本能够极大地提升工作效率,无论是进行系统管理还是进行程序设计,这都是一种强大的工具。

相关推荐

信用卡持卡人认证失败是什么意思(信用卡不能刷了什么原因)
经典有趣的脑筋急转弯:小王娶媳妇为什么不花一分钱?
鸡年限定皮肤有哪些英雄联盟 鸡年限定皮肤有哪些英雄联盟
法蘭克·蘭帕德
必发365手机版下载

法蘭克·蘭帕德

📅 08-12 ⭐ 892
详解Mobile Atlas Creator1.9.16离线地图下载神器之下载自定义图源
微信怎么解除实名认证?微信实名解除实名,分享详细步骤!
推荐阅读 ❤️