Skip to main content

常用shell命令

下载

使用 wget

wget 的设计初衷就是为了下载,所以默认行为非常直接。

  • 基本下载:

    wget https://example.com/file.zip
  • 指定保存的文件名 (-O):

    wget -O my_filename.zip https://example.com/file.zip

使用 curl

curl 是一个功能更强大的数据传输工具,但在下载文件时,默认会将内容打印到终端,所以你必须指定输出方式。

  • 基本下载并保持原名 (-O 大写):

    curl -O https://example.com/file.zip
  • 指定保存的文件名 (-o 小写):

    curl -o my_filename.zip https://example.com/file.zip

核心区别小贴士

功能wget 命令curl 命令
断点续传wget -c [URL]curl -C - -O [URL]
后台下载wget -b [URL]不直接支持(需配合系统命令)
下载整个网站支持(递归下载 -r不支持

温馨提示: 如果你在下载大文件时网络不稳定,建议优先使用 wget -c,它的自动重试机制通常比 curl 更省心。

文件描述符

这些符号属于 Bash 中的**文件描述符(File Descriptor, FD)**重定向操作。

在 Linux 中,系统用数字来标识打开的文件或连接:0 是标准输入(stdin),1 是标准输出(stdout),2 是标准错误(stderr)。而数字 3 及以上可以由用户自定义。

1. exec 3<> /dev/tcp/... 中的 <>

这里的 <> 表示以可读写模式打开文件或设备。

  • <:代表输入(Read)。
  • >:代表输出(Write)。
  • 3<>:意味着我们将文件描述符 3 绑定到指定的网络地址,既能从这个连接读取服务器返回的数据,也能向服务器发送指令。

2. >&3<&3 的区别

这两个符号用于将一个命令的输出或输入“嫁接”到我们自定义的描述符 3 上。

  • echo "..." >&3

    echo 本该显示在屏幕上的内容,重定向发送到描述符 3 指向的网络连接中。这里的 & 是为了告诉 Bash,后面的 3 是一个文件描述符,而不是一个名为 "3" 的普通文件。

  • cat <&3

    cat 命令从描述符 3读取数据。这通常用于接收网络连接传回的响应数据(比如下载的文件内容)。

3. exec 3<&- 是什么意思?

这表示关闭文件描述符 3

  • -:在重定向语境下代表“关闭”。
  • 3<&-:切断与目标 IP 的连接并释放描述符 3

如果不执行这一步,该连接会一直占用系统资源,直到 Shell 进程结束。在脚本编写中,这是一个良好的“清理”习惯。

总结对比

符号动作类型实际意义
3<>绑定创建一个编号为 3 的双向通信管道。
>&3写入把数据“推”进管道(发给服务器)。
<&3读取从管道里“拉”出数据(接收服务器回传)。
3<&-关闭拆除管道,释放资源。