6.15. Coreutils-5.2.1

Coreutils 软件包包含用于显示和设置基本系统特征的实用程序。

预计编译时间: 0.9 SBU
所需磁盘空间: 52.8 MB
安装依赖于: Bash、Binutils、Coreutils、Diffutils、GCC、Gettext、Glibc、Grep、Make、Perl 和 Sed

6.15.1. 安装 Coreutils

此软件包中的 uname 程序的一个已知问题是,-p 开关始终返回unknown。以下补丁修复了 Intel 架构的此行为

patch -Np1 -i ../coreutils-5.2.1-uname-2.patch

阻止 Coreutils 安装稍后将由其他软件包安装的二进制文件

patch -Np1 -i ../coreutils-5.2.1-suppress_uptime_kill_su-1.patch

现在准备 Coreutils 进行编译

DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr

编译软件包

make

Coreutils 的测试套件对系统用户和组的存在做出了一些假设,这些假设在目前存在的最小环境中无效。 因此,在运行测试之前需要设置其他项目。 如果不运行测试套件,请跳至“安装软件包”。

创建两个虚拟组和一个虚拟用户

echo "dummy1:x:1000:" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd

现在测试套件已准备好运行。 首先,运行旨在作为用户 root 运行的测试

make NON_ROOT_USERNAME=dummy check-root

然后以 dummy 用户身份运行其余的测试

src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

测试完成后,删除虚拟用户和组

sed -i '/dummy/d' /etc/passwd /etc/group

安装软件包

make install

将程序移动到 FHS 指定的位置

mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

LFS-Bootscripts 软件包中的某些脚本依赖于 headsleep。 因为/usr在启动的早期阶段可能不可用,因此这些二进制文件需要在根分区上

mv -v /usr/bin/{head,sleep} /bin

6.15.2. Coreutils 的内容

已安装的程序: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, 和 yes

简短描述

basename

从文件名中删除任何路径和给定的后缀

cat

将文件连接到标准输出

chgrp

更改文件和目录的组所有权

chmod

将每个文件的权限更改为给定的模式;该模式可以是更改的符号表示形式,也可以是表示新权限的八进制数

chown

更改文件和目录的用户和/或组所有权

chroot

以指定目录作为/目录运行命令

cksum

打印循环冗余校验 (CRC) 校验和以及每个指定文件的字节计数

comm

比较两个排序的文件,在三列中输出唯一的行和公共的行

cp

复制文件

csplit

将给定的文件拆分为几个新文件,根据给定的模式或行号分隔它们,并输出每个新文件的字节计数

cut

打印行的节,根据给定的字段或位置选择部分

date

以给定的格式显示当前时间,或设置系统日期

dd

使用给定的块大小和计数复制文件,同时选择性地对其执行转换

df

报告所有已挂载文件系统上或仅在保存所选文件的文件系统上可用的(和已使用的)磁盘空间量

dir

列出每个给定目录的内容(与 ls 命令相同)

dircolors

输出命令以设置LS_COLOR环境变量以更改 ls 使用的颜色方案

dirname

从文件名中删除非目录后缀

du

报告当前目录、每个给定目录(包括所有子目录)或每个给定文件使用的磁盘空间量

echo

显示给定的字符串

env

在修改的环境中运行命令

expand

将制表符转换为空格

expr

评估表达式

factor

打印所有指定整数的质因数

false

不执行任何操作,不成功; 它始终以指示失败的状态代码退出

fmt

重新格式化给定文件中的段落

fold

包装给定文件中的行

groups

报告用户的组成员身份

head

打印每个给定文件的前十行(或给定数量的行)

hostid

报告主机的数字标识符(以十六进制表示)

hostname

报告或设置主机的名称

id

报告当前用户或指定用户的有效用户 ID、组 ID 和组成员身份

install

复制文件,同时设置其权限模式,如果可能,还设置其所有者和组

join

连接来自两个单独的文件的具有相同连接字段的行

link

使用给定的名称创建指向文件的硬链接

ln

在文件之间建立硬链接或软链接(符号链接)

logname

报告当前用户的登录名

ls

列出每个给定目录的内容

md5sum

报告或检查消息摘要 5 (MD5) 校验和

mkdir

创建具有给定名称的目录

mkfifo

创建先进先出 (FIFO),这是 UNIX 术语中的“命名管道”,具有给定的名称

mknod

创建具有给定名称的设备节点; 设备节点是字符特殊文件、块特殊文件或 FIFO

mv

移动或重命名文件或目录

nice

以修改的调度优先级运行程序

nl

对给定文件中的行进行编号

nohup

运行不受挂断影响的命令,并将其输出重定向到日志文件

od

以八进制和其他格式转储文件

paste

合并给定的文件,将按顺序对应的行并排连接,并以制表符分隔

pathchk

检查文件名是否有效或可移植

pinky

是一个轻量级的 finger 客户端; 它报告有关给定用户的一些信息

pr

对文件进行分页和分列以进行打印

printenv

打印环境

printf

根据给定的格式打印给定的参数,很像 C printf 函数

ptx

从给定文件的内容生成置换索引,每个关键字都在其上下文中

pwd

报告当前工作目录的名称

readlink

报告给定符号链接的值

rm

删除文件或目录

rmdir

如果目录为空,则删除目录

seq

打印给定范围内并具有给定增量的数字序列

sha1sum

打印或检查 160 位安全哈希算法 1 (SHA1) 校验和

shred

使用复杂的模式重复覆盖给定的文件,使其难以恢复数据

sleep

暂停指定的时间长度

sort

对给定文件中的行进行排序

split

按大小或行数将给定的文件分割成多个部分

stat

显示文件或文件系统的状态

stty

设置或报告终端行设置

sum

打印每个给定文件的校验和和块计数

sync

刷新文件系统缓冲区;它强制将更改的块写入磁盘并更新超级块

tac

反向连接给定的文件

tail

打印每个给定文件的最后十行(或给定的行数)

tee

从标准输入读取,同时写入标准输出和给定的文件

test

比较值并检查文件类型

touch

更改文件时间戳,将给定文件的访问和修改时间设置为当前时间;不存在的文件将被创建为零长度

tr

转换、挤压和删除标准输入中给定的字符

true

什么也不做,成功;它总是以指示成功的状态代码退出

tsort

执行拓扑排序;它根据给定文件中的偏序写入一个完全排序的列表

tty

报告连接到标准输入的终端的文件名

uname

报告系统信息

unexpand

将空格转换为制表符

uniq

丢弃所有连续的相同行,只保留一行

unlink

删除给定的文件

users

报告当前登录的用户的名称

vdir

ls -l 相同

wc

报告每个给定文件的行数、字数和字节数,以及在给出多个文件时报告总计行

who

报告谁已登录

whoami

报告与当前有效用户 ID 关联的用户名

yes

重复输出“y”或给定的字符串,直到被终止