哪个文件具有 rm、cd 等基本命令功能?

哪个文件具有 rm、cd 等基本命令功能?

我在查找包含 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。欢迎提供任何建议或文档。

答案1

whereis命令会告诉您命令的二进制文件和所有文档的位置。但并非所有命令都有一些在执行时调用的二进制文件。有些命令是 shell 内置的。由于 Ubuntu 使用 bash 作为其默认 shell,这些 Bash 内置函数存在。

确定一个命令是别名、调用某个二进制文件还是 shell 提供的命令,最简单的方法是使用带有选项type的(它本身也是 shell 内置命令)-a

例如,如果你使用

whereis cd

你会发现,没有任何输出能让你相信这cd是一些不存在的神奇的东西/usr/bin。但cd它是 shell 内置命令。如果你运行

type -a cd

你会得到

cd is a shell builtin

如果你自己尝试一下,你会发现确实rm有一个二进制文件 /垃圾桶

有一些例外。echo就是例子。

如果你跑

type -a echo

你会得到

echo is a shell builtin
echo is /bin/echo

这意味着 shell 中既有echo内置命令,也有外部命令/bin/echo。原因描述于Eliah Kagan 的回答muru 的回答

ls是另一个例外。默认情况下ls别名ls --color=auto的输出将如下所示type -a ls

ls is aliased to `ls --color=auto'
ls is /bin/ls

此别名定义在~/.bashrc。如果此别名是“无别名的”,ls则将调用位于/垃圾桶

答案2

如果我想知道命令ls在哪里,我会使用以下命令询问系统

whereis ls

guiverc@d960-ubu2:/de2900/buster$   whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

并告诉二进制文件位于何处(/bin/ls),以及手册(参考)(/usr/share/man/man1/ls.1.gz)

仅供参考:使用man ls查看手册页,手册页末尾的 .1.gz 仅告诉您这是第 1 页类型(即可执行程序或者 shell 命令)。

相关内容