当我输入“man find”时如何得到“man gfind”?

当我输入“man find”时如何得到“man gfind”?

在我的新 mac os/Darwin 系统上,我的find工具是 11 年前的 BSD 版本。我已经使用 MacPorts 安装了更新的版本:GNU's find,MacPorts 已将其命名为gfind,并放置在/opt/local/bin/.老化的 Apple 提供的设备find仍保留在/usr/bin/find.

我需要保留旧版本,find以防系统仍使用它,但我更喜欢find在命令行输入而不是gfind.旧习惯和所有这些......

我知道我可以通过创建in (它在我的路径之前)或创建ingfind来运行。这两个都工作得很好。我的问题是当我输入时如何获取- 我已经尝试了in的多个版本,但没有一个有效。findlink/opt/local/bin//usr/binalias.zshrcman gfindman findalias.zshrc

我该如何让它发挥作用?当我在命令行中输入时,如何进入man gfind寻呼机显示?man find

答案1

如果您不需要原始查找页面 - 只需从find.1.gz到建立链接gfind.1.gz

更好的方法是编辑 MANPATH 环境变量并将您自己的树(man1、man2 等)放入其中并替换手册页。

答案2

有一种简单而通用的方法可以将所有 GNU ('g-前缀') MacPorts 安装的工具,它们的相关手册位于$PATH本机工具前面:

➤ MacPorts 包管理器创建(并更新)一个包含符号链接的目录全部MacOS 上安装的 GNU 工具和手册;即“g-前缀”工具:
/opt/local/libexec/gnubin  

有两个(或更多)子目录包含手册。这些目录中的所有文件都是符号链接GNU 工具和手册。例如:

lrwxr-xr-x  1 root  admin  20 Dec 26 17:21 find -> /opt/local/bin/gfind 

# under gnubin/man/man1 : 

lrwxr-xr-x  1 root  admin   36 Dec 26 17:21 find.1.gz -> /opt/local/share/man/man1/gfind.1.gz

如果我们检查manpath

% manpath
/opt/local/share/man:/usr/local/share/man: /* etc. etc */ 
➤ 所以我们看到,如果我们添加到 $PATH 中,则输入命令时/opt/local/libexec/gnubin就会运行,输入时就会查看。可以通过在现有 PATH 前面添加来修改 PATH :gfindfindman gfindman findgnubin
export PATH="/opt/local/libexec/gnubin:$PATH" 

如果您对此感到满意,可以将其添加export到您的~/.zprofile.你就完成了。无需再重新训练您的手指来gfind打字find

➤ 您还可以裁缝这很容易:

许多 GNU 工具被打包为一个“集合”,这意味着gfind与其他几个工具一起打包在查找实用程序包- 包括glocate。我对此很满意,直到我得知有一个顽固的错误由于 Darwin 和 Linux 之间的一些差异,这有效地禁用了它(从而变得无用)gupdatedbglocate

我偶尔会使用原生版本locate,并希望避免在 GNU 版本上浪费更多时间。对此的“修复”是到unlink的符号链接glocate以及gupdate来自 的相关手册/opt/local/libexec/gnubin

➤ 但还有一个纠结排序如果你“裁缝”格努宾:

我了解到 MacPorts 会定期更新 /opt/local/libexec/gnubin,并且已被一位维护者告知这些更新将“维修”我的修改!这仅向解决方案添加了一个步骤:将原始gnubin文件夹复制到另一位置;对该备用位置进行所有编辑unlink并在 PATH 中使用它。操作方法如下:

% sudo cp -RPp /opt/local/libexec/gnubin/ /opt/local/libexec/gnubin-m

请注意,这是本国的,BSD版本cp

➤ 最终解决方案 - 编辑/取消链接 gnubin-m 并添加到 PATH

% sudo unlink /opt/local/libexec/gnubin-m/locate
% sudo unlink /opt/local/libexec/gnubin-m/man/man1/locate.1.gz 
...
export PATH="/opt/local/libexec/gnubin-m:$PATH"

相关内容