首页 > 系统相关 >100个常用Shell使用命令详解

100个常用Shell使用命令详解

时间:2024-06-12 10:12:41浏览次数:25  
标签:文件 Shell 命令 详解 user home 100 txt 输入

转载自公众号:一口Linux

 

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

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


文件操作命令

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

  1. ls:列出目录的内容

ls /home
  1. cd:改变目录

cd /home/user/Documents
  1. pwd:打印当前工作目录

pwd
  1. cat:查看文件内容

cat /etc/passwd
  1. more:分页查看文件内容

more /var/log/syslog
  1. less:反向分页查看文件内容

less /var/log/syslog
  1. touch:创建一个空文件或更改文件的访问和修改时间

touch /home/user/newfile.txt
  1. cp:复制文件或目录

cp /home/user/file.txt /home/user/Documents
  1. mv:移动或重命名文件或目录

mv /home/user/file.txt /home/user/Documents/newfile.txt
  1. rm:删除文件或目录

rm /home/user/unwantedfile.txt
  1. find:在文件系统中搜索文件或目录

find / -name '*.log'
  1. grep:在文件中搜索具有特定模式的行

grep 'error' /var/log/syslog
  1. head:输出文件的开始部分

head -n 10 /var/log/syslog
  1. tail:输出文件的尾部

tail -n 20 /var/log/syslog
  1. sort:对文本文件的行进行排序

sort /etc/passwd
  1. wc:计算字数、行数和字节数

wc /var/log/syslog
  1. cut:从文件的每一行中剪切字节、字符和字段

cut -d: -f1 /etc/passwd
  1. nano,vi,emacs:常用的文本编辑器

nano /home/user/file.txt
vi /home/user/file.txt
emacs /home/user/file.txt
  1. paste:合并文件的行。

paste file1.txt file2.txt

搜索命令

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

  1. find:在文件系统中搜索文件或目录。

find / -name '*.log'
  1. grep:在文本文件中搜索决定的文本模式。

grep 'error' /var/log/syslog
  1. locate:基于文件名在数据库中快速找到文件。

locate myFile.txt
  1. which:返回可执行文件的路径。

which java
  1. ack:特别为程序员设计的一款文件搜索工具。默认会忽略多数版本控制文件夹(如.git, .svn等)的内容。

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

ag 'your_search_term'
  1. whereis:此命令可用于查找二进制程序、源文件、手册页以及其他文件的位置。

whereis ls
  1. type:此命令用于确定某个命令是内部 shell 命令、可执行文件还是别名。

type pwd
  1. apropos:如果你只记得关于某个命令的部分信息,你可以使用 apropos 命令来搜索帮助手册中的命令描述。

apropos partition
  1. alias:如果你经常使用某些 Linux 命令,你可以使用 alias 命令为这些常用命令创建一个短名,以提升你的工作效率。

alias l='ls -al'

目录操作命令

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

  1. mkdir:创建一个新的目录

mkdir /home/user/new_directory
  1. rmdir:删除一个空目录

rmdir /home/user/empty_directory
  1. tree:以树形结构列出目录的内容

tree /home/user/
  1. du:估计文件和目录的磁盘使用空间

du -sh /home/user/Documents
  1. df:显示磁盘使用空间

df -h

权限操作命令

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

  1. chmod:更改文件或目录的权限

 chmod 755 /home/user/file.txt
表示设置文件的主用户有读,写和执行权限(rwx = 7),同组的用户和其他用户有读和执行权限(rx = 5)。
  1. chown:更改文件或目录的所有者和所属的组

chown newuser:newgroup /home/user/file.txt
表示将/home/user/file.txt的所有者更改为newuser,所属的组更改为newgroup。
  1. chgrp:更改文件或目录的所属组

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

<iframe height="240" src="https://file.daihuo.qq.com/mp_cps_goods_card/v90/index.html" width="320"></iframe>

 

网络操作命令

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

  1. ping:发送网络请求以测试网络连接

ping www.linuxyz.cn
  1. ifconfig:显示或配置网络接口

ifconfig eth0
  1. netstat:显示网络连接、路由表等网络状态信息

netstat -ntlp
  1. ssh:远程登录或执行远程命令

 ssh user@remote_host
  1. scp:在本地和远程系统之间安全地复制文件

scp /path/to/file user@remote_host:/remote/path/
  1. curl:获取网络资源

curl www.linuxyz.cn
  1. telnet:远程登录工具

 telnet remote_host 23
  1. nslookup:查询 DNS 名称服务器的记录

nslookup www.linuxyz.cn
  1. ftp:在本地主机和FTP服务器之间建立FTP连接。

ftp ftp_server
  1. wget:获取网络资源

wget www.linuxyz.cn -o google.html 

进程和系统控制命令

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

  1. ps:显示当前进程的状态

ps aux
  1. top:动态显示运行中的进程

  2. kill:发送信号以终止进程

kill 1234
  1. shutdown:关闭机器

 shutdown -h now
  1. reboot:重启机器

  2. logout:退出登录会话


文本操作命令

