什么Linux / Unix命令是过时的,有强大的select?
今天我发现你可以减less 尾巴-f的行为。
less文件名 ,然后按Shift-F开始跟随模式。
就像尾巴,但你有所有的附加functionless – 像滚动,search,突出search点击。
我一直在看尾随多年的日志文件。
这只是让我思考:还有其他命令是过时的,有强大的select?
请分享幸福 – 每个职位一个命令。
我喜欢指出我的缺点,一个替代grep的程序员。
我感到惊讶的是,人们(包括我)已经用拼凑在一起的别名和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
它也适用于ant
, make
自动读取默认文件或命令行上指定的文件! 这是一个真正的节省时间!
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的输出。
pax
是tar
和cpio
的替代品,具有一套完整的命令行选项: -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/
dig
是nslookup
一个更好的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.gz
或tar 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命令才能更新定位数据库; 检查您的发行版的手册页的细节。
ifconfig和iwconfig不赞成使用ip ,这是一个非常强大的工具来显示/操作路由,设备,策略路由和隧道。
echo
可能仍然只能用于琐碎的参数,否则,其行为可能是不可预知的。 对于所有其他目的(控制字符,新行抑制,格式化),它已经被function强大且一致的printf
命令所淘汰。
我发现wcalc是BC的一个很好的替代品
在screen
tmux
。 tmux
configuration起来非常简单,甚至不好笑。
Perl Pie : perl -pi -e 's/foo/bar/'
而不是sed 's/foo/bar/'
,具有更强大的perlre语法。 (这不是一个简单的replace,因为Perl正则expression式使用,而不是\?
。