FASD - AutoJump以快速访问Linux文件系统的替代工具
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"