快乐的Linux命令行

- 2024/11/12 更新: 推荐增加CLI tools you won’t be able to live without 🔧和40 个超有趣的 Linux 命令行彩蛋和游戏
在现代操作系统中,图形用户界面 (GUI) 让我们与计算机的交互变得直观和简单。然而,对于许多开发者、系统管理员和技术爱好者而言,Linux 命令行仍然是最为强大且不可替代的工具。通过它,我们能够精准地控制系统资源、自动化复杂任务,并快速处理各种系统操作。与 GUI 不同,命令行的操作不依赖于鼠标或其他外部设备,只需键入一行命令,便可在数秒内完成从文件管理到网络配置、从进程控制到系统监控等一系列操作。正因为其高效、灵活和可扩展性,Linux 命令行成为了技术专家首选的工作方式之一。本文,我们将逐步探索 Linux 命令行的基础知识,了解一些常用的命令,以及如何利用这些命令高效管理系统。无论你是新手还是经验丰富的用户,掌握这些命令都会让你在 Linux 世界中如鱼得水。
1. 文件管理
find
语法
|
|
列出当前目录
使用不带参数和选项的find会列出当前目录下的所有文件及目录:
|
|

搜索特定目录
通过指定目录可以让find命令特定目录。
|
|

在指定目录中搜索特定文件
有时,我们会想在某个指定目录下搜索特定文件名,例如:
|
|

模糊搜索
如果想搜索系统中所有以.config为文件名结尾的文件的话,我们可以使用*通配符进行模糊搜索。
|
|

指定搜索深度
通过-maxdepth和-mindepth选项可以分别指定搜索时的最大和最小深度。
|
|

或操作符
通过使用或操作符可以组合搜索结果,该操作符如下例中所示,用-o或-or选项表示。
|
|

指定搜索类型
通过-type选项,我们可以指定搜索文件类型,例如-type f搜索文件,-type d搜索目录:

指定搜索文件大小
通过-size选项,我们可以指定搜索文件大小。比如,-size 10k表示搜索大小为10k的文件,-size +10k表示搜索大小超过10k的文件,-size -10k表示搜索大小少于10k的文件。

https://man7.org/linux/man-pages/man1/find.1.html
2. 文档编辑
grep
grep 是Global Regular Expression Print 的缩写,用于在指定文件中搜索字符串,它会打印匹配到的行。
语法
使用语法如下:
|
|
PATTERN表示搜索模式。
单个文件搜索

如果我们想在log1文件中搜索andy这个模式,可以使用如下命令:
|
|

多个文件搜索
若想在多个文件进行模式搜索,可以使用如下命令:
|
|

搜索整个目录
work目录中只有两个文件,如果有成百上千个文件,显然不能上例一样指明目录下所有的文件名,此时我们可以使用*通配符来搜索整个当前目录:
|
|

按单词搜索
以上的例子没有把andy当作整个单词搜索,只要单词中匹配到andy这部分就会被搜索到。若想按单词搜索,使用-w选项即可。
|
|

忽略大小写
使用-i选项可以让grep命令忽略大小写对模式进行搜索。
|
|

反转搜索
若想查看没有匹配到的行,我们可以使用-v选项:
|
|

按行搜索
通过-x选项可以让grep按行进行搜索:
|
|

搜索子目录
目录中可能包含子目录,若想进一步在子目录进行搜索,可以使用-r选项:
|
|

统计匹配数
通过使用-c选项可以统计每个文件的匹配数。
|
|

https://man7.org/linux/man-pages/man1/grep.1.html
How To Use grep Command In Linux/UNIX: https://phoenixnap.com/kb/grep-command-linux-unix-examples
3. 文件传输
4. 磁盘管理
5. 磁盘维护
6. 网络通讯
curl
curl是一个用于与远端服务器进行信息交换的命令行工具。通过curl命令,可以十分方便地上传或者下载数据。本文我们将介绍如何在 Ubuntu 18.04.4 LTS 上使用curl命令。
安装
在终端中输入:
|
|
即可安装。
语法
curl命令的语法如下:
|
|
<url>表示 URL 是必须的,而[options...]表示选项可以有多个或者零个。如果不带任何选项,对应 URL 的资源数据会在标准输出设备中输出。例如:
|
|

