我在查找具有 rm、ls、cd 等基本命令的文件时遇到问题。我需要 Ubuntu 中的文件路径来编辑它们。我在网上查了一下,但只是找到了 UNIX 文件位置(/usr/bin)。
所以,这就是我的意思,
# cd /usr/bin
# ls -lh rm
-r-xr-xr-x 1 root bin 14K May 1 2007 rm
# chmod 4555 rm
# ls -lh rm
-r-sr-xr-x 1 root bin 14K May 1 2007 rm
# chmod 2555 rm
-r-xr-sr-x 1 root bin 14K May 1 2007 rm
我想更改rm
. 欢迎包含任何建议或文件。
whereis
command 告诉您命令的二进制文件和所有文档的位置。但并非所有命令都有一些在执行时调用的二进制文件。有些命令是 shell 内置的。由于 Ubuntu 使用 bash 作为其默认 shell,因此存在这些 Bash Builtins。确定命令是别名还是调用某些二进制文件还是 shell 提供的命令的最简单方法是使用
type
(它本身也是 shell 内置命令)with-a
option。例如,如果您使用
您会发现没有任何输出可以让您相信/usr/bin
cd
中不存在一些神奇的东西。但是是一个shell内置命令。如果你跑cd
你会得到
如果您自己尝试,您会发现/bin
rm
中确实有一个二进制文件 。但也有一些例外。
echo
就是例子。如果你跑
你会得到
这意味着在/bin/echo
echo
中有一个shell 内置命令和一个外部命令。原因在以利亚卡根的回答和穆鲁的回答中有所描述。ls
是另一个例外。默认情况下也是ls
一个别名ls --color=auto
。的输出type -a ls
将如下所示:此别名在~/.bashrc中定义。如果这个别名是“无别名的”,
ls
将调用位于/bin的二进制文件。如果我想知道命令在哪里
ls
,我会问系统使用whereis ls
它告诉二进制文件的位置(
/bin/ls
),加上手册(参考)(/usr/share/man/man1/ls.1.gz)仅供参考:用于
man ls
查看手册页,手册页末尾的 .1.gz 只是告诉您它是第 1 页类型(即可执行程序或 shell 命令)。