Skip to content

Latest commit

 

History

History
414 lines (248 loc) · 12.1 KB

File metadata and controls

414 lines (248 loc) · 12.1 KB

第32节 常用命令行替代

❤️💕💕CS自学指南,大学教育无论是深度还是广度都没有办法支撑我们的职业素养,这个板块算是自己在CS学习中额外补充和记录的。个人博客:http://nsddd.top


[TOC]

前言

😍 对于一个几乎每天都在用命令行的人来说,一个舒服的命令行是多麽的重要!

我们常用的有cdls,甚至在Windows上面,cmd命令行甚至都没有ls,而是让我们很别扭的cmd,这能忍吗?

或许我们可以start powershell选择是powershell,不得不说powershell是一个非常好的工具

image-20221016095032651

哇,虽然背景还可以,但是还是辨识度不高,或许我们还可以start sh到git提供的命令行试一试:

image-20221016095129821

💡 依旧不符合我的预期,所以我要~ $$ 通通换掉~~~ $$

下载工具scoop

下载

打开 PowerShell 终端(5.1 或更高版本)并运行:

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
> irm get.scoop.sh | iex

Scoop 从命令行以最小的摩擦安装您熟悉和喜爱的程序。它:

  • 消除权限弹出窗口
  • 隐藏 GUI 向导式安装程序
  • 防止安装大量程序造成 PATH 污染
  • 避免安装和卸载程序的意外副作用
  • 自动查找并安装依赖项
  • 自行执行所有额外的设置步骤以获得工作程序

查看软件包

> dir ~\scoop

    Directory: C:\Users\User\scoop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
da---          02-04-2022    16:06                apps
d----          30-03-2022    13:22                buckets
d----          02-04-2022    16:06                cache
da---          30-03-2022    21:32                persist
da---          02-04-2022    16:06                shims
d----          20-02-2022    01:22                workspace

Scoop 以可移植的方式下载和管理软件包,将它们整齐地隔离在. 它不会在其家之外安装文件,您可以将 Scoop 安装在您喜欢的任何地方。 ~\scoop

对于终端应用程序,Scoop 在文件夹中创建shims,一种命令行快捷方式,可在 PATH 中访问。对于图形应用程序,Scoop 在名为“Scoop Apps”的专用开始菜单文件夹中创建程序快捷方式。这样,软件包总是被完全卸载,您可以确定您的 PATH 和开始菜单中当前有哪些工具。 ~\scoop\shims

💡简单的一个案例如下:

image-20221016110601726

exa替代ls

exals命令的替代品,可以彩色输出目录内容,更容易辨识。

⚠️ 暂时不支持Windows,未来可能会,但是最后一版本是去年,可能不会更新~

exals是Unix 和 Linux 操作系统附带的古老文件列表命令行程序的现代替代品,赋予它更多功能和更好的默认设置。它使用颜色来区分文件类型和元数据。它了解符号链接、扩展属性和 Git。它体积小速度快,而且只有一个二进制文件

Linux下源码安装命令:

image-20221016101246223

ubuntu20+版本可以直接:

apt install exa
$ exa --long --git

image-20221016095955056

显示选项

  • -1 , --oneline : 每行显示一个条目
  • -G , --grid:将条目显示为网格(默认)
  • -l , --long : 显示扩展细节和属性
  • -R , --recurse : 递归到目录
  • -T , --tree : 作为树递归到目录
  • -x , --across:对网格进行排序,而不是向下排序
  • -F , --classify : 按文件名显示类型指示符
  • --colo[u]r : 何时使用终端颜色
  • --colo[u]r-scale : 突出显示文件大小的级别
  • --icons : 显示图标
  • --no-icons:不显示图标(总是覆盖 --icons)

broot

broot 可以看作增强版的ls替代品,实际是一个终端里面的文件管理器。

⚠️ 支持Windows版本

image-20221016103949155

使用时,可以先列出当前目录的文件信息。

$ br -sdph

上面命令中,📜 对上面的解释:

  • -s:显示文件体积
  • -d:显示文件时间
  • -p:显示文件权限
  • -h:显示隐藏文件

可以看到,它默认以树状结构,展开子目录。

然后,在这个界面中,可以完成各种文件操作。

  • 搜索:输入搜索词
  • 复制:输入:cp <复制后的文件名>
  • 删除:输入:rm
  • 改名:输入:mv <新文件名>
  • 退出:输入:q

zoxide

zoxide 是 cd 命令的替代品,用来切换目录。

⚠️ 支持windows,支持powershell

它的用法与cd完全一样,进入目录/tmp就是下面的命令。

$ z /tmp

它的特色是部分匹配,可以只写路径的一部分,它自动找到最经常使用的匹配项。

比如,你经常用它进入目录/tmp,那么以后只要输入z t,它就会自动将t匹配为/tmp,从而进入该目录。

