Questions tagged «coreutils»

GNU Core Utilities是POSIX系统的核心命令行工具的GNU项目实现,包括ls,cp,mv,rm等工具。

3
为什么“ ls”突然用单引号引起来用空格包装项目?
我只是注意到,在我的其中一台机器上(运行Debian Sid),只要键入ls任何带空格的文件名,都将单引号引起来。 我立即检查了别名,却发现它们完整无缺。 wyatt@debian630:~/testdir$ ls 'test 1.txt' test1.txt wyatt@debian630:~/testdir$ alias alias ls='ls --color=auto' alias wget='wget --content-disposition' wyatt@debian630:~/testdir$ (图片) 另一个测试,文件名称中包含单引号(也回答jimmij的请求): wyatt@debian630:~/testdir$ ls 'test 1.txt' test1.txt 'thishasasinglequotehere'\''.txt' wyatt@debian630:~/testdir$ touch "'test 1.txt'" wyatt@debian630:~/testdir$ ls ''\''test 1.txt'\''' test1.txt 'test 1.txt' 'thishasasinglequotehere'\''.txt' (图片) 使用新的coreutils-8.26输出进行更新(虽然它的混乱程度要小得多,但是默认情况下仍然很烦人)。感谢PádraigBrady的此打印输出: $ ls "'test 1.txt'" test1.txt 'test 1.txt' "thishasasinglequotehere'.txt" $ ls -N …

13
正确锁定外壳脚本?
有时,您必须确保同时运行一个Shell脚本实例。 例如,通过crond执行的cron作业本身并不提供锁定(例如,默认的Solaris crond)。 实施锁定的常见模式是这样的代码: #!/bin/sh LOCK=/var/tmp/mylock if [ -f $LOCK ]; then # 'test' -> race begin echo Job is already running\! exit 6 fi touch $LOCK # 'set' -> race end # do some work rm $LOCK 当然,这样的代码具有竞争条件。在一个时间窗口中,两个实例的执行都可以在第3行之后在一个实例能够触摸$LOCK文件之前进行。 对于cron作业,这通常不是问题,因为两次调用之间的间隔为几分钟。 但是事情可能会出错(例如,当锁文件位于NFS服务器上时)会挂起。在这种情况下,几个cron作业可以在第3行上阻塞并排队。如果NFS服务器再次处于活动状态,那么您将听到大量并行运行的作业。 在网上搜索时,我发现了锁运行工具,这似乎是解决该问题的好方法。使用它可以运行需要锁定的脚本,如下所示: $ lockrun --lockfile=/var/tmp/mylock myscript.sh 您可以将其放入包装器中,也可以从crontab中使用它。 lockf()如果可用,它将使用(POSIX),然后回退到flock()(BSD)。并lockf()支持NFS上应该是比较普遍的。 有替代品lockrun吗? 那其他的cron守护程序呢?有普通的crond支持健全的锁定吗?快速浏览Vixie …

3
是的如何快速写入文件?
让我举个例子吧: $ timeout 1 yes "GNU" > file1 $ wc -l file1 11504640 file1 $ for ((sec0=`date +%S`;sec<=$(($sec0+5));sec=`date +%S`)); do echo "GNU" >> file2; done $ wc -l file2 1953 file2 在这里您可以看到该命令在一秒钟内yes写入了11504640行,而我只能1953使用bash for和在5秒内写入行echo。 正如评论中所建议的那样,有多种技巧可以使其更高效,但没有一个能与之匹敌的速度yes: $ ( while :; do echo "GNU" >> file3; done) & pid=$! ; sleep 1 ; …
58 bash  coreutils  write  yes 

2
cp -L与cp -H
问题 使用cp -H或复制文件时cp -L,我得到相同的结果: $ ls -l fileA fileA -> fileB $ cp fileA somewhere/ -H $ ls -l somewhere/ fileA # fileA is a copy of fileB, only renamed, with same properties! 此处的答案将这两个选项描述为与结合使用时类似的UNLESS -R。不适合我。软链接文件和硬链接文件将成为它们指向源文件的重命名副本。 问题: cp -H和的正确用法是cp -L什么?这是预期的行为吗? 我试图解决的问题: man cp告诉我两种选择都完全相同,但是info cp的措辞使我更加困惑。也许可以帮我分解一下: -H 如果命令行参数指定了符号链接,则复制它指向的文件而不是符号链接本身。但是,复制(保留其性质)通过递归遍历遇到的任何符号链接。 这听起来像是我的矛盾:我猜想» 符号链接的性质 «是指向某处… -L, --dereference …

