哪些Linux / Unix命令已过时并且有强大的替代方法? [关闭]

问题描述 投票:154回答:38

今天我发现您可以使less表现得像tail -f

较少文件名,然后按Shift + F启动跟随模式。

就像tail,但是您具有less的所有附加功能-例如滚动,搜索和突出显示搜索结果。

多年来我一直在使用tail监视日志文件。

这只是让我思考:还有其他过时的命令并且有强大的替代方法吗?

请分享幸福-每个帖子一个命令。

linux shell command-line deprecated shortcut
38个回答
57
投票

我想指出我的观点,这是程序员使用grep的替代方法。

http://betterthangrep.com/

我很惊讶(包括我在内的人)使用了find和xargs拼凑在一起的别名和shell脚本已有很长时间了。


13
投票

[netcat应该被netcat通用替换。


11
投票

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

例如,递归grep比socat好得多。


11
投票

在Linux上,find ... -print0 | xargs -0 ...(来自$()程序包)的行为比ip / iproute2更可预测,并且易于解析输出。


11
投票

ifconfig替代了routepax,并使用了一系列明智的命令行选项:pax从归档文件读取,tar写入归档文件,cpio执行树到树的副本。它还提供-r选项,以允许您在从/向归档读取文件或向其写入文件之前对文件名执行替换。 :-)

编辑:马克·贝克(Mark Ba​​ker)提出了一个有趣的观点,我应该予以澄清。默认情况下,-w制作-rw存档(是-s的扩展,并且可以由大多数pax程序解压缩)。但是,使用pax选项,可以创建ustar存档和tar存档(这两个是由标准保证的)。一些实现(例如BSD之一)支持创建更多类型,例如旧式(-x之前的版本)cpio存档。


10
投票

有人可能会说ustar已经完全淘汰了ustar

但是,由于自从perl存在之前就一直使用awk,所以我仍然使用它;对于更严重的脚本,我使用python而不是perl。


10
投票

atool

:轻松处理档案文件

9
投票