$ z t

bat,fx,hexyl

batcat命令的替代品,输出文本文件的内容,并且带有cat所没有的代码高亮和行号。

$ bat README.md

img

如果浏览的是 JSON 文件,还可以使用 fx 或者 jq

$ fx data.json

img

如果浏览的是二进制文件,使用 hexyl

$ hexyl example.jpg

img

fd,fzf

💡 你还在用find嘛,是的,我也在用,但是我之前也见过fd,这个更优秀的工具~

fd是一种简单ㄡ快速和用户友好的find替代方案.」

fdfind命令的替代品,用于文件名搜索。

它的用法比find更符合直觉。下面例子是搜索目录/tmp里面(包括子目录),所有含有dog的文件名。

  • 直观的语法:fd PATTERN而不是find -iname '*PATTERN*'.
  • 正则表达式(默认)和基于全局的模式。
  • 由于并行目录遍历,速度非常快。
  • 使用颜色突出显示不同的文件类型(与 相同ls)。
  • 支持并行命令执行
  • 智能大小写:默认情况下搜索不区分大小写。如果模式包含大写字符*,它将切换为区分大小写。
  • 默认情况下忽略隐藏的目录和文件。
  • .gitignore默认情况下,忽略您的模式。
  • 命令名称比 :-)短50% * 。find
# find 的写法
$ find /tmp -iname '*dog*'

# fd 的写法
$ fd dog /tmp

上面两条命令一比较,就会发现fd简单很多。

fd内部采用正则搜索,如果想使用模糊搜索,比如找出包含三个字符dog的文件名,则需要另外安装fzf

$ find . -type f | fzf

执行上面命令以后,再输入dog就可以了。

安装

ScoopChocolatey 都是 Windows 下的包管理系统,其具体使用方法都可参考其官网。

推荐使用scoop,一个速度很快的~

# 通过 Scoop 安装
$ scoop install fd

# 通过 Chocolatey 安装
$ choco install fd

ripgrep

ripgrepgrep命令的替代品,用来搜索文件内容。

它跟grep的用法类似。下面例子是搜索当前目录里面,所有内容包含字符串foo的 Markdown 文件。

# grep 的写法
$ grep foo *.md

# ripgrep 的写法
$ rg foo *.md

McFly

⚠️ 推荐在Linux下面安装,好像不是很支持win

McFlyctrl-r的替代品,用来搜索 Shell 的操作历史。

安装以后,只要按下ctrl-r,就会出现一个更好用的搜索界面。

McFly 将您的默认ctrl-rshell 历史搜索替换为智能搜索引擎,该引擎会考虑您的工作目录和最近执行的命令的上下文。McFly 的建议通过小型神经网络实时优先处理。

TL;DR:升级后的ctrl-r历史结果对你现在正在做的事情有意义。

特征

  • 重新绑定ctrl-r以使用小型神经网络优先启动全屏反向历史搜索。
  • 增强您的 shell 历史记录以跟踪 SQLite 数据库中的命令退出状态、时间戳和执行目录。
  • 维护您的正常 shell 历史文件,以便您可以随时停止使用 McFly。
  • Unicode 支持贯穿始终。
  • 包括从 McFly 数据库和 shell 历史文件中清除任何历史项目的简单操作。
  • 设计为将来可扩展用于其他外壳。
  • 用 Rust 编写,所以它既快速又安全。
  • 您可以在搜索时键入%以匹配任意数量的字符。

choose

choosecut命令的替代品,用来选中指定的栏位。

它的优势主要是语法更简单,比如输出文件的第一列。

# cut 的写法
$ cat data.txt | cut -d " " -f 1
# or
$ cut -d " " -f 1 data.txt

# choose 的写法
$ cat data.txt | choose 0
# or
$ choose 0 -i data.txt

更多例子看下图。

1123a

duf,ncdu

dufdf命令的替代品,用来显示磁盘占用情况。

⚠️支持Windows和Linux等

$ duf

image-20221016113524071

它是彩色的表格输出,更容易查看。

a234

ncdudu命令的替代品,用来显示每个目录占用的大小。

$ ncdu

你还可以上下移动,选中指定目录查看。

a12

httpie,dog

httpie 是 curl 的替代品,用来发出 HTTP 请求。

它的特点是语法更简单,并且服务器的返回内容会格式化高亮显示。

image-20221016114132579

下面是发出 PUT 请求的例子。

$ curl -X PUT -d hello=world example.com

$ http PUT example.com hello=world 

同类项目还有 curliexh

dogdig命令的替代品,用来发出 DNS 查询。它的用法比dig简单多了。

⚠️windows可以直接用scoop下载

$ dog example.net

$ dog example.net A NS MX

image-20221016113358407

END 链接