Linux常用命令有很多,本文不会逐个介绍。以下命令是我在后期使用中遇到的,算是我对Linux常用命令的补充、回顾、总结。本篇文章阅读需要一定的Linux基础。更多常见命令可参考:600条Linux命令总结。
持续更新中…
ln
ln
命令在Linux系统中用于创建文件链接。- Linux中文件链接的方式有两种:
- 符号链接(也称为软链接Symbolic Link):包含了到原文件的路径信息,相当于一个指向原文件的快捷方式。
- 符号链接有自己的文件属性及权限等。
- 可对不存在的文件或目录创建符号链接。
- 符号链接可交叉文件系统,即可以在不同的文件系统之间创建。
- 删除符号链接并不影响被指向的文件,但若被指向的原文件被删除,则相关符号链接被称为死链接(dangling link)。若被指向的文件重新被创建,死链接可恢复为正常的符号链接。
- 符号链接文件的大小是其指向的文件的路径字符串的字节数。
- 硬链接:硬链接本质上是给一个文件取一个新的名称,原文件和硬链接在物理上仍然是同一个文件。它们共享相同的inode(索引节点)和数据块。
- 创建硬链接会在对应的目录中增加额外的记录项以引用文件。
- 原文件和硬链接文件对应于同一文件系统上的一个物理文件。
- 创建硬链接时原文件的连接数(i_nlink)会递增。即硬链接数递增。
- 删除文件时,
rm
命令会递减计数的链接数。文件要是存在,至少有一个链接数。当链接数为零时,该文件才会被真正删除。 - 硬链接不能跨域驱动器或分区,也不支持对目录创建硬链接。
- 符号链接(也称为软链接Symbolic Link):包含了到原文件的路径信息,相当于一个指向原文件的快捷方式。
- 总结来说,符号链接(软链接)和硬链接的主要区别在于:
- 符号链接是一个独立的文件,它包含了到原文件的路径信息(快捷方式);而硬链接则与原文件共享相同的inode和数据块(文件别名)。
- 符号链接可以跨文件系统,并且可以对不存在的文件或目录创建;而硬链接则不能跨域驱动器或分区,也不能对目录创建。
- 删除符号链接不影响原文件,但删除原文件会使符号链接成为死链接;而删除硬链接文件时,只有当所有硬链接都被删除且原文件的链接数为零时,文件才会被真正删除。即硬链接数为0,文件才真正被删除。
- Linux中文件链接的方式有两种:
这个命令允许你在不同的位置为同一个文件或目录建立同步的链接,从而避免了在多个位置重复存储相同的文件内容,节省了磁盘空间。
ln
命令的基本语法如下:1
ln [选项] <源文件或目录> <链接文件或目录>
- 常用选项包括:
-s
:创建符号链接(软链接)。这会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,而是保存了原始文件的路径。(创建快捷方式)- 不使用
-s
选项时创建硬链接。
- 不使用
-f
:强制执行,如果链接文件已存在则覆盖。-v
:显示详细的输出信息。--help
:查看帮助文档。
- 理解记忆:ln可以理解为link的缩写,s可以理解为soft软的意思。
- 注意:源文件一般用绝对路径,相对会出现死链接情况。
- 常用选项包括:
简单介绍一些ls -lh
输出
|
|
演示:
|
|
注意:
- 测试环境是在Linux中,
ln
命令并不适用于windows环境。创建的文件链接无效。 - 目录只能创建软链接,不能创建硬链接。
- 文件两种链接都可以创建。
curl
curl
命令是一个利用URL规则在命令行下工作的文件传输工具,它支持文件的上传和下载,因此被视为综合传输工具,但传统上习惯称其为下载工具。curl支持包括HTTP、HTTPS、FTP等众多协议,并具备多种特性,如POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等。这些特性使得curl在处理网页处理流程和数据检索自动化方面非常有用。
总结:用于发送网络请求,可以下载和上传文件。而wget
只能用于下载文件,但wget下载文件的功能比curl
强大。
安装:
- linux系统:根据你的Linux发行版,使用相应的包管理器来安装curl。
- 对于Debian/Ubuntu系统,使用apt-get命令安装:
sudo apt install curl
- 对于CentOS/Fedora系统,使用yum命令安装:
sudo yum install curl
- 对于Arch Linux系统,使用pacman命令安装:
sudo pacman -S curl
- 对于Debian/Ubuntu系统,使用apt-get命令安装:
- windows系统:
- MacOS系统自带。
基本使用:
curl命令的基本语法格式为:
curl [选项] URL
。其中,URL是要请求的目标地址,而选项则用于指定各种参数和功能。-X
或--request
:用于指定HTTP请求方法,如GET、POST、PUT、DELETE等。- 默认发送get请求。
1
curl -X POST http://example.com/
-H
或--header
: 添加自定义的 HTTP 头信息。1
curl -H "Content-Type: application/json" http://example.com/
-d
或--data
: 发送 POST 请求时,将数据作为请求体发送。1
curl -d "param1=value1¶m2=value2" http://example.com/
对于 JSON 数据:
1
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" http://example.com/
-F
或--form
: 用于发送 multipart/form-data 格式的数据,通常用于文件上传。- 参数
"文件名=@path"
,还可以指定类型"文件名=@path;type=MIME"
1
curl -F "file=@filename.txt" http://example.com/upload
- 参数
-o
或--output
: 将响应输出到文件,而不是显示在终端上。默认当前目录1
curl -o output.html http://example.com/
-O
: 将响应保存到本地文件,文件名与远程文件的文件名相同。在当前目录1
curl -O http://example.com/file.txt
-s
或--silent
: 静默模式,不显示进度或错误消息。常用S组合使用,显示错误消息。-v
或--verbose
: 详细模式,显示详细的通信过程,包括请求头和响应头。-i
: 显示响应头信息以及返回的内容 body。-I
: 只显示响应头信息。-u
用户名:密码: 指定用户名和密码进行身份验证。1
curl -u username:password http://example.com/
-L
: 跟随重定向。当 HTTP 响应是一个重定向时,curl 会自动获取重定向后的内容。-k
或--insecure
: 允许连接到不安全的 SSL 站点,即忽略 SSL 证书验证。
常用组合:curl -fsSL
,默认get请求。
- f不显示客户端错误。
- s不显示进度、错误消息。配合S显示错误消息
- L接受重定向。
wget
wget
是一个在 Unix 和 Linux 系统上常用的命令行工具,用于从网络上下载文件。
优点:
- 支持断点续传:如果下载过程中连接中断,可以在之后从断点处继续下载。
- 支持递归下载:可以下载网页上的所有链接文件,并重建目录结构。
- 强大的重试机制:在下载过程中如果网络出现问题,
wget
会自动重试,直到下载完成。 - 后台执行:支持在后台运行下载任务,用户无需保持登录状态。
curl没有以上优点,但它支持更多的协议。wget只支持HTTP、HTTPS和FTP协议。curl使用更广泛。
安装:
linux系统:根据你的Linux发行版,使用相应的包管理器来安装wget。
对于Debian/Ubuntu系统,使用apt-get命令安装:
sudo apt install wget
对于CentOS/Fedora系统,使用yum命令安装:
sudo yum install wget
对于Arch Linux系统,使用pacman命令安装:
sudo pacman -S wget
windows系统:
macos系统:
对于macOS,使用Homebrew包管理器来安装wget。
1
brew install wget
基本使用:
-b, –background:在后台执行下载任务。
-c, –continue:继续下载之前未完成的文件。
-r, –recursive:递归下载,下载指定 URL 中的所有链接。可以下载整个目录及其子目录。
1
wget -r http://www.example.com/
注意:在使用递归下载时,建议加上
-np
和-nH
选项,以避免下载过多的不必要文件和创建复杂的目录结构。-np, –no-parent:不递归下载上级目录。
-nH, –no-host-directories:不创建主机目录,将文件保存在当前目录。
-P DIRECTORY, –directory-prefix=DIRECTORY:将下载的文件保存到指定的目录。
1
wget -P /tmp http://www.example.com/file.zip
-O FILE, –output-document=FILE:将下载的文件保存为指定的文件名。如果存在会覆盖。
-N
(时间戳检查),如果旧会覆盖,反之不会。1
wget -O new_file.zip http://www.example.com/file.zip
-nc, –no-clobber:如果文件已经存在,不覆盖原有文件。
-nv, –no-verbose:下载时只显示更新和出错信息,不显示详细的执行过程。
-v, –verbose:详细模式,增加输出信息。
-q, –quiet:静默模式,减少输出信息。
–no-check-certificate:下载 HTTPS 网站资源时,跳过证书检测过程。
-t NUM 或 –tries=NUM:指定最大尝试次数。如果下载失败,wget 会尝试重新下载指定的次数。
-U AGENT 或 –user-agent=AGENT:指定 User-Agent 字符串。这可以用来伪装为不同的浏览器或客户端。
-N 或 –timestamping:如果本地文件存在且时间戳较新,则不重新下载文件。
-T SEC 或 –timeout=SEC:指定超时时间(以秒为单位)。
-A TYPES 或 –accept=TYPES:指定下载文件的类型。例如,
-A jpg,png,gif
表示只下载 jpg、png 和 gif 文件。-d 或 –debug:打印调试输出。这会在标准错误上输出大量信息,通常用于诊断问题。
常用组合:
wget -O-
:O表示指定文件名,后面-表示没有指定文件名,内容将输出到TTY。
通常配合bash -c "$(wget -O- url)"
运行脚本。url为脚本地址。
其中$()表示在当前TTY中运行子命令,下载脚本。
[bash -c](#bash -c)表示将下载的字符串做为命令执行。
bash -c
bash -c
命令用于在 Bash shell 中执行一个字符串作为命令。
基本语法:
|
|
command_string
是你想要执行的命令字符串。arg0
、arg1
等是可选的,它们会被用作$0
、$1
、$2
等 shell 变量在command_string
内部。- 注意这里的$0并不是脚本名或终端名,而是第一个参数。
- 字符串可以用
""/''
,区别在于双引号会转义特殊字符,单引号不会。执行脚本时建议双引号。
示例:
|
|
pacman
Pacman是Arch Linux及其衍生发行版(如Manjaro、EndeavourOS等)使用的包管理器。总结它,是因为我们可以在Windows上安装msys2来使用pacman包管理器,进而在Windows上安装Linux命令。
基本用法:
|
|
常用选项如下:
-S
:安装软件包、软件源列表。-y
:刷新软件源列表。-u
:更新软件包到最新版。
- 以上三个选项可以组合使用。常用:
-Syu
:更新软件源列表,并升级已安装的包到最新版。【推荐】*-Sy
:更新软件源列表并安装。【推荐】*-Su
:只升级已安装的包到最新版。
-S package_name
:安装软件包。多个用空格隔开。【推荐】*-R package_name
:卸载软件包(会保留依赖)。-Rs package_name
:卸载一个软件包及其依赖(未被其他包使用的依赖)。-Rns package_name
:卸载一个软件包并删除不再使用的依赖。【推荐】*
-Sc
:清理未使用的包缓存。-Scc
:清理所有包缓存。
-Ss keyword
:搜索包含关键字的软件包。-Si package_name
:显示软件包信息。【推荐】*
-Q
:列出所有已安装的软件包。-Qs keyword
:列出已安装的包含关键字的软件包。【推荐】-Qi package_name
:显示已安装软件包的信息。【推荐】*-Ql package_name
:列出软件包中包含的文件。【推荐】-Qk
:检查系统中所有已安装包的完整性。-Qkk package_name
:检查指定软件包的完整性。