FASD - AutoJump以快速访问Linux文件系统的替代工具

时间:2020-03-05 15:26:42  来源:igfitidea点击:

FASD是一个命令行生产力助推器,可快速访问Linux文件和POSIX Shell的目录(便携式操作系统接口)。
它是类似的工具,如autojump,z和v用于导航文件系统。
FASD会跟踪我们访问的文件和目录,以便我们可以在命令行中快速引用它们。
它的名称FASD来自默认建议的别名F(文件),a(文件/目录),s(show/search/select),d(目录)。
FASD通过"频率"和"频率"和"rESCENCY"排列文件和目录。
术语"recency"是由Mozilla创造的,并在Firefox中使用。
Frecency是给出每个唯一URI的分数,包括书签,历史记录和标签。
此分数由审核量,这些访问的类型决定,这些访问的类型,最新的类型,以及URI是否被书签或者标记。
同样,FASD巧妙地检测何时显示文件列表或者只是最好的匹配。
例如,当我们使用一些搜索参数时在子屏蔽中调用FASD时,它只返回最佳匹配。

如果使用shell最常导航和启动应用程序,FASD可以更有效地进行操作,让我们看看如何在CentOS 7操作系统上安装和使用它。

准备工作:

要安装和使用FASD,我们需要访问UNIX/Linux的shell,如操作系统,如此,我们使用CentOS 7.让我们使用root或者sudo用户权限连接到服务器。

在CentOS 7上安装FASD

FASD包装在各种包管理器中可用,以安装在任何Linux发行版上,同时我们可以在GitHub上手动获取可用的FASD包副本。

让我们下载FASD包,后跟链接下载FASD包并将其放在系统上。

然后运行以下命令以提取包中的包,以便将FASD和FASD1安装到所需的位置。

# tar -zxf clvv-fasd-1.0.1-0-g4822024.tar.gz
# cd clvv-fasd-4822024/

对于下面的系统,可以使用下面的命令。

# make install

虽然如果要将FASD安装到"$HOME"等其他位置,但请使用以下命令或者仅将"FASD"文件复制到我们要放置的任何地方。

# PREFIX=$HOME make install

现在将shell'bashrc'文件中的下面放在下面的线条以获取在shell中工作的fasd,以便必须运行某些初始化代码。

# vim .bashrc
eval "$(fasd --init auto)"

这将设置一个命令挂钩,该命令挂钩在每个命令和高级选项卡完成中为bash和zsh执行。
如果我们想要更多控制进入shell环境的控制,则可以将自定义的参数集传递给Fasd -Init。
这将略微增加shell启动时间,因为调用二进制文件有开销。
如果我们想要最小的开销,可以缓存FASD INIT代码。

以下是Bash将被置于".bashrc"中的示例代码。

# vim .bashrc
fasd_cache="$HOME/.fasd-init-bash"
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install >| "$fasd_cache"
fi
source "$fasd_cache"
unset fasd_cache

在CentOS上使用FASD 7

首次安装FASD后,使用shell中的任何程序或者更改目录的某些文件。
以下是一些假设的情况,我们可以在左侧键入命令,FASD将"将"命令展开"展开"右侧。

v def conf => vim /some/awkward/path/to/type/default.conf
j abc => cd /hell/of/a/awkward/path/to/get/to/abcdef
m movie => mplayer /whatever/whatever/whatever/awesome_movie.mp4
o eng paper => xdg-open /you/dont/remember/where/english_paper.pdf
vim `f rc lo` => vim /etc/rc.local
vim `f rc conf` => vim /etc/rc.conf

例如,当我们使用一些搜索参数的子屏蔽中调用FASD时,FASD只能通过巧妙地检测显示文件列表或者仅匹配的何时返回最佳匹配。

默认情况下,FASD附带一些有用的别名,如下所示。

alias a='fasd -a' # any
alias s='fasd -si' # show/search/select
alias d='fasd -d' # directory
alias f='fasd -f' # file
alias sd='fasd -sid' # interactive directory selection
alias sf='fasd -sif' # interactive file selection
alias z='fasd_cd -d' # cd, same functionality as j in autojump
alias zz='fasd_cd -d -i' # cd with interactive selection

最简单的情况,让我们假设我们现在在主目录中,创建两个目录'foo'和'bar',然后移动到这些目录中以创建具有相同名称的文件。

