May*_*hux 10 command-line ubuntu debian
我想知道特定 Debian 软件包为我提供的命令。
例如,假设我安装了一个名为x.deb
. 这个包肯定包含一些我可以使用的命令。
如何列出这些命令。
我知道我可以使用compgen
bash 命令来生成系统中所有可用命令的列表,但我只需要特定包。
我尝试了以下解决方案:
dpkg -L postgresql-9.3 | egrep '(bin|games)/'
/usr/lib/postgresql/9.3/bin/pg_upgrade
/usr/lib/postgresql/9.3/bin/pg_ctl
/usr/lib/postgresql/9.3/bin/pg_resetxlog
/usr/lib/postgresql/9.3/bin/postgres
/usr/lib/postgresql/9.3/bin/pg_xlogdump
/usr/lib/postgresql/9.3/bin/initdb
/usr/lib/postgresql/9.3/bin/pg_controldata
/usr/lib/postgresql/9.3/bin/postmaster
Run Code Online (Sandbox Code Playgroud)
我试过命令 postgres
user@userPc:~$ postgres
No command 'postgres' found, did you mean:
Command 'postgrey' from package 'postgrey' (universe)
postgres: command not found
Run Code Online (Sandbox Code Playgroud)
Win*_*nny 14
使用dpkg -L pkgname
并将其通过管道传递给搜索bin/
and的 grep 命令games/
:
$ dpkg -L bash | grep -E '(bin|games)/'
/bin/bash
/usr/bin/bashbug
/usr/bin/clear_console
/bin/rbash
Run Code Online (Sandbox Code Playgroud)
如果你想检查所有二进制文件,不管它们是否在你的$PATH
试试这个 bash 函数中:
find_binaries (){
dpkg -L "$@" | while read; do
[ -f "$REPLY" -a -x "$REPLY" ] && echo "$REPLY"
done
}
Run Code Online (Sandbox Code Playgroud)
像这样调用:
$ find_binaries postfix
...SNIP...
/usr/lib/postfix/postfix-files
/usr/lib/postfix/pipe
/usr/lib/postfix/proxymap
/usr/lib/postfix/local
/usr/lib/postfix/discard
...SNIP...
Run Code Online (Sandbox Code Playgroud)
ter*_*don 11
最简单也可能是最健壮的方法是安装dlocate
:
sudo apt-get install dlocate
Run Code Online (Sandbox Code Playgroud)
然后你可以运行
dlocate -lsbin package-name
Run Code Online (Sandbox Code Playgroud)
如中所述man dlocate
:
-lsbin List full path/filenames of executable files (if any) in package
Run Code Online (Sandbox Code Playgroud)
这是与@Winny 类似但简化的方法
apt-file -F list package | cut -d ' ' -f 2 |
while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
Run Code Online (Sandbox Code Playgroud)
如果您还没有apt-file
安装,可以使用以下命令进行安装和设置:
sudo apt-get install apt-file
sudo apt-file update
Run Code Online (Sandbox Code Playgroud)
上面的命令apt-file
用于列出包的内容,然后是 bash 的测试-f
(这是一个文件吗?)和-x
(它是否可执行?),如果两个测试都通过,则打印文件名。
请注意,虽然类似下面的命令将为您提供最多的可执行文件:
apt-file -L list package | grep -Ew 'bin|sbin'
Run Code Online (Sandbox Code Playgroud)
它不会找到所有内容,因为您还可以在类似/opt
或什至/lib
(udev
例如各种工具)的地方获得可执行文件。因此,虽然使用-w
来匹配整个单词会增加您正确识别文件的机会,但解析路径并不是一个好方法,您应该改用上述方法之一。
归档时间: |
|
查看次数: |
2517 次 |
最近记录: |