有哪些方式可以知道,某个命令是不是系统自带的(MacOS 和 Linux )?

2022-09-17 18:04:13 +08:00
 wellwellwell

有哪些方式可以知道,某个命令是不是系统自带的,比如 ls 、cat 、grep 这些命令是系统自带的,这主要来自我们的经验,exa fzf ripgrep 不是系统自带的,需要自行安装,也是来自我们的经验。

我想知道有没有什么方法可以知道某个命令是不是系统本来就有的,或者有什么网站可供查询。

因为选择使用系统自带的命令,更适合作为可分享的脚本代码

1391 次点击
所在节点    macOS
7 条回复
hahasong
2022-09-17 18:08:22 +08:00
/bin /sbin /usr/bin /usr/sbin 是系统自带的
kkocdko
2022-09-17 18:22:29 +08:00
@hahasong 不对哦,自行安装上的也在这些目录里。

“系统自带”包含 shell build-in 命令(只要有 shell 就有),core-utils 和发行版镜像中自带的程序。

1. shell build-in 的命令可以用 type 查询。
[kkocdko@fedora apps]$ type cd
cd is a shell builtin
[kkocdko@fedora apps]$ type gcc
gcc is /usr/bin/gcc

2. 类似 cat ,du 这些命令属于 core-utils:
https://www.gnu.org/software/coreutils/

3. 至于发行版自行决定自带的程序,那就只能拆一下常见发行版的镜像,看看 /usr/bin 里有什么,然后导出个列表。
hahasong
2022-09-18 01:13:50 +08:00
@kkocdko 自行安装的在 /usr/local/bin 里
kkeep
2022-09-18 02:19:27 +08:00
which
kkeep
2022-09-18 02:20:05 +08:00
有意思,但是更多的是让客户端装吧
bao3
2022-09-18 09:28:14 +08:00
1# 3# 的回答是对的,仅限于 Unix 类系统,不适用于 Linux 类系统。
标准的 Unix 类 OS 都遵循 1# 3# 的规范,但这里要单独去看 Linux ,因为 Linux 太开放了,入门也太简单,所以 Linux 使用者很大一部分是乱放文件位置,或者从源编译时编译的配置文件也不遵守这个原则。

用户自己安装的程序一定是放在 /use/local/ 下的 bin 、lib 、etc 这些。同样也是 Linux 不在这个规则,所以你搜到的很多 Linux/VPS 不光软件会放在 /usr/bin ,用户安装的软件配置文件都可能放在 /etc ……

我看 2# 还在用 fodra linux 作为评论基础,这个就…… 反正他讲的是没错,但适用规则有误。
ihipop
2022-09-18 10:10:05 +08:00
自行安装里面也分通过包管理器安装或者自行编译安装。

如果自带说的是装机就有,那没有一个标准的,哪怕同一个发行版,不同的发行大小都可能不带一样的东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/880848

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX