递归添加 bash 脚本作为 Linux 中的命令?
Recursively adding bash scripts as commands in Linux?
总的来说,我对 Bash 和 Linux 还是很陌生。我已经创建了几个脚本,我希望能够通过键入命令而不是目录和可执行文件来使用它们。如果这有所作为,我正在使用 Debian Jessie。
我的一个脚本的路径是 ~/Scripts/DIR_1/My_Script.sh
而另一个在 ~Scripts/DIR_2/My_Other_Script.sh
中。我希望 Scripts
目录中包含的所有脚本都被索引为命令,而不管 directory/path 深度如何。
我已将此文本附加到我的 .bashrc
文件的末尾...
PATH=${PATH}:$(find ~/Scripts -type d | sed '/\/\./d' | tr '\n' ':' | sed 's/:$//')
由于我对这种事情很陌生,所以我不得不从 here 那里偷走那行。
当我尝试使用主文件夹(或其他任何地方)的子目录从命令行 运行 My_Script
时,我得到 My_Script: command not found
我承认我可能误解了将 bash 脚本添加到命令行的过程。
如何以递归方式将 bash 脚本添加为命令?我目前使用的流程有什么问题?
我认为你的问题是你没有放置 .sh,它是你文件名的一部分。
通常情况下,在仅输入第一个字母后按 Tab 键应该可以完成命令,直到出现歧义(或者如果存在 none 则完全结束)。如果有歧义,再次按 Tab 键会显示选项。因此,在您的情况下,如果您键入 My<tab><tab>
,您应该会显示选项 My_Script.sh
和 My_Other_Script.sh
。如果你输入 My_Script<tab>
它应该通过输入 My_Script.sh
来完成
编辑
我忘了准确地说,您可以通过 echo $PATH
检查 PATH 的值。这将允许您检查您复制的命令是否执行了您想要的操作。
总的来说,我对 Bash 和 Linux 还是很陌生。我已经创建了几个脚本,我希望能够通过键入命令而不是目录和可执行文件来使用它们。如果这有所作为,我正在使用 Debian Jessie。
我的一个脚本的路径是 ~/Scripts/DIR_1/My_Script.sh
而另一个在 ~Scripts/DIR_2/My_Other_Script.sh
中。我希望 Scripts
目录中包含的所有脚本都被索引为命令,而不管 directory/path 深度如何。
我已将此文本附加到我的 .bashrc
文件的末尾...
PATH=${PATH}:$(find ~/Scripts -type d | sed '/\/\./d' | tr '\n' ':' | sed 's/:$//')
由于我对这种事情很陌生,所以我不得不从 here 那里偷走那行。
当我尝试使用主文件夹(或其他任何地方)的子目录从命令行 运行 My_Script
时,我得到 My_Script: command not found
我承认我可能误解了将 bash 脚本添加到命令行的过程。
如何以递归方式将 bash 脚本添加为命令?我目前使用的流程有什么问题?
我认为你的问题是你没有放置 .sh,它是你文件名的一部分。
通常情况下,在仅输入第一个字母后按 Tab 键应该可以完成命令,直到出现歧义(或者如果存在 none 则完全结束)。如果有歧义,再次按 Tab 键会显示选项。因此,在您的情况下,如果您键入 My<tab><tab>
,您应该会显示选项 My_Script.sh
和 My_Other_Script.sh
。如果你输入 My_Script<tab>
它应该通过输入 My_Script.sh
编辑
我忘了准确地说,您可以通过 echo $PATH
检查 PATH 的值。这将允许您检查您复制的命令是否执行了您想要的操作。