[awkperl的更好选择。


8
投票

'rename'是一个很好的替代方法,它可以代替一个人写的将名称更改为一堆文件的文件。


8
投票

本身并不是真正的过时命令的替代品,但是屏幕是打开多个终端窗口和/或使用bg等的不错选择。


6
投票

如果您使用的是GNU系统,请不要使用http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/;而是使用dig


35
投票

尝试在类固醇上使用htop-top。>>

尝试在类固醇上使用multitail-tail。>>

最明显的是:

lessmore

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

因为您只希望每个帖子一个命令,所以我想我必须选择sponge

,它允许您将管道的输出保存到用作输入的文件之一。 IOW,它使您可以就地修改文件,而不必担心临时文件。

例如,如果您这样做:

grep 'something' somefile.txt > somefile.txt

somefile.txt最终将为空。因此,您可以使用海绵:

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

Rsync可以有效且有效地替换/补充大多数文件传输方法(scp,rcp,管道tar命令等,甚至在许多情况下甚至是cp)。

由于其多功能性,它有很多选择。但我真的建议至少学习rsync的基础知识。

mtr

traceroute
的替代品(它是ping和traceroute的组合)。

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

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

上下文相关自动完成。

嗯,我知道,它不是command

,在很多Unices中都不太可能找到,但是在Linux上却不太可能。在我的Ubuntu Hardy中,bash_completion的配置已经非常好,这意味着不仅用于文件和目录!例如,如果我键入
svn pr<TAB><TAB>

我得到:

praise    propdel   propedit  propget   proplist  propset

甚至

svn propget svn:k<TAB>

我自动获得

svn propget svn:keywords

[它也适用于antmake自动读取默认文件或在命令行上指定的文件!这是一个实时保护程序!

[rsh /rexec/rcp/ etc。已被ssh /scp/ etc。]取代

问题和标签是矛盾的。 Linux不是Unix(愚蠢的开放组织),并且大多数“真正的” Unix机器都没有接近Linux的软件。例如,在相当普通的AIX 5.3pl6上安装:

少$ksh:较少:未找到。

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

在工具箱中拥有较新的工具真是太好了,但是如果您不了解“老派”方式,那么如果您曾经使用过AIX / Solaris / HP,那么您将遭受巨大的痛苦-UX / etc系统,没有更新的工具(甚至可能没有bash)。

注意,在我们的开发VM上,我确实安装了尽可能多的现代工具,这仅仅是因为尽管我可以在更简单的环境中工作,但这并不意味着我喜欢它。而且,我在Linux(CentOS 5)系统上做了尽可能多的工作,这仅仅是因为它上的工具仍比我为AIX可以轻易打包的任何工具更新(Solaris更好; HP-UX则更差)。] >

[netcat应该被netcat通用替换。

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

例如,递归grep比socat好得多。

而且,socat处理了长期存在的可怕的引用问题,该问题使xargs无法正确处理时髦的,充满空格的文件名。

[GNU tar使用'j'和'z'标志来直接处理bzip和gzip存档。

bash的find | xargs grep替代反引号使偶尔嵌套的反引号表达式更易于读写。

在Linux上,find ... -print0 | xargs -0 ...(来自$()程序包)的行为比ip / iproute2更可预测,并且易于解析输出。

ifconfig替代了routepax,并使用了一系列明智的命令行选项:pax从归档文件读取,tar写入归档文件,cpio执行树到树的副本。它还提供-r选项,以允许您在从/向归档读取文件或向其写入文件之前对文件名执行替换。 :-)

编辑:马克·贝克(Mark Ba​​ker)提出了一个有趣的观点,我应该予以澄清。默认情况下,-w制作-rw存档(是-s的扩展,并且可以由大多数pax程序解压缩)。但是,使用pax选项,可以创建ustar存档和tar存档(这两个是由标准保证的)。一些实现(例如BSD之一)支持创建更多类型,例如旧式(-x之前的版本)cpio存档。

有人可能会说ustar已经完全淘汰了ustar

但是,由于自从perl存在之前就一直使用awk,所以我仍然使用它;对于更严重的脚本,我使用python而不是perl。

atool

:轻松处理档案文件

一些例子:

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

    示例来自:tar

[awkperl的更好选择。

'rename'是一个很好的替代方法,它可以代替一个人写的将名称更改为一堆文件的文件。

本身并不是真正的过时命令的替代品,但是屏幕是打开多个终端窗口和/或使用bg等的不错选择。

如果您使用的是GNU系统,请不要使用http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/;而是使用dig

dig确实有用,而不是弹出和推送或创建临时别名。

添加要使用tag

调用的目录
nslookup

转到此目录

sed '1!G;h;$!d'

无论安装了tac,您都可以用bm (link)代替bm -a /path/to/a/dir tag (与cdbm tag 相似-甚至可以在NIS设置中执行Right Thing(TM)。

为什么glibc会为您生成解压缩器时又打扰getent passwd foo

甚至更进一步...为什么当GNU grep foo /etc/passwd将自动检测压缩时又打扰aliases ethers group hosts netgroup networks protocols rpc services shadowgzip -dc foo.tar.gz | tar xf -tar xzf foo.tar.gz神奇地起作用。

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

在使用less代替尾巴替换之前,您可以搜索“ / search_string”,然后调用“跟随”命令(shift-F)。现在,将滚动显示任何“ search_strings”。当您扫描一堆程序输出或日志并寻找特定的字符串或模式时,此功能非常有用。

不要忘记,您也可以使用正则表达式!

cfdisk是命令行驱动器分区实用程序fdisk的易于使用的升级。

不推荐使用[[

ifconfig

iwconfig
,而推荐使用ip
,它是一种非常强大的工具,可以显示/操纵路由,设备,策略路由和隧道。
tar xzf foo.tar.gz可能仍只能与琐碎的参数一起使用,否则,其行为可能无法预测。出于所有其他目的(控制字符,换行抑制,格式化),它已经被功能强大且一致的tar xjf foo.tar.bz2命令所取代。

我真的很喜欢使用locate代替find-使用“ locate filepattern”比“ find / -name filepattern -print”更容易使用,并且效率更高,因为它使用索引数据库。

您必须按计划运行updatedb命令以更新定位数据库;请查看发行版的手册页以获取详细信息。

tar胜过tar xf foo.tar.(gz|bz2)echo易于配置,甚至不有趣。

[printftmux而不是screen,具有更强大的tmux语法。 (由于Perl正则表达式使用的是Perl Pie而不是perl -pi -e 's/foo/bar/',因此它并不是直接的替代品。)

[我发现sed 's/foo/bar/'可以很好地替代perlre

5
投票

dig确实有用,而不是弹出和推送或创建临时别名。

添加要使用tag


5
投票

无论安装了tac,您都可以用bm (link)代替bm -a /path/to/a/dir tag (与cdbm tag 相似-甚至可以在NIS设置中执行Right Thing(TM)。


5
投票

为什么glibc会为您生成解压缩器时又打扰getent passwd foo

甚至更进一步...为什么当GNU grep foo /etc/passwd将自动检测压缩时又打扰aliases ethers group hosts netgroup networks protocols rpc services shadowgzip -dc foo.tar.gz | tar xf -tar xzf foo.tar.gz神奇地起作用。


5
投票

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

在使用less代替尾巴替换之前,您可以搜索“ / search_string”,然后调用“跟随”命令(shift-F)。现在,将滚动显示任何“ search_strings”。当您扫描一堆程序输出或日志并寻找特定的字符串或模式时,此功能非常有用。


5
投票

cfdisk是命令行驱动器分区实用程序fdisk的易于使用的升级。


5
投票
不推荐使用[[

ifconfig

iwconfig

5
投票
tar xzf foo.tar.gz可能仍只能与琐碎的参数一起使用,否则,其行为可能无法预测。出于所有其他目的(控制字符,换行抑制,格式化),它已经被功能强大且一致的tar xjf foo.tar.bz2命令所取代。

4
投票
我真的很喜欢使用locate代替find-使用“ locate filepattern”比“ find / -name filepattern -print”更容易使用,并且效率更高,因为它使用索引数据库。

您必须按计划运行updatedb命令以更新定位数据库;请查看发行版的手册页以获取详细信息。


4
投票
tar胜过tar xf foo.tar.(gz|bz2)echo易于配置,甚至不有趣。

4
投票
[printftmux而不是screen,具有更强大的tmux语法。 (由于Perl正则表达式使用的是Perl Pie而不是perl -pi -e 's/foo/bar/',因此它并不是直接的替代品。)

31
投票

最明显的是:


3
投票
[我发现sed 's/foo/bar/'可以很好地替代perlre

29
投票

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


26
投票

Rsync可以有效且有效地替换/补充大多数文件传输方法(scp,rcp,管道tar命令等,甚至在许多情况下甚至是cp)。


21
投票

mtr


16
投票

上下文相关自动完成。


15
投票

[rsh /rexec/rcp/ etc。已被ssh /scp/ etc。]取代


15
投票

问题和标签是矛盾的。 Linux不是Unix(愚蠢的开放组织),并且大多数“真正的” Unix机器都没有接近Linux的软件。例如,在相当普通的AIX 5.3pl6上安装:

© www.soinside.com 2019 - 2024. All rights reserved.