在编写或处理文本文件时,下列命令可以帮助你完成各种复杂任务:

  1. echo:打印信息到终端。

echo 'Hello, World!'
  1. printf:格式化并打印信息。

printf 'Name: %s\nAge: %d\n' 'Alice' 20
  1. sed:流编辑器,用于对文本文件进行特定的行处理和替换。

echo 'Hello, World!' | sed 's/World/Shell/g'
  1. awk:在文本文件中进行模式扫描和处理语言。

echo -e 'name\tage\nAlice\t20\nBob\t22' | awk '{if ($2 >= 21) print $1}'

压缩与解压命令

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

  1. tar:创建、展开及管理tar包。

tar -cvf archive.tar folder
  1. gzip:用于文件压缩或解压。

gzip file
  1. gunzip:用于解压gzip压缩的文件。

gunzip file.gz
  1. zip/unzip:创建和解压zip格式的压缩包。

zip -r archive.zip folder
unzip archive.zip

磁盘使用管理命令

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

  1. df:报告文件系统磁盘空间使用情况。

df -h
  1. du:估计并报告文件及文件夹的磁盘使用情况。

du -sh folder
  1. fdisk:对磁盘进行分区管理。

sudo fdisk -l
  1. hdparm:查看或修改SATA/ATA磁盘参数。

sudo hdparm -i /dev/sda

包管理命令

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

  1. apt-get:APT包处理工具,用于处理包。

sudo apt-get install package
  1. dpkg:Debian包管理器。

sudo dpkg -i package.deb

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

  1. yum:高级软件包管理器,用于处理rpm包。

sudo yum install package
  1. rpm:RPM包管理器。

sudo rpm -i package.rpm

进程管理命令

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

  1. ps:报告进程当前状态。

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]
  1. top:动态显示当前耗费系统资源最多的进程。

  2. htop:比top更友好的动态进程查看工具。

htop
  1. kill:终止或者发送一个信号到指定进程。

  2. pkill:条件地终止或者发送一个信号到指定进程。

pkill process_name

环境变量命令

查看或设置环境变量:

  1. env:显示当前所有的环境变量。

输入:env
输出:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
PWD=/home/user
  1. set:显示当前shell所有的环境变量及函数。

 输入:set
输出:展示所环境变量以及函数
  1. export:设置或显示环境变量。

输入:
export VARName='Value'
echo $VARName
输出结果:
Value

系统信息发布相关命令

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

  1. uname:会打印操作系统的名称。

输入:
uname
输出:
Linux
  1. hostname:打印系统的主机名。

输入:
hostname
输出:
myhostname
  1. dmesg:打印或控制内核环形缓冲区。

输入:
dmesg | less
  1. df:展示文件系统的磁盘空间使用情况。

 输入: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% /
  1. free:展示系统中未使用和已经使用的物理和swap内存。

输入:free -h
输出:
total used free shared buff/cache available
Mem: 3.8G 487M 1.9G 122M 1.4G 3.0G
Swap: 0B 0B 0B
  1. uptime:展示系统已经运行了多久,有多少用户正在登录,以及系统负载。

输入:uptime
输出: 16:14:30 up 43 min, 1 user, load average: 0.34, 0.36, 0.40
  1. last:查看系统的重启和关机记录。

输入:last reboot
  1. w:展示哪些用户正在登录。

输入: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
  1. who:展示哪些用户正在登录,和w命令相似但信息更少。

输入:who
输出: user tty1 2022-01-28 14:36
  1. id:展示当前用户的UID、GID以及所在的组。

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

<iframe height="240" src="https://file.daihuo.qq.com/mp_cps_goods_card/v90/index.html" width="320"></iframe>

 

系统控制命令

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

  1. halt:关机。

输入:sudo halt
  1. reboot:重启系统。

输入:sudo reboot
  1. shutdown:关机或者重启,和上述两个命令一样,但是提供更多的选项。

关闭系统:sudo shutdown -h now
重启系统:sudo shutdown -r now
  1. passwd:更改用户密码。

更改密码:passwd

文本编辑器命令

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

  1. vi/vim:vi是一个文本编辑器,而vim是vi的改进版,提供了更多的功能。

  2. nano:一个简单易用的命令行文本编辑器。

  3. emac:一个强大的文本编辑器,也是一个定制化的计算环境。

其他常用命令

  1. man:查看命令的帮助文档。

  2. whatis:显示一个命令的简单描述。

输入:whatis ls
输出:ls (1) - list directory contents
  1. whereis:查找命令的二进制文件、源文件及帮助文档位置。

输入:whereis ls
输出:ls: /bin/ls /usr/share/man/man1/ls.1.gz
  1. which:查找并显示给定命令的完整路径。

 输入:which ls
输出:/bin/ls
  1. whoami:打印当前有效的用户名。

输入:whoami
输出:user
  1. date:显示或设置系统日期和时间

输入:date
输出: Tue Dec 21 02:16:12 UTC 2021
  1. cal:显示日历

输入: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
  1. alias:创建命令别名

  2. unalias:删除别名

  3. history:显示命令历史

  4. clear:清除屏幕或窗口内容

  5. watch:用于实时查看当前命令打印信息

