关于whereis命令结果复用的Linux操作咨询
嘿,完全没错!你这个思路太贴合Linux追求高效的调性了,肯定有办法直接复用whereis的结果来切换目录,不过得先留意whereis的一个小细节——它默认会返回二进制文件路径、源码路径、手册页路径好几个位置,所以得先把我们真正需要的二进制文件所在目录提取出来才行。
给你几个实用的方法:
方法一:精准提取whereis的二进制路径
先用-b参数让whereis只返回二进制文件的路径,再通过awk提取具体路径字段,最后用dirname去掉文件名得到目录:cd "$(dirname "$(whereis -b cmatrix | awk '{print $2}')")"举个例子,
whereis -b cmatrix的输出一般是cmatrix: /usr/bin/cmatrix,awk '{print $2}'会把/usr/bin/cmatrix提取出来,dirname再把它变成/usr/bin,最后cd就直接跳过去了。方法二:用参数扩展简化操作
先把路径存成变量,再用bash的参数扩展去掉文件名部分,写法更直观:# 先获取cmatrix的二进制路径 cmatrix_bin=$(whereis -b cmatrix | awk '{print $2}') # 切换到该文件所在目录 cd "${cmatrix_bin%/*}"${cmatrix_bin%/*}的作用是删掉变量里最后一个/及后面的所有内容,刚好就是我们要的目录。方法三:用which更直接
如果确定cmatrix在系统的PATH环境变量里(大部分可执行程序都满足),用which会更简单——它只会返回二进制文件的完整路径,不用额外筛选字段:cd "$(dirname "$(which cmatrix)")"
要是你经常需要干这种事,还可以把它做成别名,比如编辑你的~/.bashrc或者~/.zshrc文件,加上这一行:
alias cdprog='cd "$(dirname "$(which "$1")")"'
保存后重新加载配置(source ~/.bashrc),之后只要输入cdprog cmatrix就能直接跳转到cmatrix所在目录,效率拉满!
备注:内容来源于stack exchange,提问作者Mathew

