Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

4
通过滤色器管道命令
Unix中是否存在类似的东西? $ echo "this should show in red" | red $ echo "this should show in green" | green $ echo "this should show in blue" | blue 在这里,我并不是说要显示原汁原味的颜色代码文本(例如,粘贴到文件中)。我只是想让文本实际显示为该颜色。这可能吗?
13 bash  terminal  colors 

3
在Linux上将/ dev / random链接到/ dev / urandom是否错误?
我目前正在gpg --genkeyLinux VM上进行测试。不幸的是,该软件似乎依赖于/dev/random收集熵,并礼貌地要求用户在密码随机输入的屏幕之后手动键入屏幕,因此最终可能会生成密钥,而且我发现没有命令行参数可以告诉用户使用另一个文件作为熵源(该视频中的家伙遇到了同样的问题...)。 但是,用户应该可以自由选择使用它,/dev/urandom因为它没有任何问题。它主要是让人回想起较旧的PRNG算法,从加密的角度来看,这些算法较弱。例如,尽管NetBSD联机帮助页承认该区别在启动初期仍可能有用,但它描述了诸如“民俗学”和“仅防御幻想威胁模型的假想理论”之类的区别。既没有人同意此命令所要求的熵的数量,也没有人同意GPG手册(“请不要使用此命令,除非您知道自己在做什么,否则可能会删除系统中的宝贵信息!” )。 我已经读过有关人们安装rngd守护程序并将其配置为/dev/urandom用作馈送的熵源的文章/dev/random,但是我发现这种做法非常肮脏。 我试图通过以FreeBSD方式解决该问题,方法是删除/dev/random并链接到该问题/dev/urandom: rm /dev/random ln -s /dev/urandom /dev/random 我将其视为告诉“我信任/dev/urandom作为熵源”的设置。 我担心会遇到某种错误,但这似乎可以提供预期的结果,因为命令现在可以立即成功返回。 我的问题是:在FreeBSD系统上默认情况下,在Linux系统上进行链接有没有任何已知,实用和错误的副作用?/dev/random/dev/urandom还是可以设想永久设置此设置(例如,在启动过程结束时在脚本中进行设置),以防由于/dev/random锁定某些服务而导致重复性问题?
13 linux  security  random 

5
无法在最小的Centos Docker容器上安装手册页
我只有一个最小的Centos 7 Docker映像,并且试图在其上获得一些手册页,以帮助调试Dockerfile。开箱即用,它没有太多: # man ls No manual entry for ls 根据Serverfault的这个答案,我安装了man-pagesRPM,看来一切正常: # yum install -y man-pages Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirror.vtti.vt.edu * extras: centos.mbni.med.umich.edu * updates: centos.netnitco.net Resolving Dependencies --> Running transaction check ---> Package man-pages.noarch 0:3.53-5.el7 will be installed --> …
13 centos  rpm  man  docker 

2
为什么`watch`使`ls / tmp`列出$ HOME的内容?
我正在尝试查看/tmp/目录中的文件数。为此,我认为此命令将起作用: watch sh -c 'ls /tmp/|wc -l' 但这似乎ls没有任何论据就可以工作。即,我在中~,在那里我得到的文件数代替/tmp/。我找到了一种解决方法,该方法似乎可行: watch sh -c 'ls\ /tmp/|wc -l' 但是,为什么我要逃避之间的空间ls和/tmp/?命令如何转换,watch以便将ls输出馈送到wc,但/tmp/不作为参数传递给ls?
13 shell  ls  watch 

2
如何从$ @删除位置参数
基本上,我想-inf从参数列表中“拔出”第一次出现。(其余参数将传递给其他命令。) 我拥有的脚本具有以下结构: #!/bin/sh <CODE> for POSITIONAL_PARAM in "$@" do <CODE> if [ "$POSITIONAL_PARAM" = '-inf' ] then <PLUCK $POSITIONAL_PARAM FROM $@> break fi <CODE> done <CODE> some-other-command "$@" # end of script 有什么好方法吗? 顺便说一句,即使我主要对适用于的答案感兴趣,但我/bin/sh也对仅适用于的答案感兴趣/bin/bash。

1
bash中算术扩展的评估
以下行创建file_c-6.txt但输出5: $ i=5; ls file_a-${i}.txt file_b-${i}.txt > file_c-$(( ++i )).txt; echo $i 5 $ cat file_c-6.txt file_a-5.txt file_b-5.txt 如果删除>,它将列出file_c-6.txt并输出5: 我不明白为什么它没有保留i第一个示例中的值。 $ i=5; ls file_a-${i}.txt file_b-${i}.txt file_c-$(( ++i )).txt; echo $i file_a-5.txt file_b-5.txt file_c-6.txt 6
13 bash 

