高效SHELL环境 step by step(二): 目录与文件

本文主要关注高效SHELL环境中目录与文件的相关操做。python

1 目录

1.1 目录定位

可以快速定位目录的脚本项目不少,比较热门的项目是:linux

这几个项目功能都很是相似。装一个就能够了。以autojump为例子。首先经过git

$: brew install autojump
复制代码

进行安装。完成安装后,在oh-my-zsh中开启相应的插件autojump。测试其经常使用操做:github

  • j 快速跳转到指定目录
  • jc 快速跳转到指定子目录
  • jo 快速经过图形界面打开目录

经过j -s查询缓存的检索目录优先级。web

1.2 目录展现

常规进行目录展现的命令是ls,但其太过单薄,特别是对于嵌套较深子目录,要进行屡次操做才能达到预期效果。这里介绍两个扩展命令:正则表达式

MacOS安装:shell

$: brew install tree
$: brew install exa
复制代码

tree命令功能比较单一, exa除了支持tree命令的功能外,在色彩展现以及文件详情上展现的信息更加丰富。vim

exa

为了方便本身使用,按各人喜爱定义别名。缓存

2 文件

对于文件的定位以及操做,应该尽可能的靠近文件的位置,减小比必要的检索范围。在SHELL环境中一般所谓查询都是进行正则匹配。因此熟悉正则表达式很是重要。收集的如下正则表达式的教程很是适合全部级别的读者:bash

2.1 按名称检索

  • fd

    fd命令是对find命令的扩展。其在功能上与find命令相似,但操做接口更加友好。

2.2 按历史检索

fasd是将autojump命令原理扩展到了文件上,固然它也支持目录。autojump提供了关键的跳转命令j; fasd则提供四个关键命令:

  • f 文件快速检索
  • a 文件 + 目录快速检索
  • s 交互选择检索
  • d 目录快速检索

2.3 按内容检索

按文件内容检索系统提供的命令grep太古老,不管是展现上仍是操做接口上都不够友好。如下扩展命令明显更加易于使用, 并且会在查询文件时使用 .gitignore 中的规则.

具体操做演示,能够经过 tldrman 命令查询一下。

2.4 文件操做

文件操做按行为可划分为: 文件预览、文件编辑、文件删除。按此类型划分,分别列举几个扩展命令。

文件预览

  • bat 该命令提供更加友好的图形展现,结合文件内容语法进行高亮展现, 同时支持git变动对比。

文件编辑

文件编辑命令实在太多了,有人喜欢 IDE, 有人喜欢命令行。贴一篇文章,不少编辑工具都罗列了。

删除文件

其实文件删除命令,系统提供的 rm 命令就很是好用。但该命令风险很高,万一一个不当心删错了就没有回头路了。因此有人写了下面这个工具:

提供的功能挺好的:

trash-put           trash files and directories.
trash-empty         empty the trashcan(s).
trash-list          list trashed files.
trash-restore       restore a trashed file.
trash-rm            remove individual files from the trashcan.
复制代码

只是这个工具使用python写的安装过程有点费事,改天本身写一个纯SHELL版本。

2.5 从检索到操做

快速定位目录或者文件,再执行相应的操做,已经够快了。若是还想更快一点,推荐下面这个工具:

它能够将检索操做两个过程直接关联起来。先看一张预览图:

fzf

两个简单的使用例子:

# 预览
$: fzf --preview 'bat {}'

# 定位文件后,按F1开启编辑工具
$: fzf --bind 'f1:execute(vim {})'
复制代码

3 小结

高效SHELL须要大量的实践练习,和对旧习惯的抛弃。相关文章:

相关文章
相关标签/搜索