新手遇到的最常见问题之一是如何使用包管理器(例如apt/dnf命令)找到刚刚安装在Linux上的Linux命令路径。有许多来自Windows世界的开发人员。其中许多是首次使用 Linux的用户。有些使用WSL的Linux,有些则直接通过ssh处理云服务器。让我们看看一些常见的命令来列出或查找Linux命令的路径。
什么是Linux命令?
在Windows上,默认用户界面是 GUI。但是,服务器端的 Linux 默认设置为文本界面。因此经常使用诸如 Bash、shell、控制台、命令提示符、终端和许多其他名称之类的术语。它们都指的是文本界面。
同样,在终端上,您键入称为 Linux 命令的指令。例如,您可以按Ctrl– Alt–T启动 Linux 终端。然后您可以键入一个简单的命令,例如date命令查看今天的日期和时间。在按Enter键运行它
date
2021年 11月 05日 星期五 15:47:49 CST
date、pwd、hello 和ping都是Linux 命令。
不同类型的Linux命令
您在终端中键入的 Linux 命令有不同的类型:
- 内部或内置shell命令 builtin
- 外部命令/可执行文件/文件 file
- 一个shell函数 function
- 一个别名 alias
- 一个关键字 keyword
如何找出Linux命令类型
我们需要使用type命令来显示Linux命令的路径。它还会判断该命令是内置shell、别名、函数还是外部命令。语法是
type command
type -t command
type -a command
例如,让我们找出pwd命令类型:
type pwd
type date
type hello
type ping
# Display a single word which is one of 'alias', 'keyword', 'function', 'builtin',
# 'file or '' , if command is an alias, shell reserved word, shell function, shell builtin,
# disk file, or not found, respectively
type -t ping
type -t if
type -t vi
type -t nano
# The '-a' option shows all locations containing an executable named ping
type -a ping
变量$PATH是什么?
PATH变量包含一组目录,可执行程序(例如 ping、date、vi、docker 等)存储在 Linux或类Unix系统上。要查看当前PATH,请使用echo命令/printf 命令:
echo " $PATH "
# OR
#
# 更友好的阅读格式
#
echo " ${PATH//:/$'\n'} "
这是我看到的:
/media/common/linux/gradle-7.2/bin$'
'/home/myfreax/.pulumi/bin$'
'/media/common/linux/go/bin/bin$'
'/media/common/linux/go/bin$'
'/media/common/linux/Android/sdk/cmdline-tools/latest/bin$'
'/media/common/linux/node-v14.17.3-linux-x64/bin$'
'/media/common/yarn/bin$'
'/media/common/linux/flluter/flutter/bin$'
'/home/myfreax/.deno/bin$'
'/home/myfreax/.cargo/bin$'
'/usr/local/sbin$'
'/usr/local/bin$'
'/usr/sbin$'
'/usr/bin$'
'/sbin$'
'/bin$'
'/usr/games$'
'/usr/local/games$'
'/snap/bin$'
'/home/myfreax/.pub-cache/bin$'
'/home/myfreax/.pulumi/bin
要查看存储在/bin/目录中的所有可执行文件,请运行 ls 命令,如下所示:
ls / bin /
ls -l / bin /
如何显示有关命令的信息
使用command命令如下列出Linux命令的路径:
command -v date
command -v pwd
command -v ping
command -v docker
如果你要shell脚本检查一个命令是否存在,请使用command检查。
如何定位Linux命令
我们还可以使用which命令轻松获取Linux命令的路径。例如: 要打印所有可能的匹配路径,请按如下方式传递:
which gcc
which nano
which -a ls
获取Linux命令或手册页的路径
使用whereis命令在磁盘上查找指定程序或命令的二进制文件、源代码和手册页。语法是:
whereis command
whereis gcc
whereis docker
whereis lxc
whereis vim
如何只搜索手册和信息页面?
whereis -m date
whereis -m gcc
查找和定位命令
我们还可以按名称查找文件。例如,搜索名为 'date' 类型的文件:
locate -b '\date'
## OR ##
find / -name "date" -ls
# sudo for all files
sudo find / -name "date" -ls
定位命令的输出:
/snap/core/11316/bin/date
/snap/core/11420/bin/date
/snap/core18/2066/bin/date
/snap/core18/2074/bin/date
/snap/core20/1026/usr/bin/date
/snap/core20/1081/usr/bin/date
/usr/bin/date
/usr/lib/byobu/date
显示有关Linux命令的帮助
我们可以使用whatis命令、help命令和man命令或info命令。
每个 Linux 命令都带有一个手册页(描述用法和语法的帮助页)。此外,它还包含一个简短的描述。例如,whatis命令搜索手册页名称。它以简短形式显示任何匹配名称的手册页描述:
whatis ls
whatis clear
whatis date
whatis gcc
对于所有外部命令,我们使用如下man命令或info命令获取详细手册:
man date
man ls
man gcc
man bash
info ls
info bash
man which
Linux 上的示例手册页
对于所有Bash关键字和内置函数,我们使用help 命令:
help if
help exit
help logout
help type
help command
一个小练习
Linux新用户的主要障碍是定位命令。但是在这个简单页面的帮助下,您现在可以找到命令路径,甚至可以使用手册页获得有关它们的帮助。假设您在 Ubuntu 服务器上安装了Docker。然后您可以使用以下命令查找路径并获取帮助:
whatis docker
whereis docker
type -a docker
which docker
find / -iname "docker"
locate -b '\docker'
man docker
我希望新的 Linux 用户和开发人员会发现这些命令很有用。快乐编码。