linux下载命令之Wget和Curl

linux下载命令之Wget和Curl

想要通过命令行直接下载文件,通常想到的就是下面的两个工具:wget 和 curl,下面简单介绍一下两者的使用。

Wget

wget 全称为 web get ,其基本用法为:wget [-para] url ,常用的参数有以下几种:

  • -O 指定下载文件的保存名称
  • -b 为后台下载模式
  • -P 下载到指定目录
  • -c 支持断电续传
  • -p 下载页面内的所有资源、包括图片视频等
  • -r 递归下载
  • -t 最大尝试次数
1
2
3
4
# 默认无需参数的情况下即会将文件下载到当前文件夹下。
# 也是最常见的用法,可以加入-c避免下载中断
wget url
wget -O file.tgz url

参考 Man Page 或者 ExplainShell 可以找到完整的参数列表;支持从文件中读取 url ;将 log 写入指定的文件等等功能;

可以看出 wget 是一个简单,专职的下载利器,无论是用来下载安装包还是 pdf 之类的东西是一个相当方便的下载工具。


Terminal multiplexer Zellij

Terminal multiplexer Zellij

Tmux 作为一款优秀的终端复用器,前面已经介绍过,这里在介绍一款有着相同功能的平替,个人认为 zellij 的 UI 各方面的设计,使得其相比于 Tmux 有着更低的入门难度,也避免了需要记大量快捷键,因此这里介绍一下该工具。

Zellij 是一款终端复用器,有什么功能可以完全参考 Tmux ,还支持了许多有趣的特性和自定义 Layout 等功能(可能后续用到的话会完善该部分笔记),详细的可以参考官网的介绍,接下来就简单的介绍一下安装和一些自定义的 Alias。

Install 安装

Zellij 是基于 Rust 编写,因此在安装之前需要安装 rust 和 cargo(类似 rust 的包管理器),安装可以参考 Rust 官方网站(推荐) | The Cargo Book | Rust Wiki CN

官方网站中介绍了 WSL 的安装指令如下:

1
2
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#--proto以及--tlsvl在Linux或者Macos安装的时候可以忽略

安装完成后可以使用如下命令,基于 Cargo 安装 zellij:

1
cargo install --locked zellij

如果出现了问题也可以尝试先更新 rust

1
rustup update

Grep、Sed、Awk 03 Awk

Grep、Sed、Awk 03 Awk

Linux 三剑客之 Awk (由三个创始人的姓氏首字母组成),相比于 Grep 和 Sed 而言更为特殊一些,它是一种模式匹配的编程语言,其主要的作用匹配文本进行处理,其擅长实现对文本的格式化输出,而作为一门编程语言:支持函数,变量,循环,运算,但相对简单。

AWK 的执行逻辑是:搜索文件的每一行,如果发现匹配内容,就执行下一个编程步骤,如果没发现,就继续处理下一行的内容。

Intro

由于 AWK 实际上是一个编程语言,本篇主要只介绍其命令行用法。

首先介绍 AWK 命令,其主要用于匹配文本并格式化输出,适用于对表格化的数据机型处理。其使用模板大致如下:

1
2
3
4
awk [options] 'program' var=value file...
awk [options] 'pattern {action1; action2; ...}' file ...
awk [options] -f programfile var=value file...
awk [options] 'BEGIN{ action;... } pattern{ action;... } END { action;... }' file ...
  • -f scriptfile: 从脚本文件中读取 awk 命令
  • -v var=value: 赋值一个用户定义变量,也可用这种方式修改内置变量
  • -F fs: fs 可为任意字符串或者正则表达式,用于指定分隔符(也可以通过-v 的方式修改内置的分隔符变量来实现)

每个 action 或者说 statement 之间用 分割

参考资料:AWK wikipedia | practical-programming-books/awk.md | 一. AWK入门指南 — AWK程序设计语言 | Linux文本三剑客超详细教程—-grep、sed、awk - alonghub


Grep、Sed、Awk 02 Sed

Grep、Sed、Awk 02 Sed

Linux 三剑客之 Sed,相比于擅长数据查找定位的 Grep,Sed(Stream Editor)擅长做的是数据修改,做的主要是做一些增删改的功能。 sed 和 awk 的区别是什么?

