Unix & Linux

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

3
通用提取器
随着存档/压缩文件格式数量的增加,是否有一个免费的/开源命令行工具可以将它们全部统治?也许带有一致/统一标志集的东西?(请注意我对tar的友好隐式引用) 我曾经遇到过一组别名,这些别名旨在大大简化通过与tarutils和其他utils的绑定来压缩/解压缩文件的任务,但是我再也找不到了。 更新: 我该如何配置一些类似的功能atool,例如不unzip提取zip文件(显然无法处理大于4GB的文件)并改为使用gunzip? $ aunpack large_file.zip error: Zip file too big (greater than 4294959102 bytes) Archive: large_file.zip warning [large_file.zip]: 1491344848 extra bytes at beginning or within zipfile (attempting to process anyway) error [large_file.zip]: start of central directory not found; zipfile corrupt. (please check that you have transferred or created …

6
重新安装所有Debian软件包
我错误地杀死了一个在后台运行的dpkg进程,我想重新安装所有软件包以确保一切正常。 首先,我尝试获取所有软件包的列表并重新安装它们 dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log apt-get install --reinstall $(cat list.log) 但是有些消息像: E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. 我尝试了apt-get -f install,但没有成功。 作为最后的选择,我重新安装了所有未通过校验和的程序: dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s …

6
尊重/ etc / hosts的主机查找
实用程序喜欢host和dig让您看到与主机名相对应的IP地址。 也有getent可用于查询/etc/hosts或其他NSS数据库的实用程序。 我正在寻找一种方便的标准实用程序(例如Debian中提供的实用程序),该实用程序可以解析主机名,而不管其定义在何处。 它应该或多或少等于 ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
19 dns  hosts 

3
rsync递归地忽略某些文件,其余文件除外,忽略.svn /目录
我rsync用来将某些文件从共享复制到另一个。 递归地,我需要: 删除目的地中从原点删除的文件 仅同步.php和.js文件 排除所有其他文件类型 不要删除.svn/目标目录 如果我使用这个: rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origin /destination 然后rsync不是递归的,因为exclude="*"排除所有文件,但也排除文件夹。 如果添加,--include="*/"则.svn/目录将被删除(也将包含在内)。 我该如何解决这种令人难以置信的难题? uname -a: Linux tux 3.9.2-1-ARCH#1 SMP PREEMPT星期六2013年5月11日20:31:08 CEST x86_64 GNU / Linux rsync 版: rsync 3.0.9-6


4
当let或expr的值为0时,bash -e退出
我有一个设置-e的bash脚本,因此该脚本将在任何退出状态!= 0时退出。 我试图做一些分配给变量的基本Shell算术运算,有时表达式等于0,这会使let或expr命令的退出状态为“ 1”。 这是一个例子: #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y WILL NEVER PRINT $Y" X=$(expr 2 - 2) echo "X WILL NEVER PRINT $X" …

8
避免在没有Bash命令的情况下忙于等待bash
我知道我可以在条件变为现实的情况下通过执行以下操作: while true; do test_condition && break sleep 1 done 但是它在每次迭代(休眠)时都会创建1个子流程。我可以这样做来避免它们: while true; do test_condition && break done 但是它占用大量CPU(繁忙等待)。为了避免子流程和繁忙的等待,我想出了以下解决方案,但是我发现它很丑陋: my_tmp_dir=$(mktemp -d --tmpdir=/tmp) # Create a unique tmp dir for the fifo. mkfifo $my_tmp_dir/fifo # Create an empty fifo for sleep by read. exec 3<> $my_tmp_dir/fifo # Open the fifo for …

6
为什么不建议在标准命令上使用别名?
例如,我在~/.bashrc文件(或等效文件)中看到的通用别名是 alias rm='rm -i' 但是,我看到有人反对这样做,因为 别名可能在另一个系统上不存在,并且由于您对变得粗心rm,您无意中删除了一些重要内容。[1] 通过使用此别名,您实际上会训练自己在每个命令之后键入命令y或键入命令,这违背了整个目的。yesrm 还有其他理由对此建议吗?某些程序可能只是简单地调用rm而不是\rm,而对其进行别名可能会给他们带来麻烦? 我rm仅以一个示例为例,但是我也看到过其他类似别名cp或mv覆盖别名的命令。就个人而言,我正在慢慢地训练自己使用这样的别名代替rm -i: alias trash=`mv -v -t $HOME/.Trash`

2
您如何为迄今为止的输入指定格式?
给定日期和时间格式无法识别的时间date,我如何date识别日期和时间? 例如: $ date -d "09SEP2012:23:58:46" date: invalid date `09SEP2012:23:58:46' $ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss" Sun Sep 9 23:58:46 MDT 2012 是否--magic-option存在?如果不是,是否有一种更优雅的方法来解决此问题,而不是使用sed将输入转换为格式正确的日期字符串的方法?
19 date 

7
如何使用patch和diff合并两个文件并自动解决冲突
我已经阅读了有关diff和patch的内容,但我不知道如何应用所需的内容。我想这很简单,因此为了显示我的问题,请使用以下两个文件: xml文件 <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#AAAAAA</color> <color name="not_in_b_too">#AAAAAA</color> </resources> b.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_a">#AAAAAA</color> </resources> 我想要一个输出,看起来像这样(顺序无关紧要): <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_b_too">#AAAAAA</color> <color name="not_in_a">#AAAAAA</color> </resources> 合并应包含遵循以下简单规则的所有行: 仅在其中一个文件中的任何行 如果一行具有相同的名称标签但值不同,则从第二行取值 我想在bash脚本中应用此任务,因此如果另一个程序更合适,那么它不一定需要完成diff和patch的操作。

5
如何在保留标题的同时滚动大数据文件
假设我有一些大的数据文件,这些文件在垂直和水平方向上都溢出了屏幕。当标题行停留在屏幕上时,如何浏览此文件? 目前,我正在使用less -S,以便可以很好地水平和垂直滚动文件。但是,向下滚动时,标题行明显消失。有没有办法减少使用? 一种替代方法是vim在的分屏模式下使用:set nowrap。但是,现在,如果我水平滚动,则顶部窗口将不会以相同的方式:windo set scrollbind滚动(据我所知,仅适用于垂直滚动)。
19 vim  less  scrolling  pager 

1
为什么“实际”时间要比“用户”和“ sys”时间的总和高得多?
我执行了time许多命令(即nslookup),SSH然后收集了暗示服务完成(即DNS)所需的总时间。因此,我收集user和sys时间,因为real时间是我的进程阻塞的时间,而我不需要...我想。 但是我的一些测试结果如下: real 3m22.033s user 0m0.009s sys 0m0.014s 我在有限资源的Linux机器上执行这些测试,但是real时间仍然很长。这是否仅表示该框正忙于运行不同的进程?将user和sys时间相加以了解服务花费了多少,仍然正确吗?

2
如何使此守护程序/ init以非root用户身份运行?
我有一个启动脚本的启动脚本。问题是它以root身份运行。我希望它以名为“ deploy”的用户身份运行。Ubuntu 12.04 #! /bin/sh # File: /etc/init.d/unicorn ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the unicorn web server # Description: starts unicorn ### …

2
如何在emacs中获取当前缓冲区的文件名?
我想念的有关Vim的主要功能之一是,它总是将当前文件的文件名保存在%缓冲区中(更多信息)。这样可以轻松启动命令,例如: ;; compile current file :! gcc % ;; source current file (useful when I'm editing .vimrc :source % ;; get the size of current file :! du -sh % ;; etc, etc... 我想在emacs(版本24,如果有任何区别)下具有类似的功能,即具有一种简单的方法来插入在当前缓冲区中打开的文件的名称。 我想做的事的例子 在这里,我描述一些基本用例,以便在我觉得需要这种捷径时可以更好地进行解释 编译:当我输入M-x compileemacs时,要求我输入一个编译命令。我想gcc (current-buffer)轻松进入。 加载文件:编辑.emacs文件时,我想立即加载它以测试更改。我的做法是M-x load-file,然后我总是拼出名字. e m a c s。我想要一个捷径。 启动外部进程:我du -sh仅作为示例说明,我希望在使用以下命令执行Shell命令时也可以使用该快捷方式M-! 我到目前为止发现的 这个问题在这里关于U&L。给出的答案基本上显示了在哪里可以找到缓冲区的文件名,以便可以将其添加到kill-ring。这并不是我要找的东西,我不想在使用文件名之前先手动杀死它。(这两个答案中描述的解决方案在我的emacs中似乎都无法正常工作,并且需要额外的击键操作,这使它们有些痛苦)。 …
19 emacs  function 

3
从源安装。如何在不破坏软件包管理器的情况下解决依赖关系
编译和安装软件是我无法克服的痛苦和问题。我只想与更多知识渊博的人深入了解此过程,以清除自己的想法,进入下一个层次。 我需要的许多科学软件都没有作为软件包分发。我知道“ ./configure”会设置编译变量,并检查依赖项“ make”是否会在编译“ sudo make install”时将所有库和bin放在它们的位置。但是,它永远都行不通。我很少离开a)“ ./configure”阶段而不进入依赖地狱,并且如果这样做,b)“ sudo make install”可能会破坏我的盒子。 a)依赖地狱非常令人沮丧。有时我有图书馆,但它不喜欢它。或库不想安装。或“配置”找不到它。或者我的发行版将其放置在不应放置的位置。或者我的系统中有两个版本。问题是,我不明白如何诊断并解决这些问题。对于不需要成为程序员的人,有哪些好的学习参考? b)我的理解是“ make install”将替换一些库并更改设置,而我的软件包管理器没有意识到这一点。因此,某些程序将无法运行,其他程序将无法更新。因此,如果我不使用“ make install”,而只是将编译后的二进制文件保留在用户目录中,并在路径中添加了符号链接,我会很清楚吗? 我的机器是单用户的,具有大量的免费高清,所以我真的不关心拥有多个(几十个)库副本是否可以解决我的问题。空间便宜。

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.