Unix & Linux

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

10
文本处理-每两行用逗号连接
我的文件中有1000多行。该文件开始如下(添加行号): Station Name Station Code A N DEV NAGAR ACND ABHAIPUR AHA ABOHAR ABS ABU ROAD ABR 我需要将其转换为文件,并通过每两行连接以逗号分隔的条目。最终数据应如下所示 Station Name,Station Code A N DEV NAGAR,ACND ABHAIPUR,AHA ABOHAR,ABS ABU ROAD,ABR ... 我正在尝试的是-尝试编写Shell脚本,然后echo在两者之间加逗号。但我想更简单有效的一行将在这里做的工作可能在sed/ awk。 有任何想法吗?

6
为什么在OSX上无法从/ dev / urandom读取tr?
一位同事建议通过以下命令创建随机密钥: tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 32 | xargs 它给了我错误: tr:非法字节序列 我担心/dev/urandom我的系统上没有。我尝试使用Google搜索来弄清楚如何安装此文件,但是我还是空着。我尝试过locate urandom,也空着出来。(实际上,它找到了手册页,但这无济于事) 如何urandom在Mac OSX系统上使用?(狮子)
35 osx  random  tr 

5
如何为shell脚本引入超时?
我想运行一个包含循环的shell脚本,它可以永远运行,而我不想发生这种情况。因此,我需要为整个脚本引入超时。 如何在SuSE下为整个shell脚本引入超时?


3
SSH输出不是行缓冲的吗?
我正在像这样的远程计算机上运行脚本: ssh $host "pip install -r /path/to/requirements.txt" 但是输出不是行缓冲的。当连接终止时,所有的行(〜10)都一次打印,而不是一次返回一行。 这是怎么回事?有什么方法可以强制它们进行行缓冲吗? (同样,显而易见的是:当我ssh进入$host并“手动”运行命令时,输出如预期那样是行缓冲的)
35 ssh 

4
通过一个tar调用提取多个.tar.gz文件
我想知道是否有可能(当然还有如何)告诉tar您一次运行即可提取多个文件。 我是一名经验丰富的Unix用户,已有多年的经验,当然我知道您可以使用for或find类似方法对tar要提取的每个档案调用一次,但是我无法提供有效的命令行来导致tar一次提取两个.tar.gz文件。(而且,不存在任何问题for,我只是问是否可以不这样做。) 我是出于好奇而问这个问题,也许 有一个奇怪的tar地方支持 有人知道我尝试使用建议给我的-M参数tartar -zxv -f a.tgz -f b.tgz 我们都是盲人,而且完全容易实现-但是我在网络上找不到没有利用for或find或xargs类似功能的任何提示。 请不要回复tar -zxvf *.tar.gz(因为这确实不工作)与回复以“不工作”,如果你是绝对的把握它(也许有一个很好的解释为什么,太)。 编辑:有人指出了这个关于Stack Overflow的问题的答案,它很详细地说明了不破坏当前tar语法是不可能的,但是我认为那不是真的。使用tar -zxv -f a.tgz -f b.tgz或tar -zxv --all-args-are-archives *.tar.gz不会破坏现有语法,恕我直言。
35 tar 

1
X,Xorg和D-Bus:有什么区别?
在学习在GUI编程中做某些事情的过程中(例如,为应用程序在屏幕上保留空间),我必须了解有关Window Manager(通常是Linux上的X11)的更多信息(我不确定是否还有发行版的,虽然我听说过Wayland,但它还没有实现。 我对编程很陌生,并且没有耐心。所以我只是潜入其中。现在,我正在阅读ICCCM,希望能学到更多。但是,本文档针对的是比我更了解(方式)的公众。因此,我遇到了一些信息,我希望得到一些澄清。 ICCCM 第2节引用: 请注意,在所有者和请求者之间传输的所有数据通常必须在X版本11环境中通过服务器传输。一个客户端不能假定另一个客户端可以打开相同的文件,甚至不能直接通信。另一个客户端可能正在通过完全不同的联网机制与服务器通信(例如,一个客户端可能是DECnet,另一个是TCP / IP)。因此,只有在两个客户明确同意的情况下,才允许传递对数据的间接引用(例如文件名,主机名和端口号等)。 据我了解,X Window Manager是建立在X Server之上的(感谢维基百科)。在上面的引用中:它表示客户端可以使用DECnet或TCP / IP与服务器进行通信。到目前为止,我还以为“服务器”只是一个比喻,现在我怀疑:X服务器是否像“ Web服务器”中那样是服务器?我应该如何理解其功能/定义? 然后,通常会引用X11,Xorg,X Server和/或X Window Manager。令人困惑:X11是否包含Xorg和X Window Manager?如果是这样,那么此X11捆绑包中还有其他东西吗? X还需要鼠标或键盘或任何其他类型的输入:这也是X Server功能的一部分吗?X Window Manager是否严格只照顾显示? 最后,上面的引用还提到了客户端之间是否进行通信:这让我想起了D-Bus,我已经将其用于学习目的。使用D-Bus,您还可以触发窗口事件。这让我对程序之间如何通信感到困惑:* 使用X Server或D-Bus进行交互的程序之间有什么区别?* 可惜的是,这些信息仍然以某种方式仍然晦涩难懂,因此很难学习,但希望您能对此有所启发:)谢谢。

