Linux命令列出所有可用的命令和别名

是否有Linux命令将列出此terminal会话的所有可用的命令和别名?

就好像你键入了'a'并按下了标签,而是为了每个字母的字母。 或者运行“别名”,但也返回命令。

为什么? 我想运行以下命令并查看是否有命令可用:

ListAllCommands | grep searchstr 

你可以使用bash(1)内置的compgen

  • compgen -c会列出你可以运行的所有命令。
  • compgen -a将列出您可以运行的所有别名。
  • compgen -b将列出您可以运行的所有内置程序。
  • compgen -k将列出您可以运行的所有关键字。
  • compgen -A function将列出你可以运行的所有function。
  • compgen -A function -abckcompgen -A function -abck列出所有上述内容。

检查您可以生成的其他完成的手册页。

要直接回答你的问题:

 compgen -ac | grep searchstr 

应该做你想做的事情。

添加到.bashrc

 function ListAllCommands { echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \ -executable -type f -printf '%P\n' | sort -u } 

如果你还想要别名,那么:

 function ListAllCommands { COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \ -executable -type f -printf '%P\n'` ALIASES=`alias | cut -d '=' -f 1` echo "$COMMANDS"$'\n'"$ALIASES" | sort -u } 

 type -a mycommand 

命令,其中列出了使用mycommand的 $ PATH中的所有别名和命令。 可以用来检查命令是否存在多个变体。 除此之外…可能有一些脚本parsing$ PATH和所有别名,但不知道任何这样的脚本。

使用“哪个searchstr”。 如果是别名,则返回二进制文件的path或别名设置

编辑:如果你正在寻找一个别名列表,你可以使用:

 alias -p | cut -d= -f1 | cut -d' ' -f2 

将其添加到您喜欢的任何PATHsearch答案中。 假设你正在使用bash ..

试试这个脚本:

 #!/bin/bash echo $PATH | tr : '\n' | while read e; do for i in $e/*; do if [[ -x "$i" && -f "$i" ]]; then echo $i fi done done 

根据与命令关联的关键字列出命令很有用。

使用: man -k "your keyword"

随意结合: | grep "another word" | grep "another word"

例如,find一个文本编辑器: man -k editor | grep text man -k editor | grep text

快捷方式列出所有的命令。 打开terminal并按两次“标签”button。 这显示在terminal的所有命令

尝试按ALT-? (同时也是问号)。 给它一两个build立清单。 它应该在bash中工作。

这是一个解决scheme,给你一个所有可执行文件别名的列表。 对于没有xargs -d (例如Mac OS X)的系统也是可移植的,并且可以正确处理其中有空格的path。

 #!/bin/bash (echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@" 

用法: myscript.sh [grep-options] pattern ,例如,查找以ls开头的所有命令,不区分大小写,执行:

 myscript -i ^ls 

对于Mac用户( 不具有-executable和xargs没有-d):

 echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x' 

你可以总是以下几点:

 1. Hold the $PATH environment variable value. 2. Split by ":" 3. For earch entry: ls * $entry 4. grep your command in that output. 

只有当它们被列在pathenv var中时,shell才会执行命令。

这取决于,我的意思是取决于你使用的是什么shell。 这里是我看到的约束:

  1. 必须在与shell相同的进程中运行,以便捕获会影响命令的别名,函数和variables,请考虑PATH或EDITOR,尽pipeEDITOR可能超出范围。 你可以有未导出的variables,可以影响事物。
  2. 它是特定于shell的,或者进入内核,/ proc / pid / enviorn,而且朋友没有足够的信息

我使用ZSH所以这里是一个zsh答案,它做了以下3件事情:

  1. 转储path
  2. 转储别名
  3. 转储env中的函数
  4. sorting他们

这里是:

 feed_me() { (alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort } 

如果你使用zsh,应该这样做。

问题是tab-completion正在search你的path,但是所有的命令都不在你的path中。

要使用bash在你的path中find命令,你可以这样做:

对于echo $PATH | cut -d":" -f1 x echo $PATH | cut -d":" -f1 ; 做ls $ x; DONE

这里有一个你可以放在你的bashrc文件中的函数:

function命令search
 {
    oldIFS = $ {} IFS
    IFS = “:”

   对于$ {PATH}中的p
   做
       ls $ p |  grep $ 1
    DONE

   导出IFS = $ {oldIFS}
 }

用法示例:

 $ command-search gnome
 GNOME的audioconfiguration文件的属性*
 GNOME的退出@
 GNOME的钥匙圈*
 GNOME的钥匙圈守护*
 GNOME贴装*
 GNOME开*
 GNOME的声音logging器*
 GNOME的文本编辑器@
 GNOME-卸除@
侏儒-音量控制*
 polkit-gnome的授权*
 vim.gnome *
 $

仅供参考:IFS是bash用来拆分string的variables。

当然可以有一些更好的方法来做到这一点。

其他命令在embedded式系统上不适用于我,因为它们需要bash或更完整版本的xargs。

以下命令可以在任何类Unix系统上工作。

按文件夹列出:

 ls $(echo $PATH | tr ':' ' ') 

按名称列出所有命令

 ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort 

或者,你可以得到一个方便的命令列表,加上快速的描述(只要该命令有一个手册页,大多数情况下):

 apropos -s 1 '' -s 1 returns only "section 1" manpages which are entries for executable programs. '' is a search for anything. (If you use an asterisk, on my system, bash throws in a search for all the files and folders in your current working directory.) 

那么你就像你想要的那样grep它。

 apropos -s 1 '' | grep xdg 

收益率:

 xdg-desktop-icon (1) - command line tool for (un)installing icons to the desktop xdg-desktop-menu (1) - command line tool for (un)installing desktop menu items xdg-email (1) - command line tool for sending mail using the user's preferred e-mail composer xdg-icon-resource (1) - command line tool for (un)installing icon resources xdg-mime (1) - command line tool for querying information about file type handling and adding descriptions for new file types xdg-open (1) - opens a file or URL in the user's preferred application xdg-screensaver (1) - command line tool for controlling the screensaver xdg-settings (1) - get various settings from the desktop environment xdg-user-dir (1) - Find an XDG user dir xdg-user-dirs-update (1) - Update XDG user dir configuration 

结果似乎没有sorting,所以如果你正在寻找一个长列表,你可以扔一个| sorting| 进入到中间,然后通过pipe道传送给一个传呼机。 翼:

 apropos -s 1 '' | sort | grep zip | less 

它返回一个sorting的列表,其名称中包含“zip”的所有命令或其简短描述,并抽取“less”寻呼机。 (您也可以使用$ PAGERreplace“less”,并使用默认的寻呼机。)

也许我是误解,但如果你按Escape,直到你有显示所有X的可能性呢?

基本命令:

$ touch: – 用于创build空文件的用户

Syn: – 触摸文件名

例如:触摸rama

$ ls文件和目录的列表

$ ls -l长列表

文件types,权限,链接文件,用户(或)所有者名称,组名,文件大小,时间戳,文件或目录名称。

– 常规(或)正常文件

d目录

l链接文件

ls -a:显示全部(包括隐藏文件)

隐藏的文件和目录开头。 (点)

find更多的命令@ http://k2schools.com/linux-commands/

 compgen -c > list.txt && wc list.txt 

你为什么不input:

 seachstr 

在terminal。

壳会说喜欢

 seacrhstr: command not found 

编辑:

好吧,我采取downvote,因为答案是愚蠢的,我只想知道:这个答案有什么问题! 提问者说:

并查看一个命令是否可用。

input命令会告诉你它是否可用!

也许他/她的意思是“不执行命令”“把它包含在脚本中”,但是我不能读懂他的想法(不是我不能经常这样做,只是他正在读一个偏转器 )

在debian中:ls / bin / | grep“whatImSearchingFor”