3
我系统的/ bin中的`[`程序是什么?
最近,我在浏览Fedora的/bin文件夹时,发现一个名为的二进制文件[。我确实尝试在互联网上搜索有关此信息的更多信息,但是找不到任何有用的信息。运行它strace似乎也不会产生任何有用的东西来进行仔细检查。 那是什么?我应该惊慌吗?难道是系统妥协的结果?我应该运行它吗?它属于任何包装吗?
32 fedora  gnu  coreutils 


2
为什么ln -s接受一个参数
> cd /tmp > ln -s foo > ls -alhF /tmp lrwxrwxrwx 1 user user 3 Jul 29 14:00 foo -> foo 这是bug ln还是存在将文件符号链接到自身的用例? 这是与coreutils 8.21-1ubuntu5.1。
27 symlink  coreutils  ln 

3
GNU“ install” -d标志-它如何工作?
我试图编写一个makefile规则来复制目录,并保持其结构,并且由于我们makefile中的所有其他规则都使用install,所以我希望保持一致。 在联机帮助页中显示: 概要 install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY... -d, --directory treat all arguments as directory names; create all components of the specified directories 好的,这听起来像我所需要的...但是这些标志没有意义。如何指定要安装到的目标目录? 我尝试通过在本地硬盘上创建任意目录结构来进行基本测试: ~>tree test test ├── a │ └── b │ └── c │ …
26 coreutils 

4
GNU cp和mv中-T选项的附加值是什么?
为什么某些GNU Coreutils命令可以-T/--no-target-directory选择?看起来它所做的所有事情都可以使用.传统Unix目录层次结构中(自我点)的语义来实现。 考虑: cp -rT /this/source dir 该-T选项可防止副本创建dir/source子目录。而是用/this/source标识,dir并且内容相应地映射在树之间。因此,例如/this/source/foo.c去dir/foo.c等等,而不是去dir/source/foo.c。 但这可以轻松实现,而无需-T使用以下选项: cp -r /this/source/. dir # Probably worked fine since dawn of Unix? 语义上,尾随点组件被复制为的子元素dir,但当然“子”已经存在(因此不必创建)并且实际上是dir其本身,因此其效果/this/path由标识dir。 如果当前目录是目标目录,则可以正常工作: cp -r /this/tree/node/. . # node's children go to current dir 有什么事你可以做的只能用-T能合理化它的存在?(除了支持未实现点目录的操作系统外,文档中未提及的基本原理。) 上面的点技巧是否不能解决GNU Info文档中提到的相同竞争条件-T?
26 cp  coreutils 

4
-f选项对`touch`的用途是什么?
来自man touch: -f (ignored) 但我不明白被忽略的含义。 我试过以下: $ ls -l file -rw-rw-r-- 1 pandya pandya 0 Mar 20 16:17 file $ touch -f file $ ls -l file -rw-rw-r-- 1 pandya pandya 0 Mar 20 16:18 file 并注意到它尽管更改了时间戳 -f。 因此,我想知道-f代表什么或代表什么。
23 coreutils  touch 

2
md5sum在校验和前加上“ \”
查找名称中带有“ \”的文件的校验和时,为什么md5sum在校验和前加“ \”? $ md5sum /tmp/test\\test \d41d8cd98f00b204e9800998ecf8427e /tmp/test\\test 对于其他所有实用程序,请注意相同的内容。

3
date命令中的“ 1个月前”选项如何工作?
我不确定这是否是当天的过去日期,或者只需要30或31天。 例如 如果当前日期March 28th必须是1个月前February 28th,但是当它是什么时候呢March 30th? 情境 我想每天备份一些文件,脚本将使用$(date +%Y%m%d)格式将当前文件保存在当前日期内,例如20150603_bckp.tar.gz,然后在下个月到来时,删除1个月前除1号和15号文件以外的所有那些文件,因此这是我的状况: past_month = $(date -d "-1 month" +%Y%m%d) day = $(date +%d) if [ "$day" != 01 ] && [ "$day" != 15 ] then rm /path/of/files/${past_month}_bckp.tar.gz echo "Depuration done" else echo "Keep file" fi 但是我想知道,当日期是30日,31日甚至是过去2月的示例时会发生什么?会保留那些文件吗?或删除第一天的文件? 到31日时,将执行净化,因此,如果过去一个月只有30天,这会删除第一天的文件吗? 我希望我能暗示。
22 date  coreutils 

6
是否可以选择在Linux上替换GNU coreutils?
我一直在考虑停止在Linux系统上使用GNU Coreutils,但是老实说,与许多其他GNU组件不同,我想不出任何替代方法(在Linux上)。GNU coreutils有哪些替代方案?我需要多个包裹吗?链接项目是命名发行包的必不可少的奖励点。 另外,除非您知道它们可以在Linux上运行并且可以参考说明,否则请不要提出任何建议。我怀疑我是否会很快切换内核,而对于简单性之外的任何事情我都太懒了./configure; make; make install。我当然不会为此而破解C。 警告:如果您的发行版使用coreutils,则删除它们可能会破坏发行版功能。但是,不要让它们成为您的第一$PATH也不应该破坏事情,因为大多数脚本应该使用绝对路径。

3
为什么coreutils的排序速度比Python慢​​?
我编写了以下脚本来测试Python排序功能的速度: from sys import stdin, stdout lines = list(stdin) lines.sort() stdout.writelines(lines) 然后,我将其与sort包含1000万行的文件中的coreutils 命令进行了比较: $ time python sort.py <numbers.txt >s1.txt real 0m16.707s user 0m16.288s sys 0m0.420s $ time sort <numbers.txt >s2.txt real 0m45.141s user 2m28.304s sys 0m0.380s 内置命令使用了所有四个CPU(Python仅使用了一个),但是运行时间大约是它的3倍!是什么赋予了? 我正在使用Ubuntu 12.04.5(32位),Python 2.7.3和sort8.13


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.