根据 Unix 风格,一些著名的命令行工具有多个版本(例如 sed、find、ld)。
我想知道 Ubuntu 中有哪些版本可用(我认为所有版本都是 GNU,但我想确认一下)?
答案1
有几种方法可以解释您的问题,因此我会明确地回答。
Ubuntu GNU 项目中的所有命令行应用程序都是吗?
当然不是,你可以安装任何你喜欢的东西,而且有很多东西直接属于 Ubuntu 或 Debian,但不是上游的。
Ubuntu 附带的大多数命令行应用程序又怎么样?
coreutils
构成了其中的绝大部分(这是一个 GNU 项目 — — 这就是 GNU/Linux 中的 GNU 所代表的)但为了符合 POSIX 标准,系统需要的不仅仅是coreutils
。
如果你想知道coreutils
封面是什么,这里是它的包装描述:
This package contains the basic file, shell and text manipulation
utilities which are expected to exist on every operating system.
Specifically, this package includes: arch base64 basename cat chcon chgrp
chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors
dirname du echo env expand expr factor false flock fmt fold groups head
hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp
mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd
readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum
sync tac tail tee test timeout touch tr true truncate tsort tty uname
unexpand uniq unlink users vdir wc who whoami yes
那么所有 POSIX 命令都是 GNU 吗?
不是。虽然 Ubuntu 确实使用 GNU,但它依赖大量非 GNU 项目来实现 POSIX 兼容性。
我已经介绍过哪些命令是 POSIX 之前的因此,通过该列表,我们可以快速生成软件包列表,然后从这些软件包中获取所有项目主页 URL。即使不访问这些 URL,您也可以看到它们不是 GNU(有些甚至是明显的非 GNU)。
$ apt-cache show $(for c in "admin alias ar asa at awk basename batch bc bg break c99 cal cat cd cflow chgrp chmod chown cksum cmp colon comm command compress continue cp crontab csplit ctags cut cxref date dd delta df diff dirname dot du echo ed env eval ex exec exit expand export expr false fc fg file find fold fort77 fuser gencat get getconf getopts grep hash head iconv id ipcrm ipcs jobs join kill lex link ln locale localedef logger logname lp ls m4 mailx make man mesg mkdir mkfifo more mv newgrp nice nl nm nohup od paste patch pathchk pax pr printf prs ps pwd qalter qdel qhold qmove qmsg qrerun qrls qselect qsig qstat qsub read readonly renice return rm rmdel rmdir sact sccs sed set sh shift sleep sort split strings strip stty tabs tail talk tee test time times touch tput tr trap true tsort tty type ulimit umask unalias uname uncompress unexpand unget uniq unlink unset uucp uudecode uuencode uustat uux val vi wait wc what who write xargs yacc zcat"; do dpkg -S $(readlink -f $(which $c)); done | awk -F: '{print $1}' | sort -u) | awk '/Package|Homepage/'
Package: at
Package: bc
Homepage: http://ftp.gnu.org/gnu/bc/
Package: binutils
Package: bison
Homepage: http://www.gnu.org/software/bison/
Package: bsdmainutils
Package: bsdutils
Homepage: http://userweb.kernel.org/~kzak/util-linux/
Package: coreutils
Homepage: http://gnu.org/software/coreutils
Package: cron
Homepage: http://ftp.isc.org/isc/cron/
Package: cups-client
Homepage: http://www.cups.org
Package: dash
Homepage: http://gondor.apana.org.au/~herbert/dash/
Package: diffutils
Homepage: http://www.gnu.org/software/diffutils/
Package: ed
Homepage: http://www.gnu.org/software/ed/
Package: file
Homepage: http://www.darwinsys.com/file/
Package: findutils
Homepage: http://savannah.gnu.org/projects/findutils/
Package: flex
Homepage: http://flex.sf.net/
Package: gawk
Homepage: http://www.gnu.org/software/gawk/
Package: gcc
Package: graphviz
Homepage: http://www.graphviz.org/
Package: grep
Homepage: http://www.gnu.org/software/grep/
Package: gzip
Package: heirloom-mailx
Homepage: http://heirloom.sourceforge.net/mailx.html
Package: libc-bin
Homepage: http://www.eglibc.org
Package: libc-dev-bin
Homepage: http://www.eglibc.org
Package: login
Homepage: http://pkg-shadow.alioth.debian.org/
Package: m4
Homepage: http://www.gnu.org/software/m4/
Package: make
Homepage: http://www.gnu.org/software/make/
Package: man-db
Homepage: http://man-db.nongnu.org/
Package: ncurses-bin
Homepage: http://invisible-island.net/ncurses/
Package: patch
Package: pax
Package: procps
Homepage: http://gitorious.org/procps
Package: psmisc
Homepage: http://psmisc.sf.net/
Package: sed
Homepage: http://www.gnu.org/software/sed/
Package: sharutils
Homepage: http://www.gnu.org/software/sharutils/
Package: sysvinit-utils
Homepage: http://savannah.nongnu.org/projects/sysvinit
Package: time
Homepage: http://www.gnu.org/software/time
Package: util-linux
Homepage: http://userweb.kernel.org/~kzak/util-linux/
Package: vim-tiny
Homepage: http://www.vim.org/
答案2
您可以从以下位置查看用户空间“GNU”维基百科- 。
因此,Ubuntu 可以使用 GNU 命令。要查看可用命令,请参阅GNU 软件包列表。
对于特定命令(例如:寻找):findutils 来自GNU 计划
答案3
几乎所有 Unix 命令都存在不同的版本,具体取决于所使用的操作系统。
存在显著差异,通常是 GNU 对 POSIX 标准的扩展。
在 Ubuntu 上,您可以预期 GNU 版本是大多数这些命令的标准,但不一定是全部。
最明显的例子是,/bin/sh
它是 Ubuntu 上的链接dash
,不再bash
像以前那样了。
虽然bash
是 GNU 项目的一部分,但dash
最初源自 netBSD 项目。
答案4
根据我的经验,Unix 工具的 GNU 实现通常有更丰富的可用选项。但是,可能也有例外。有时默认行为也有所不同。例如,没有目录的 GNU“find”运行会隐式假定在当前目录中运行。在 SunOS 上,这是不正确的,您必须键入“find .”才能获得相同的结果。