1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
使用命令行管理文件.md 7.91 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2023-06-02 11:37 . z命令补充

使用命令行管理文件

前言

一般而言我们不需要通过命令行做复杂的文件管理。因为很多时候我们都可以使用图形界面,这种更有好的方式,缩减所得,不需要学习。但是,也有机率会使用到命令行,比如系统图形界面还没有建立的时候,安装系统的时候,系统崩溃维护的时候,远程服务器没有图形界面的时候。因此,这个时候,学下一两个熟手的命令行软件来管理文件就很有必要了。

这里推荐 ranger 文件管理器,可以快速浏览目录结构,并预览文件,打开文件,删除复制,剪切都是可以的。它虽然是命令行界面,但是也提供了可视界面的形式,因而相对友好,难点是记忆相关的快捷键。

fzf 这个工具可以模糊的搜索定位文件,它的主要用途是提供给其他工具一个快速找到文件路径的方法。

z 这个工具会模糊搜索目录,然后进入里面,类似超强版 cd 工具。

fzf 使用说明

fzf 是一个命令行下对文件或者文件内容过滤的工具。它有着高效的性能,简单易用。不过要结合其他工具,才能获得最大的收益。

网上很多 fzf 的说明都是针对 zsh 这个 shell 来说明配置方法。但是我不用这个 shell,而是用系统自带的 bash shell。

安装

# 安装 debian
sudo apt install fzf

# arch linux
sudo pacman -S fzf

使用

默认输入 fzf 可以正常执行这个搜索过滤程序,它会调用 find 作为输入,即当前目录下的文件会被搜索,然后从结果中过滤匹配我们需要的结果。

但这种使用方式很无趣,因为输入 fzf 然后获取路径没什么用。

有用的方式是:比如我们想在参数位置,输入一个我们找到的文件,如: cat xxx。 这里的 xxx 我们想替换成我们要使用的路径。

实现这个目标需要我们去绑定按键,后台调用 fzf。

这个绑定的操作其实有一个样板,在 /usr/share/fzf/key-bindings.bash 里面:

# 拷贝按键绑定样例到用户目录
cd 
cp usr/share/fzf/key-bindings.bash ./

# 将脚本添加到.bashrc 自动执行
echo source key-bindings.bash >> .bashrc

# 让脚本立即生效
source .bashrc

快捷键:

  1. ctrl + t:搜索文件名或目录
  2. ctrl + r: 从历史记录中搜索
  3. alt + c: 搜索目录,并进入目录

在选择界面下:

  1. 光标移动 或 ctrl+k 上 ctrl+j 下
  2. 回车选中
  3. esc 退出
  4. tab 多选

输入的搜索词,可以使用扩展搜索语法:

  1. ^开头
  2. 结尾$
  3. ‘精确匹配
  4. !否定
  5. a | b : a 或 b

使用:

# 这个工具的本质就是类似提供一个对话框,让你选择文件
cat <ctrl+t> # 按 ctrl+t 调用 fzf 搜索框,选择路径
# 结果:
cat test.txt # 然后回车,即可查看文件

ssh ''<TAB> # 这里绑定 '' 作为补全的起始序列,然后按 tab 键
# 结果
ssh 192.168.3.120 

<alt+c> # 快速进入匹配的目录
<ctrl+r> # 从历史记录中查找命令

原理:

# 相当于一个文件选择器
# 它可以快速的匹配要选择的文件
find * -type f | fzf > 选择的文件

配置

# 在 ~/.bashrc 文件中

# 配置默认的启动参数
# --height 40% :高度
# --layout=reverse :搜索框在下面
# --border:加边框
# --exact:搜索词默认精确匹配
# --preview 'cat {}': 使用 cat 命令获取文件的预览内容
export FZF_DEFAULT_OPTS='--height 40% --reverse'
export FZF_CTRL_T_OPTS='--preview "cat {} || tree -C {}"'
export FZF_CTRL_R_OPTS='--preview ""'
export FZF_ALT_C_OPTS='--preview "tree -C {}"'
# 代码补齐
# 默认按键 **,但可能无效,这里我设置 ''
# 用法: cd '' 再按 tab 键,即调用 fzf 来匹配参数
export FZF_COMPLETION_TRIGGER="''"
source /usr/share/fzf/completion.bash
# 绑定 ctrl+t ctrl+r alt+c 等按键
source /usr/share/fzf/key-bindings.bash

