有没有一个Linux命令可以列出此终端会话中所有可用的命令和别名?
就像您键入'a'并按Tab键一样,但适用于字母表中的每个字母。 或者运行“alias”,但也返回命令。
为什么?我想运行以下命令,以查看命令是否可用:
ListAllCommands | grep searchstr
有没有一个Linux命令可以列出此终端会话中所有可用的命令和别名?
就像您键入'a'并按Tab键一样,但适用于字母表中的每个字母。 或者运行“alias”,但也返回命令。
为什么?我想运行以下命令,以查看命令是否可用:
ListAllCommands | grep searchstr
快捷方法列出所有命令。 打开终端并按两次"tab"按钮。 这将显示终端中的所有命令。
grep
中呢? - Toby Speight您可以始终执行以下操作:
1. Hold the $PATH environment variable value.
2. Split by ":"
3. For earch entry:
ls * $entry
4. grep your command in that output.
无论如何,shell 只会执行在 path 环境变量中列出的命令。
这要看情况,我的意思是这取决于你使用的shell。以下是我看到的限制:
我使用ZSH,所以这里是一个zsh答案,它做了以下3件事:
这是它:
feed_me() {
(alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort
}
echo $PATH | cut -d":" -f1
; do ls $x; done
这里是一个你可以放在bashrc文件中的函数:
function command-search { oldIFS=${IFS} IFS=":"
for p in ${PATH} do ls $p | grep $1 done export IFS=${oldIFS} }
使用示例:
$ command-search gnome gnome-audio-profiles-properties* gnome-eject@ gnome-keyring* gnome-keyring-daemon* gnome-mount* gnome-open* gnome-sound-recorder* gnome-text-editor@ gnome-umount@ gnome-volume-control* polkit-gnome-authorization* vim.gnome* $
提示:IFS是bash用于分割字符串的变量。
当然,可能有更好的方法来实现这个功能。
compgen -c > list.txt && wc list.txt
compgen -c > /tmp/list.txt && /tmp/wc list.txt
- Gary为什么不直接输入:
seachstr
seacrhstr: command not found
编辑:
好的,我接受了这个踩,因为我的回答很愚蠢,但我只是想知道:这个回答有什么问题!!!提问者说:
并查看命令是否可用。
输入命令将告诉您它是否可用!
可能他/她的意思是“不执行该命令”或“将其包含在脚本中”,但我无法读懂他的想法(不是我不能通常做到,而是他戴着一个mind reading deflector)
formathdd
命令。哦,等等,我只需要运行它并查看结果。谢谢 :) - Jeffrey Jose
compgen
的此回答。 - Matthias Braun