哪些Linux/Unix命令已过时并具有强大的替代功能?

chi*_*uit 152 linux shell command-line shortcut deprecated

今天我发现你可以减少尾巴一样的行为.

文件名较少,然后按Shift-F开始跟随模式.

就像尾巴一样,但你拥有更少的附加功能 - 比如滚动,搜索和搜索命中的突出显示.

多年来我一直在看尾巴的日志文件.

这只是让我思考:是否有其他命令过时并具有强大的替代方案?

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

And*_*ter 57

我喜欢指向我的ack,替代程序员的grep.

http://betterthangrep.com/

令我感到惊讶的是,人们(包括我)已经与使用find和xargs的拼凑在一起的别名和shell脚本生活了很长时间.

  • 啊,幸福...... sudo apt-get ack-grep让我今天很开心:) (3认同)
  • `ag`是快速的选择,就像grep(用C编写)和ack(忽略某些目录)一样:http://geoff.greer.fm/2011/12/27/the-silver-searcher-better-than- ACK / (3认同)

Ark*_*ady 36

尝试htop - top对类固醇.

尝试multitail - tail类固醇.


Wil*_*iam 31

最明显的:

少即是多.

  • 还有更多...... (5认同)

小智 29

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

因为,你只需要每个帖子一个命令,我想我必须选择海绵,它允许你将管道输出保存到一个用作输入的文件.IOW,它允许您就地修改文件,而不必担心临时文件.

例如,如果你这样做:

grep 'something' somefile.txt > somefile.txt
Run Code Online (Sandbox Code Playgroud)

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

grep 'something' somefile.txt | sponge somefile.txt
Run Code Online (Sandbox Code Playgroud)


mat*_*tli 26

Rsync以高效且强大的方式替换/补充大多数文件传输方法(scp,rcp,管道tar命令等,甚至在许多情况下都是cp).

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


小智 22

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

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

默认情况下,命令行版本安装在Debian中(package mtr-tiny).


Dav*_*ide 16

上下文敏感的自动完成.

好吧,我知道,这不是一个命令,它不太可能在许多Unices上找到,而是Linux.在我的Ubuntu Hardy中,bash_completion已经配置得非常好,这意味着不仅仅是文件和目录!例如,如果我输入

svn pr<TAB><TAB>
Run Code Online (Sandbox Code Playgroud)

我明白了:

praise    propdel   propedit  propget   proplist  propset
Run Code Online (Sandbox Code Playgroud)

乃至

svn propget svn:k<TAB>
Run Code Online (Sandbox Code Playgroud)

我自动得到了

svn propget svn:keywords
Run Code Online (Sandbox Code Playgroud)

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


eph*_*ent 15

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


Zat*_*rus 15

问题和标签是矛盾的.Linux不是Unix(愚蠢的Open Group),而且大多数"真正的"Unix机箱都没有Linux所能提供的软件.作为一个例子,在一个相当简单的AIX 5.3pl6安装上:

$ less
ksh: less:  not found.

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

在你的工具箱中使用更新的工具真的很棒,但是如果你不了解"旧学校"的方式,那么如果你曾经在AIX/Solaris/HP-UX上,你将会处于一个受伤的世界/ etc系统没有更新的工具(甚至可能没有bash).

请注意,在我们的开发虚拟机上,我确实安装了尽可能多的现代工具,因为虽然我可以在更平坦的环境中工作,但这并不意味着我喜欢它.我在Linux(CentOS 5)系统上做了尽可能多的工作,仅仅因为它上面的工具仍然比我为AIX找到的任何东西都要新(Solaris更好一点; HP-UX更糟糕).

  • 这就是Linux在过去15年里一直在杀Unix的原因.因为Linux(以及*BSDs)已经存在了很长时间. (6认同)

eph*_*ent 13

netcat应该被普遍取代socat.

  • 在Linux上,使用bash可以将netcat替换为特殊的/ dev / tcp / hostname / portnumber和/ etc / udp / hostname / portnumber文件 (2认同)
  • 仅当Bash在启用TCP支持的情况下进行编译时,我认为这不是默认设置。 (2认同)

小智 11

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

例如,递归grep要好得多find | xargs grep.

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

GNU tar采用'j'和'z'标志直接处理bzipped和gzipped压缩文件.

