什么Linux / Unix命令是过时的,有强大的select?

今天我发现你可以减less 尾巴-f的行为。

less文件名 ,然后按Shift-F开始跟随模式。

就像尾巴,但你有所有的附加functionless – 像滚动,search,突出search点击。

我一直在看尾随多年的日志文件。

这只是让我思考:还有其他命令是过时的,有强大的select?

请分享幸福 – 每个职位一个命令。

我喜欢指出我的缺点,一个替代grep的程序员。

http://betterthangrep.com/

我感到惊讶的是,人们(包括我)已经用拼凑在一起的别名和shell脚本与find&xargs一起生活了这么久。

尝试htop – 在类固醇的top

尝试多巴胺 – 类固醇tail

最明显的是:

less即是多。

不是完全取代任何东西,但moreutils是一个小的Unixy工具的集合,这基本上是为了填补* nix工具箱中的漏洞。

因为,你只需要一个命令每个职位,我想我将不得不select海绵 ,它允许您保存一个pipe道的输出到其中一个文件作为input。 IOW,它允许你就地修改文件,而不必担心临时文件。

例如,如果你这样做:

 grep 'something' somefile.txt > somefile.txt 

somefile.txt将结束为空。 所以,你可以使用海绵:

 grep 'something' somefile.txt | sponge somefile.txt 

Rsync以高效而强大的方式replace/补充了大多数文件传输方法(scp,rcp,pipe道tar命令等,甚至在很多情况下甚至是cp)。

由于其多function性,它有很多select。 但我真的推荐学习至lessrsync的基础知识。

mtr是一个traceroutereplace(它是ping和traceroute的组合)。

与traceroute不同的是,它几乎立即find路由(因为它在移到下一跳之前不等待响应)。

命令行版本默认安装在Debian(软件包mtr-tiny)中。

上下文敏感的自动完成。

那么,我知道,这不是一个命令 ,它不可能在许多Unices,但Linux。 在我的Ubuntu Hardy中, bash_completion已经configuration得非常好,这不仅意味着文件和direcotires! 例如,如果我input

 svn pr<TAB><TAB> 

我得到:

 praise propdel propedit propget proplist propset 

乃至

 svn propget svn:k<TAB> 

我得到automaticaly

 svn propget svn:keywords 

它也适用于antmake自动读取默认文件或命令行上指定的文件! 这是一个真正的节省时间!

rsh / rexec / rcp /等。 已被ssh / scp /等取代。

问题和标签是矛盾的。 Linux不是Unix(愚蠢的Open Group),大多数“真正的”Unix机器都没有与Linux所做的软件相近的地方。 例如,在一个相当简单的AIX 5.3pl6上安装:

 $less
 ksh:less:找不到。

是的,我pipe理这些系统,但我们已经同意在大多数情况下不加载非核心组件,因为我们需要它们来匹配现场部署的系统。

在工具箱中使用更新的工具是非常好的,但是如果你不了解“老派”方式,那么如果你曾经在AIX / Solaris / HP-UX上,那么你将会处于一个受到伤害的世界/ etc系统没有新的工具(甚至可能没有bash)。

请注意,在我们的开发虚拟机上,我已经安装了尽可能多的现代工具,只是因为我可以在更简单的环境中工作,但这并不意味着我喜欢它。 我在Linux(CentOS 5)系统上做了尽可能多的工作,仅仅是因为它上面的工具比我能find的AIX上的任何东西都更新(Solaris有点更好; HP-UX更糟糕)。

netcat应该被socat普遍取代。

值得看看一些常用命令的GNU版本,因为它们已经悄悄地获得了超越标准(XPG4等)版本的有用的改进。

例如,recursiongrep比find | xargs grep更好 find | xargs grep

另外, find ... -print0 | xargs -0 ... find ... -print0 | xargs -0 ...处理长期存在的可怕的引用问题,使xargs无法正确处理时髦的空间填充文件名。

GNU tar使用'j'和'z'标志直接处理压缩和压缩的压缩文件。