如上所示,百度主页的源代码正常在屏幕上打印输出了。
保存输出至文件
通常我们需要将请求的数据保存到文件中,此时可以使用-O或者-o选项。
|
|

-O选项会使用远端服务器上的文件名作为保存到本地文本的文本名。如不希望这样的话,可以-o选项自定义本地文件的文件名。
|
|

下载多个文件
有时,我们会需要多个文件,除了不断运行curl -O url1,curl -O url2……命令外,我们也可以使用如下方式:
|
|

设置请求 User-Agent 字段
HTTP 请求报文中有一个 User-Agent 头部字段,我们可以通过使用-A选项对其进行设置:
|
|

获取 HTTP 响应头
通过-I选项,我们可以获取到 HTTP 响应报文的头部信息。
|
|

使用代理
为了能顺利访问到资源,有时我们需要用到代理,使用-x选项即可:
|
|

恢复下载
在下载大文件时,由于持续时间会比较长,网络可能会因为某些原因断开,此时我们可以用-C选项恢复下载而不用从头下载。
|
|

https://curl.se/docs/manual.html
7. 系统管理
ps
ps命令是进程状态(Process Status)的缩写,能显示 Linux 系统当前运行进程的相关信息。
语法
ps命令的语法如下:
|
|
当前 shell 运行的进程
不带任何选项的ps命令会显示当前 shell 运行的进程:
|
|

PID指的是进程号TTY指的是用户登录的终端类型TIME指的是进程运行的时间CMD指的是启动进程的命令
列出所有进程
使用-A或-e选项可以列出所有进程:
|
|

列出与特定用户相关的进程
如果想列出与特定用户相关的进程,可以使用-u选项。
|
|
例如:
|
|

显示所选列
通过-o选项后指定的参数可以选择想要显示的列。

搜索进程
配合grep命令,我们可以十分方便的对进程进行搜索。
|
|

https://man7.org/linux/man-pages/man1/ps.1.html
https://www.journaldev.com/24613/linux-ps-command
https://www.geeksforgeeks.org/ps-command-in-linux-with-examples/
uname
本节我们将介绍uname命令,该命令非常实用,可以打印输出系统相关信息。
语法
|
|
可选选项如下:
-s, (--kernel-name):打印输出内核名称-n, (--nodename):打印输出主机名(在网络中使用),此时输出和hostname命令一样-r, (--kernel-release):打印输出内核版本-v, (--kernel-version):打印输出内核版本和构建时间-m, (--machine):打印输出机器硬件名称-p, (--processor):打印输出处理器架构-i, (--hardware-platform):打印输出硬件平台-o, (--operating-system):打印输出操作系统名称-a, (--all):和-snrvmpio打印输出信息一样
uname命令不带任何选项时,打印输出内核名称,和uname -s一样:

为了方便使用,我们可以通常使用-a选项:

其中:
Linux为内核名称andyfree-ubuntu为主机名4.15.0-88-generic为内核版本##88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020为内核版本和构建时间- 三个
x86_64分别为硬件名称、处理器架构和硬件平台 GNU/Linux为操作系统名称
更改主机名
如上图所示,本文所使用的机器的主机名为andyfree-ubuntu,我们可以使用hostnamectl命令自行更改主机名,例如:将主机名改为lucas:
|
|

8. 系统设置
9. 备份压缩
10. 设备管理
推荐
快乐的 Linux 命令行: https://billie66.github.io/TLCL/
the-art-of-command-line: Master the command line, in one page
CLI tools you won’t be able to live without 🔧
参考
linux 命令分类: https://linux265.com/course/linux-commands.html
Linux 命令大全: https://www.runoob.com/linux/linux-command-manual.html
支付宝
微信