Intro

首先介绍 Sed 命令,Stream Editor 流编辑器,针对字符流来进行文件编辑,同样,其核心也在于正则匹配式,其用法如下:

1
sed [option] {script} [input-file]

其中{script}可以理解为三者的组合:sed 动作指令+Reg 用正则&行号确定修改位置+修改的内容:Script 是 Sed 的核心,分别对应着:操作的行为,操作的位置和操作的内容。

Sed 的用法也可以按照这个来记:

1
sed [-hnV] [-e <script>] [-f <script文件>] [文本文件]

h 显示 helo ;-n 表示静默输出,-V 显示版本;参考第一种用法,-e 可以指定多个 script 对输入的文件进行处理,-f 则可以将多个 script 写在文件中,通过读取文件中的 scripts 来对文本文件进行处理。

作为文本编辑器,Sed 是一行一行的处理文件内容,将正在处理的每一行内容放在缓冲区中按照约定进行修改,处理后按照约定修改文件或输出,接着在处理下一行,直到整个文件处理内容。

其主要用来编辑和处理一个或者多个文件,简化对于文件的重复操作。

参考资料:sed 和 awk 的区别-知乎 | Man | sed 简明教程 | CoolShell | Linux sed 命令 | 菜鸟教程 | Linux文本三剑客超详细教程—-grep、sed、awk


Grep、Sed、Awk 01-Grep

Grep、Sed、Awk 01-Grep

Linux 三剑客之 Grep。Grep 估计会是大部分 Linux 用户最常用的文本搜索命令了,在三剑客中的使用场景也是最广泛的。在对正则有了基本了解之后,就可以更好的使用 Grep,同时也可以通过 Grep 的使用来更好的掌握常用的正则表达式。

Intro

首先介绍 Grep 命令,Global Regular Expression Print 全局正则表达式输出,使用正则表达式搜索文本内容输出。其使用模板如下:

1
grep [option] pattern file
  • option 指定 grep 的搜索模式
  • pattern 需要搜索的内容,可以用正则表达式指定一个模式来做匹配
  • file 可以是文件夹等路径,用来确定搜索的范围(仅支持通配符)[[Linux三剑客之正则]]

接下来分别对两个部分进行简单的说明,file 的范围指定参考正则文章中对通配符的介绍即可。


Grep、Sed、Awk 00 RegExp

Grep、Sed、Awk 00 RegExp

“awk、grep、sed 是 linux 操作文本的三大利器,合称文本三剑客,也是必须掌握的 linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。grep 更适合单纯的查找或匹配文本,sed 更适合编辑匹配到的文本,awk 更适合格式化文本,对文本进行较复杂格式处理。“

Linux文本三剑客超详细教程—-grep、sed、awk

在介绍这三个命令之前,需要对正则表达式有所了解,结合正则表达式来使用,才能发挥这 linux 三剑客的的全部能力。

正则表达式 RegExp

正则表达式: Regual Expression 为一类特殊字符和文本符号共通约定的一种 pattern,其中的一些字符并不表示其本身的含义,而是用来做通配符号。

其中基本正则表达式 BRE 是普遍支持的,而拓展正则表达式 ERE 通常则是需要特殊的参数来启用的。通过正则表达式中特殊符号的辅助,能够更快的过滤,查找,替换,处理字符流等。

除了在 grep、sed、awk 的 linux 三剑客中,在各个语言和各种搜索函数的地方,正则表达式都被普遍支持,应用相当广泛。

基础正则表达式对应的元字符主要有以下几个:

1
^ $ . [ ] *

而拓展正则表达式在上述元字符的基础上增加了:

1
( ) { } ? + | 

等字符,接下来我们将逐一展开各个元字符的作用。


Linux02 基础指令

Linux02 基础指令

@Aiken 2022

If u want get detail params info go to: http://www.explainshell.com.

tar 压缩命令

linux中主要使用tar来进行文件的打包和解压,如果需要处理zip文件需要额外的支持,在上一章节中已经提到了,该章节压缩文件部分主要介绍tar命令

压缩文件(夹)