而bash的$()替代反引号使偶尔嵌套的反引号expression式更易于读写。

在Linux上, ip (来自iproute2包)的行为更可预测,并提供比ifconfig / route更容易parsing的输出。

paxtarcpio的替代品,具有一套完整的命令行选项: -r从档案中读取, -w写入档案, -rw执行树到树的拷贝。 它还提供了一个-s选项,允许您在从归档文件读取/写入文件之前对文件名执行replace。 🙂

编辑:马克·贝克提出了一个有趣的观点(在评论中),我应该澄清。 pax使pax档案(这是ustar的扩展,并且可以被大多数tar程序解开)默认。 但是,使用-x选项,可以创buildcpio存档和ustar存档(这两个是由标准保证的)。 一些实现,比如BSD,支持创build更多的types,比如旧式的tar ustar

有人可能会说, awk已经完全被perl所淘汰。

但是,自从perl存在之前我使用awk,我仍然使用它; 至于更严重的脚本,我使用python而不是perl。

“重新命名”是一个很好的替代scheme,一个写入的文件将名称更改为一堆文件。

atool :处理档案没有头痛

一些例子:

  • aunpack archive.tgz解压档案中的所有文件。 如果归档的作者是如此不考虑将多个文件放入归档的根目录,那么该命令会自动创build一个目录并将其移动到其中。
  • aunpack -e archive1.tgz archive2.zip解压每个压缩文件。
  • apack archive.tar.bz2 * .txt创build一个新的压缩存档,其中包含当前工作目录中的所有文本文件。
  • als archive.rar显示存档中包含的文件的名称。

示例来自: http : //debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/

dignslookup一个更好的select。

不是真正替代过时的命令本身,但是屏幕是打开多个terminal窗口和/或使用bg等的很好的select。

如果你在GNU系统上,不要使用sed '1!G;h;$!d' ; 相反,使用tac

bm(链接) ,而不是popup和pushd或创build临时别名,真的很有用。

添加要用标记调用的目录

 bm -a /path/to/a/dir tag 

去这个目录

 cdbm tag 

无论在哪里安装glibc ,你都可以使用getent passwd foo而不是grep foo /etc/passwd (类似于aliases ethers group hosts netgroup networks protocols rpc services shadow ) – 它甚至在NIS设置中使用Right Thing(TM)。

为什么打扰gzip -dc foo.tar.gz | tar xf - gzip -dc foo.tar.gz | tar xf -tar xzf foo.tar.gz会为你产生解压缩程序?

更进一步…为什么打扰tar xzf foo.tar.gztar xjf foo.tar.bz2当GNU tar会自动检测压缩? tar xf foo.tar.(gz|bz2)只是神奇的作品。

我不确定这应该是答案还是仅仅是对问题的修改。

在less用作尾部replace之前,可以search“/ search_string”,然后调用Follow命令(shift-F)。 现在任何滚动的“search_strings”都会被突出显示。 这对于扫描一堆程序输出或日志时正在寻找特定的string或模式很有用。

不要忘记,你也可以使用正则expression式!

cfdisk是一个易于使用的命令行驱动器分区工具fdisk升级。

我真的很想find一个替代find的地方 – 比find / -name filepattern -print更容易使用“locate filepattern”,而且更高效,因为它使用了一个索引数据库。

您必须按计划运行updatedb命令才能更新定位数据库; 检查您的发行版的手册页的细节。

ifconfigiwconfig不赞成使用ip ,这是一个非常强大的工具来显示/操作路由,设备,策略路由和隧道。

echo可能仍然只能用于琐碎的参数,否则,其行为可能是不可预知的。 对于所有其他目的(控制字符,新行抑制,格式化),它已经被function强大且一致的printf命令所淘汰。

我发现wcalc是BC的一个很好的替代品

screen tmuxtmuxconfiguration起来非常简单,甚至不好笑。

Perl Pie : perl -pi -e 's/foo/bar/'而不是sed 's/foo/bar/' ,具有更强大的perlre语法。 (这不是一个简单的replace,因为Perl正则expression式使用,而不是\?