# mkdir foo
# mkdir bar
# cd foo/
# touch foo
# touch bar
# cd ../bar/

现在,我们可以使用以下FASD命令来移动。

# z foo
# z bar

跳转到所需的目录,并且当然也可以使用支持选项卡实现。

运行"Fasd Init"代码或者"源FASD"时,FASD会添加一个挂钩,只要执行命令就会执行。
挂钩将扫描命令的参数,并确定其中的任何一个是指现有文件或者目录。
如果是,FASD将将它们添加到数据库中。

使用互动方式跳转。
假设我们想要修改~/foo/bar这个文件,我们只需使用以下命令。

~/bar # vim `f bar`

如果我们想将此列复制到列列,请使用下面的命令。

~/bar # cp `d foo`/bar .

现在有两个不同的目录下的两个条形图,如果要编辑,则必须为批处理指定更多信息。

~ bar # vim `f foo/bar`

使用标签完成

FASD具有两种完成模式,一个是命令模式完成,第二个是单词模式完成。
命令模式完成在BASH和ZSH中工作,而单词模式完成仅在ZSH中工作。
命令模式完成就像为任何其他命令完成。
在FASD命令或者其别名上点击选项卡时触发它。
在此模式下,查询可以通过空格分隔。
使用如果我们发现完成结果覆盖了查询,请在命中选项卡之前键入另外的空间。

# vim ,rc,lo
# vim /etc/rc.local
# mv index.html d,www
# mv index.html /var/www/

它适用于由任何命令行参数触发的单词完成,该参数从(全部),f,(文件),或者d,(目录),或者以(所有),f(文件)结尾,或者,d(目录)。
还有三个ZEL小部件,即FASD-COMPLED-F和FASD-CHITED-D,我们可以将它们绑定到键桥,如下所示。

使用C-X C-A进行FASD-COMPLEAT(文件和目录)

# bindkey '^X^A' fasd-complete

使用C-X C-F进行FASD-Complete-F(仅文件)

# bindkey '^X^F' fasd-complete-f

使用C-X C-D进行FASD-COMPLEAT-D(仅限目录)

# bindkey '^X^D' fasd-complete-d

如果数据可以通过拍摄近期/常常文件的不同来源,可以使用一些添加后端使用一些添加后端。
我们还可以通过在".fasdrc"文件中声明该名称的函数来定义自己的后端。

调整FASD

在FASD上的文章的最后一部分中,我们将向我们展示我们如何为我们可以在采购FASD之前设置的某些Shell变量的FASD。
我们可以将所需的更改变为"$home/.fasdrc"文件。

$_FASD_DATA

前往FASD数据文件的路径,默认为"$home/.fasd"。

$_FASD_BLACKLIST

列出黑名单的字符串。
匹配它们的命令将不会被处理。
默认为"--help"。

$_FASD_SHIFT

所有需要移位的命令列表,默认为"sudo busybox"。

$_FASD_IGNORE

将忽略的所有命令列表,默认为"FASD LS Echo"。

$_FASD_TRACK_PWD

FASD默认为跟踪"$PWD"。
将此设置为0以禁用此行为。

$_FASD_AWK

使用它的尴尬。
FASD可以检测和使用兼容的AWK。

$_FASD_SINK

文件要将所有stderr记录到,默认为"/dev/null"。

$_FASD_MAX

最大总分/重量,默认为2000。

$_FASD_SHELL

哪个shell执行。
一些shell 将比其他炮弹运行。
FASD随划线和KSH变体运行更快。

$_FASD_BACKENDS

默认后端。

$_FASD_RO

如果设置为任何非空字符串,FASD将不会添加或者从数据库中删除条目。
我们可以从命令行设置和导出此变量。

$_FASD_FUZZY

模糊匹配时的"模糊"水平。
更确切地说,可以跳过以生成匹配的字符数。
设置为空或者0以禁用模糊匹配。
默认值为2.

$_FASD_VIMINFO

对Viminfo后端的,默认为"$home/.viminfo"的路径.Viminfo文件

$_FASD_RECENTLY_USED_XBEL

最近使用的xdg最近使用的xdg的路径,用于最近使用的后端,默认为"$home/.local/share /最近使用的.xbel"我们可以在.fasdrc中设置"_fasd_sink"以获取日志。

$_FASD_SINK="$HOME/.fasd.log"