1
2
tar -zcvf {final_name}.tgz {dir} --exclude={dir/sub_dire1}
tar -cvf ...

解压文件(夹)

1
2
tar -zxvf {tarfile}.tgz -C {指定目录}
tar -xvf ...

批量解压tar

编写脚本批量解压tar文件到对应的文件夹中,这里主要的核心在于脚本的编写,而非tar的package

1
2
3
4
5
6
# version 1 ez2understrand
for i in `ls *.tar.gz`
do
mkdir /dir/${i/.tar.gz//}
tar zxvf $i -C /dir/${i/.tar.gz//}
done

也可以使用第二种方法:

1
2
3
4
5
6
7
8
# version 2 try to use assignment method
# 可以发现基本的操作是一样的,就是对应的定义的地方
# 可以考虑一下是如何使用echocut以及对应的-d 和 -f1是什么意思
for file in `ls *.tar`
do
todir=`echo $file | cut -d"." -f1`
mkdir $todir && tar -xvf $file -C $todir
done

参考资料:tar压缩解压缩命令详解


Z Jumper for Linux

Z Jumper for Linux

Star this Project in Github after u decide to use it.

Download & Install

Firstly, Cpy z.sh to the path u want make this script can be recognizabled by your shell like zsh, bash.

1
2
cd ~
wget https://raw.githubusercontent.com/rupa/z/master/z.sh

Secondly, add . ~/z.sh to the end of your .zshrc ,u can use following cmd also

1
2
3
echo ". ~/z.sh" >> ~/.zshrc
# then using this to check
tail -n 5 ~/.zshrc

Fi, activate it.

1
source ~/.zshrc

Usage and Description

以以下的目录为例:the/path/to/UniFramwork,演示该jumper的使用方式。我们首先需要进入(cd)过对应的目录,z将会记录看,并计算相应的权重,通过其维护的List来进行快速跳转,在完成记录后,我们即可用下面跳转到项目文件夹:


Linux 文件传输和同步

Linux 文件传输和同步

@aikenhong 2022

当我们需要在Server之间进行,或者Server和WSL之间进行文件的传输,以及文件夹的同步的时候,如果要打开Xftp之类的软件进行,有繁琐的操作中转,或者说目录较为庞杂的时候,也显得有些麻烦。

于是我们可能希望使用脚本,来实现更便捷,同时也能设置定时功能,使得操作简单便捷,经过简单的调研,我们目前尝试使用以下几种方法,并取得了成功。

Rsync 同步目录

rsync是借助ssh服务进行的文件传输,为了使用起来方便,我们首先需要配置免密登录,在服务器之间传输SSH密钥,参考[[Envs/SSH]]

此后我们便可以编写同步脚本来同步远程的目录和本地目录,当然也可以执行反向的命令,

1
rsync -azP --delete -e 'ssh -p port' --progress --stats --exclude "big Files or sth" user@ip:source_path target_path >transfer.log

根据progress和stats我们记录传输过程中的日志,并输出到transfer.log,同时使用exclude排除大文件,避免传输过慢。

a: 归档文件模式(保留文件的时间戳等),保括了r的递归
z: 使用压缩文件传输
P: 支持断点续传
delete: 会删除目标文件中多出来的东西,保持同步,使得成为远程的镜像,但是有时候我们可能不需要这点,避免同步损毁

参考:


Linux 基础操作 01

Linux 基础操作 01

学习资源汇总

manual:菜鸟Shell | ExplainShell

收录一些Linux的工具书以及相关的OnLine-Doc,方便后续进行学习和查阅:

  1. 鸟哥的Linux私房菜:相对全面一点但是内容有点太多了
  2. Linux就该这么学:从开始到结束的流程挺完善的,但是这个网站做的是纯傻逼
  3. Linux Tools Quick Tutorial:简单入门教程好像是
  4. Linux命令行于Shell脚本编程大全:本地PDF,在当前文件夹下面进行查看

文件架构&系统信息

Linux各文件夹的含义分析LInux下的文件架构体系,包括最外层的一些系统文件夹的基础作用以及对应的特殊功能等等,帮助我们能够更清楚我们文件的存储体系以及系统文件的存储地址。