最近我开始熟悉 linux shell 中的别名。我发现它们对于替换 hdfs dfs 命令特别有用,如下所示:
alias hls="hdfs dfs -ls"
此别名可以像
一样使用hls /my/directory/
这将列出 hadoop 文件系统上该文件夹中的内容。
我想添加另一个包含根目录的 hdfs dfs -ls 别名,类似于:
alias hlsr="hdfs dfs -ls /my/root/directory/"
然后我想按如下方式使用此命令:
hlsr rest/of/path
这将导致列出路径 /my/root/directory/rest/of/path 的内容。
问题在于将以根路径结尾的别名与表示该路径其余部分的字符串组合在一起。
有人知道该怎么做吗?我是否必须编写一个函数或者也可以使用别名来完成?
谢谢, J
您可以使用要获取的文件中的函数。让我们调用一个名为
myfunctions.sh
的文件
hls ()
{
hdfs dfs -ls "$1";
}
参数
$1
是您的第一个参数,然后您必须使用 source myfunctions.sh
或 . myfunctions.sh
获取文件。
几周前我遇到了这个问题,因为我想用一些不同的命令做一些非常相似的事情,但运气不佳。 定义函数可能对我有用,但需要管理的东西很多。
我知道这是一个老问题,但如果其他人来到这里想做类似的事情,我想分享我编写的脚本,该脚本支持OP正在寻找的内容以及其他一些东西。
该脚本可在 https://github.com/jerrens/MyCE 获取。 安装脚本后,编辑
~/.myCommand
添加以下内容:
hlsr=hdfs dfs -ls /my/root/directory/$1
然后在终端运行
my hlsr rest/of/path
我的系统上没有 Hadoop,但使用以下内容进行了测试:
~$ cat ~/.myCommand
rells=ls -lha ~/$1
~$ my rells .ssh
total 28K
drwx------ 2 jdoe jdoe 4.0K Oct 30 23:10 .
drwxr-x--- 19 jdoe jdoe 4.0K Nov 18 19:31 ..
-rw-r--r-- 1 jdoe jdoe 72 Oct 30 22:37 config
-rw------- 1 jdoe jdoe 2.6K Sep 8 19:11 id_rsa
-rw-r--r-- 1 jdoe jdoe 575 Sep 8 19:11 id_rsa.pub
-rw------- 1 jdoe jdoe 1.8K Oct 30 23:10 known_hosts
-rw------- 1 jdoe jdoe 948 Oct 30 23:10 known_hosts.old
更多详细信息可以在 MyCE GitHub 存储库中找到,也可以在 https://jerren.medium.com/introduction-my-command-engine-myce-42e15028364a