可配置项:

  1. FZF_DEFAULT_COMMAND:fzf 使用的命令,如 'find * -type f'
  2. FZF_DEFAULT_OPTS:fzf 默认参数
  3. FZF_CTRL_T_COMMAND: ctrl+t 调用的命令
  4. FZF_CTRL_T_OPTS:该命令的默认参数
  5. FZF_CTRL_R_COMMAND: ctrl+r 调用的命令
  6. FZF_CTRL_R_OPTS:参数
  7. FZF_ALT_C_COMMAND: alt+c 调用的命令
  8. FZF_ALT_C_OPTS:参数
  9. FZF_COMPLETION_TRIGGER:配置自动补齐的按键序列
  10. FZF_COMPLETION_OPTS:参数

ranger 使用说明

ranger 是一个用在命令行,但是提供界面的文件管理器。它有快速的导航,也有文件的预览。文件预览需要安装插件,有些必须要修改配置。

安装 ranger

sudo pacman -S ranger
sudo pacman -S ffmpegthumbnailer # 视频预览插件
sudo pacman -S w3m # 图片预览插件
sudo pacman -S highjlight # 代码预览插件

ranger --copy-config=all  # 拷贝默认的配置到 ~/.config/ranger 目录

使用 ranger

快捷键:

  1. l :使用默认程序打开文件
    1. r: 执行某个命令
    2. i: 预览文件
  2. j,k,h,l : 下、上、左(上一个目录)、右(打开或进入目录)、或使用方向键
  3. q:退出
  4. ZZ:退出编辑ZZ
  5. ?:帮助
    1. m : 帮助手册
    2. k :快捷键说明
    3. c :命令说明
    4. s :设置的参数
  6. F7:创建文件夹
  7. Ins:创建空文件
  8. F8: 删除
  9. 空格:选中
    1. v: 反选
  10. t:标记文件
  11. d:
    1. d:剪切
    2. a: 添加到剪切列表
    3. r: 移除
    4. t:切换
    5. u: 统计大小
  12. a:重命名
  13. y:
    1. y:复制
    2. a: 添加到复制列表
    3. r:移除
    4. t: 切换
  14. ud: 取消复制或剪切列表
  15. p:
    1. p: 粘贴(自动更名)
    2. o: 自动覆盖
    3. l: 创建链接
    4. L: 相对路径链接
  16. f:查找文件或目录
  17. /: 搜索
  18. z:
    1. F: 过滤
    2. h: 显示隐藏文件
  19. n/N: 下一个匹配、上一个匹配
  20. o:排序
    1. s/S:大小
    2. t/T:类型
    3. m/M:修改时间
    4. b/B:名称
  21. s: 执行 shell 命令
  22. gh: 返回家目录 ~/m
  23. G:返回列表开头
  24. m: 标记路径列表
  25. um:取消标记
  26. ':跳到目录
  27. ::执行命令
  28. +,-,=:权限设置

命令

命名参数:

  1. %f:当前高亮的文件
  2. %d: 当前目录
  3. %s:当前选择的文件
  4. %t:当前标记的文件
  5. %c:待复制、剪切列表
  6. %p:完整路径
:shell -w ls # 显示执行命令的结果
:shell -t ls # 在新终端执行
:shell -f kwrite # gui 程序
:shell -r dmesg # 以 root 权限执行

使用:

# 按 : 进入命令模式
# 或按 s 即出现 :shell
# 压缩选中的文件到 test.tar.gz 包中
:shell tar -caf test.tar.gz %s

配置 ranger

  1. rc.conf : 快捷键等配置
  2. commands.py : 执行的命令
  3. rifle.conf : 文件关联的打开程序
  4. scope.sh : 预览配置
// scope.sh
// 预览的函数
handle_image() {
	...
	video/*)
   	# 开启视频预览
		# 即取消视频注释的段落,把相关的 # 去掉
   	ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
   exit 1;;
	...

}

z 使用说明

z 是一个类似模糊进入目录的工具,它会在访问的历史记录中匹配相关目录。如 ~/Documents/vscode ,你只需要 z code 它就能匹配上。

参看说明:https://github.com/skywind3000/z.lua/blob/master/README.cn.md

安装 z.lua

# arch linux
sudo yay -S z.lua
# 从 github 源码安装
git clone https://github.com/skywind3000/z.lua.git
# 在 ~/.bashrc 中

# z.lua 超级 cd
# 输入正确的 z.lua 文件路径
# fzf 是补全需要使用的工具,没有安装可以去除
eval "$(lua /usr/share/z.lua/z.lua --init bash enhanced once echo fzf)"

使用 z.lua

z code<TAB> # 输入然后按 tab 键,会自动补全路径

z -I -t . # 在最近的历史列表中选择目录

参考

  1. FZF:终端下的文件查找器【猛男必备233333】: https://www.bilibili.com/video/av80254519
  2. Bash readline 使用技巧: http://www.kerneltravel.net/newbie/bash_readline.htm
1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助