8
将整个分区或硬盘驱动器克隆到稀疏文件
我喜欢将整个分区或整个硬盘驱动器克隆到更大的外部磁盘上,但喜欢创建一个稀疏文件。我经常dd用于克隆,但它不支持稀疏文件。作为解决方法,我使用了类似的方法: cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw 但是,这对于我的口味来说有点棘手,并且如果中止,也不允许我继续该过程。有趣的是,有一个用于此(ntfsclone)的NTFS工具,但是对于Linux(EXT2-4)的本机文件系统不存在这样的工具。 有没有更好的工具,例如dd,支持稀疏的变体?我没有寻找用于磁盘备份的某些专有软件,而只是想制作一个稀疏的克隆副本,如果需要的话,我可以将其安装为循环设备。


3
grep是否使用缓存来加快搜索速度?
我注意到,grep在同一查询(以及不同的查询,但在同一文件上)的后续运行比第一次运行快得多(在搜索大​​文件时,效果很明显)。 这表明grep对用于搜索的结构进行了某种形式的缓存,但是我在Internet上找不到参考。 哪种机制可以grep在后续搜索中更快地返回结果?
35 linux  grep  cache 

4
在tmux中是否有GNU Screen的“ log”命令的等效项?
在给定环境中进行更改时,我大量使用screen的“ log”命令将会话的输出记录到文件中。我搜索了tmux的手册页,但找不到对应的页面。是否有人知道tmux中的类似功能,还是我必须编写自己的包装脚本来做到这一点? 编辑:我知道'脚本'和其他实用程序,允许我记录会话。屏幕功能如此有用的原因是能够定义一个日志文件变量,该变量使用字符串转义符来唯一标识每个会话。 例如,我有一个shell函数,给定一个主机名,它将在新的屏幕窗口中SSH到该主机,并将窗口标题设置为该主机名。当我启动该会话的日志时,它以窗口标题为前缀。 如果tmux中不存在此功能,则必须创建一组新的Shell函数来设置要记录的会话的“脚本”。这并不是很困难,但是鉴于屏幕恰好满足了我的需要,因此不值得付出努力。
35 gnu-screen  logs  tmux 

7
强制目录始终位于缓存中
我一直在测试各种方法,以缩短编译整个c ++项目所需的时间。目前大约需要5分钟。我尝试了distcc,ccache等。最近,我发现,如果我将整个项目复制到RAM驱动器上,然后从那里进行编译,它将编译时间减少到原来的30%,即1.5分钟。 显然,从RAM驱动器工作是不切实际的。那么,有谁知道我可以强制操作系统始终保持某个目录缓存的方法吗?我仍然希望目录像往常一样被同步回磁盘,但是我也总是希望复制内存中的数据。这可能吗? 编辑: 作为一种可能的解决方案,我们只是想启动一个守护程序,该守护程序rsync每10秒左右运行一次,以将磁盘驱动器与RAM驱动器同步。然后,我们从RAM驱动器运行编译。该rsync是极快的,但这样做真的有用吗?当然,操作系统可以做得更好。

8
从底部向上看日志
是否有Linux命令或某种方式可以从下至上而不是从上至下查看日志。我知道tail -n <number of lines>,但是实际上我可以滚动并从下往上滚动吗?

5
测量外壳中的管道吞吐量
有一个shell命令,它允许您测量数据通过数据的速度,因此您可以测量管道中命令输出的速度。所以代替: $ somecommand | anothercommand 您可以执行以下操作: $ somecommand | ??? | anothercommand 我认为吞吐量统计信息(字节/秒)会打印到stderr。但是我无法终生记得那个命令。


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.