2
如何在NixOS上找出文件属于哪个(未安装)软件包?
我在NixOS上使用Nix软件包管理器。假设我要安装一个提供文件的软件包。我如何找到提供此文件的软件包,类似于其他GNU / Linux发行版?libgtk-x11-2.0.so.0 目前,我必须搜索该文件并找出它可能属于哪个程序包,然后在Nix存储库中找到相应的程序包,但是我想使用一种更加惯用的方法。

2
为什么“ bash -x”会破坏此脚本?
我有一个脚本,可以测量某些命令的执行时间。 它需要“ real” time命令,即,例如in中的二进制文件/usr/bin/time(因为内置的bash没有该-f标志)。 下面是一个可以调试的简化脚本: #!/bin/bash TIMESEC=$(echo blah | ( /usr/bin/time -f %e grep blah >/dev/null ) 2>&1 | awk -F. '{print $1}') echo ABC--$TIMESEC--DEF if [ "$TIMESEC" -eq 0 ] ; then echo "we are here!" fi 另存为“ test.sh”并执行: $ bash test.sh ABC--0--DEF we are here! 这样就行了。 现在,让我们尝试通过在bash命令行中添加“ -x”来调试它: …


3
在已排序的文本文件中进行二进制搜索
我有一个很大的排序文件,其中包含数十亿行可变长度的行。给定新行,我想知道如果已包含在已排序文件中,它将获得哪个字节数。 例 a\n c\n d\n f\n g\n 给定输入“ foo”,我将得到输出9。 仅通过遍历整个文件就很容易做到这一点,但是由于数十亿行可变长度,执行二进制搜索会更快。 这样的文本处理工具已经存在了吗? 编辑: 现在可以了:https : //gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch

2
连接到github.com时“ X11转发请求失败”
使用git时出现奇怪的错误消息: $ git clone git@github.com:Itseez/opencv.git Cloning into 'opencv' Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts. X11 forwarding request failed on channel 0 (...) 我的印象是git不需要X11,所以这似乎很奇怪。此克隆成功运行,因此这比“错误”问题更像是一个“警告”问题,但似乎令人不安。毕竟,git 不需要 X11。有什么建议么?
13 ssh  x11  git 

5
如何基于for循环的结果使该脚本错误退出?
我有一个bash脚本,使用set -o errexit该脚本可以在出错时退出整个脚本。 该脚本运行的curl命令有时无法检索想要的文件-但是,发生这种情况时,脚本不会错误退出。 我添加了一个for循环 暂停几秒钟,然后重试curl命令 false在for循环的底部使用来定义默认的非零退出状态-如果curl命令成功-循环中断并且最后一个命令的退出状态应为零。 #! /bin/bash set -o errexit # ... for (( i=1; i<5; i++ )) do echo "attempt number: "$i curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim if [ -f ~/.vim/autoload/pathogen.vim ] then echo "file has been retrieved by curl, so breaking now..." break; fi echo "curl'ed file …

2
如何在外壳中以不同的方式显示控制字符(^ C,^ D,^ [,…)
当您在外壳中键入控制字符时,它们将使用所谓的“插入符号”显示。例如,转义^[符用插入符号表示。 我喜欢自定义bash shell,使其看起来很酷。我已经例如改变了我PS1,并PS2成为着色。我现在希望控制字符也具有独特的外观,以使其与常规字符更具区别。 $ # Here I type CTRL-C to abort the command. $ blahblah^C ^^ I want these two characters to be displayed differently 有没有办法让我的shell突出显示控制字符? 是否可以使其以粗体显示或以不同于常规文本的颜色显示? 我在这里使用bash shell,但是我没有用这个标签标记问题,bash因为也许有一种适用于许多不同shell的解决方案。 请注意,我不知道在什么级别突出显示控制字符。我首先以为它在外壳本身中。现在,我听说是readline控制bash之类的 shell中控制字符的方式。因此,该问题现在带有标记,readline而我仍在寻找答案。


7
如何在脚本中使用空格作为变量格式化日期输出?
我想使date命令具有很好的格式,如下所示: $ date +"%Y-%m-%d %H:%M:%S" 2015-09-17 16:51:58 但我想将其保存在变量中,因此可以从如下脚本中调用: echo "$(nice_date) [WARNING] etc etc" 但是它不起作用 $ nice_date="date +%Y-%m-%d %H:%M:%S" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S’ Try 'date --help' for more information. $ nice_date="date +\"%Y-%m-%d %H:%M:%S\"" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S"’ Try 'date --help' for more information. $ nice_date='date …
13 bash  date 

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.