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 -abck
将compgen -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。 这里是我看到的约束:
- 必须在与shell相同的进程中运行,以便捕获会影响命令的别名,函数和variables,请考虑PATH或EDITOR,尽pipeEDITOR可能超出范围。 你可以有未导出的variables,可以影响事物。
- 它是特定于shell的,或者进入内核,/ proc / pid / enviorn,而且朋友没有足够的信息
我使用ZSH所以这里是一个zsh答案,它做了以下3件事情:
- 转储path
- 转储别名
- 转储env中的函数
- 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”