而bash $()替代反引号使得偶尔嵌套的反引号表达式更易于读写.

  • 最近的GNU tar甚至不需要j和z标志,你只需运行"tar xf foo.tar.gz",它就会发现它需要通过gzip运行. (3认同)

Chr*_*ung 11

pax是一个替代tarcpio使用一组理智的命令行选项:-r从存档读取,-w写入存档,-rw执行树到树复制.它还提供了一个-s选项,允许您在从/向存档读取/写入文件之前对文件名执行替换.:-)

编辑:马克贝克提出了一个有趣的观点(在评论中)我应该澄清.默认情况下,pax使pax归档(ustar大多数tar程序的扩展,并且可以解压缩).但是,通过该-x选项,可以创建cpio档案和ustar档案(这两个由标准保证).某些实现(例如BSD)支持创建更多类型,例如旧式(预ustar)tar档案.


eph*_*ent 11

在Linux上,ip(从iproute2包中)表现得更可预测,并且提供比ifconfig/ 更容易解析的输出route.


tzo*_*zot 10

有人可能会说awk完全被淘汰了perl.

但是,因为我在perl存在之前使用awk,所以我仍然使用它; 至于更严肃的脚本,我使用python而不是perl.

  • perl优于awk的一个显着优点是perl在所有平台上的行为方式相同.你不能对awk说同样的话.只需在Solaris上查看awk/nawk,然后在任何Linux系统上将awk与awk(gawk)进行比较,或者在另一个Unix机器上使用awk进行比较.有趣! (5认同)

Tar*_*mán 10

atool:处理没有头痛的档案

一些例子:

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

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


dav*_*010 9

dig是一个更好的选择nslookup.


Fed*_*oni 8

"重命名"是一个很好的替代方案,可以写一个将名称更改为一堆文件的长连词.

  • 注意重命名,有两个不同的版本。其中一个附带了perl(这是基于Debian的发行版中的默认设置),而一个功能要少得多,至少RedHat暂时将其作为默认设置。 (2认同)

mma*_*lay 8

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

  • 这些天tmux更好 (6认同)

eph*_*ent 6

如果你使用的是GNU系统,请不要使用sed '1!G;h;$!d'; 相反,使用sed '1!G;h;$!d'.

  • 我认为这是一个众所周知的sed技巧.1!G:在除第一行之外的每一行上,将保持缓冲区附加到当前行; h:将当前行移动到保持缓冲区; $!d:在除最后一行之外的每一行上,不要打印该行. (3认同)

Hob*_*Ben 5

bm(链接),而不是popd和pushd或创建临时别名,非常有用.

添加要使用标记调用的目录

bm -a /path/to/a/dir tag
Run Code Online (Sandbox Code Playgroud)

要转到此目录

cdbm tag
Run Code Online (Sandbox Code Playgroud)

  • 在许多情况下,这看起来非常方便,但通常不会使用pushd和popd. (2认同)

eph*_*ent 5

无论在何处glibc安装,您都可以getent passwd foo代替grep foo /etc/passwd(类似地aliases ethers group hosts netgroup networks protocols rpc services shadow) - 它甚至可以在NIS设置中使用Right Thing(TM).


eph*_*ent 5

为什么在为你生成解压缩器gzip -dc foo.tar.gz | tar xf -时打扰打字tar xzf foo.tar.gz

更进一步...为什么打扰打字tar xzf foo.tar.gztar xjf foo.tar.bz2GNU tar会自动检测压缩? tar xf foo.tar.(gz|bz2)只是神奇地工作.

  • 我确实指定了*GNUtar*,不是吗? (3认同)

Har*_*vey 5

我不确定这应该是答案还是仅仅是对问题的编辑.

在使用less作为尾部替换之前,您可以搜索"/ search_string",然后调用Follow命令(shift-F).现在任何滚动的"search_strings"都会突出显示.这对于扫描一堆程序输出或日志并查找特定字符串或模式非常有用.

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


Col*_*lin 5

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


Fed*_*ico 5

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


jll*_*gre 5

echo可能仍然只能与琐碎的参数一起使用。否则,其行为可能无法预测。出于所有其他目的(控制字符,换行符,格式等),它已经被功能强大且一致的printf命令所取代。