输入:watch -n 2 date
解释:watch`命令会每2秒运行一次`date`命令,并实时显示输出
大多数人学习Shell脚本的最大动力是提高效率。使用Shell脚本,可以编写一个任务,然后让计算机去做,而你可以去忙其他的事情;可以编写一个任务,让计算机重复执行,而不需要你每次在命令行手动输入;可以更灵活地处理任务,比如管理用户,管理程序等。就这样,Shell脚本赋予你控制计算机的能力,一切尽在掌握。在未来,实践未知,探索无限,最好的方式是动手试试看,愿这完整的100个命令清单能够成为你在Linux世界里的指南针!掌握Shell命令并利用它们来编写脚本能够极大地提升工作效率,无论是进行系统管理还是进行程序设计,这都是一种强大的工具。

标签:文件,Shell,命令,详解,user,home,100,txt,输入
From: https://www.cnblogs.com/nicolasblog/p/18243385

相关文章

  • 第6篇:Milvus检索算法详解:从原理到应用
    欢迎来到Milvus检索算法的世界!在本文,我将带你深入了解Milvus的向量相似度计算和常用的检索算法。通过这篇博客,你将了解Milvus是如何高效计算向量相似度并进行向量检索的。准备好了吗?让我们开始这段知识之旅吧!文章目录Milvus的向量相似度计算向量相似度计算的原理......
  • TCP四次挥手全过程详解
    TCP四次挥手全过程有几点需要澄清:1.首先,tcp四次挥手只有主动和被动方之分,没有客户端和服务端的概念2.其次,发送报文段是tcp协议栈的行为,用户态调用close会陷入到内核态3.再者,图中的情况前提是双方程序正常运行,程序在挥手过程中崩溃的情况后面会讲到过程详解(时间顺序)1.......
  • 代码随想录算法训练营第第35天 | 977.有序数组的平方1005.K次取反后最大化的数组和 、
    1005.K次取反后最大化的数组和本题简单一些,估计大家不用想着贪心,用自己直觉也会有思路。https://programmercarl.com/1005.K次取反后最大化的数组和.html自己写的时间复杂度太高,看答案优化/***@param{number[]}nums*@param{number}k*@return{number}*/varl......
  • Shell脚本和变量
    文章目录Shell脚本shell的解释器Shell的作用Shell脚本的构成Shell的执行方式重定向操作变量变量的类型:变量名的规范变量值的规范整数运算`+-×/%`小数运算小数运算Shell脚本脚本就是可运行的代码的集合,脚本语言(计算机语言)脚本的特点:从上到下,按时执行。python......
  • coco数据集详解
    什么是COCO数据集?COCO数据集是一个可用于图像检测(imagedetection),语义分割(semanticsegmentation)和图像标题生成(imagecaptioning)的大规模数据集。它有超过330K张图像(其中220K张是有标注的图像),包含150万个目标,80个目标类别(objectcategories:行人、汽车、大象等),91种材料类别(stuff......
  • Maven详解
    1maven介绍1)为什么使用mavenMaven是一个强大的项目管理和构建工具,它能够简化Java项目的构建、依赖管理和发布过程。以下是Maven的一些主要特点和功能:项目结构管理:Maven采用约定优于配置的原则,提供了标准的项目结构模板,使得开发人员可以快速创建和维护项目。依赖管理:Maven通......
  • 大模型高效微调-LoRA原理详解和训练过程深入分析
    博客首发于我的知乎,详见:https://zhuanlan.zhihu.com/p/702629428一、LoRA原理LoRA(Low-RankAdaptationofLLMs),即LLMs的低秩适应,是参数高效微调最常用的方法。LoRA的本质就是用更少的训练参数来近似LLM全参数微调所得的增量参数,从而达到使用更少显存占用的高效微调。1.1问......
  • Xshell免费版下载及安装
    我们平时在日常开发和学习中离不开x-shell这类的软件,后台有很多粉丝和我反馈出一期x-shell软件的下载和安装。复制下面的网站https://www.xshell.com/zh/free-for-home-school/这里选择所选的软件就可以下载了,都是免费的下面介绍X-shell安装步骤1.找到下载好的安装包......
  • 【C语言】预处理详解(下卷)
    前言紧随上文。命令行定义比如关机命令:shutdown-s-t60其中-s,-t是命令行参数。传的参数不同,效果也不同。许多C的编译器提供了一种能力,允许在命令行中定义符号,用于启动编译过程。如,当我们根据同一个源文件要编译出一个程序的不同版本时,这个特点有些用处。(假如某个程......
  • C# JavaScriptSerializer序列化时的时间处理详解
    原文链接:https://www.jb51.net/article/122143.htm输出如下图所示: 猜测这里是由于js初始化时间的时候往往是向1970/01/01添加毫秒数,JavaScriptSerializer进行序列化的时候也会格式化为距离1970/01/01到当该时间点GMT+0时间的毫秒数,如果直接反序列化可以看到少了8小时,且......