Unix/Linux的命令行工具

缘起

今天,Theoldreader发邮件给我,说我有62天没有访问了。由于临近毕业,毕业论文,学习Rails找工作,挺忙的一直没时间去看Theoldreader上的订阅。今天,看了一下,就看到下面这篇文章,做了一下分类编辑和修改。

正文

下面以Kristóf Kovács收集的28Unix/Linux下命令行下的工具(原文链接)为基础,整合28Unix/Linux的命令行神器中的介绍,并结合自身的经验。下面的工具未提供连接的都可以通过apt-get安装,提供连接的可能需要下载编译安装,也可能可以通过apt-get安装,具体的自己试一试就知道了。

1.1. 编程工具

代码编辑器:vim,emacs 备注:个人使用的是VIM,原因是最初接触的就是VIM,程序员先入为主的观点,而且VIM强大且够用。

各种各样的语言的解释器或编译器: gcc,g++,bash,fish,ruby,php5,perl,grep,awk,java,flexbison

Web服务器:apache2nginx等。

备注:下面的这些列表是个人搜集安装的一些软件,有些可能不是命令行工具

IDE之类的:CodeBlockQT CreatorEclipseRacketScheme

数学软件: Maple,R

绘图软件:GIMPDiaLibreoffice DrawInkscapeGraphvizdot语言)

PDF阅读器:evinceokularpdfviewFoxitReader for Linux

办公软件:WPS for LinuxLibreofficeOpenOffice

中文输入法:IBUSyongfictix

1.2. 性能监视工具

dstat:iostat,vmstat,ifstat三合一的工具,用来查看系统性能(其他三个工具参看《性能调优攻略》)。

官方网站:http://dag.wieers.com/rpm/packages/dstat/

你可以这样使用:alias dstat='dstat -cdlmnpsy'

slurm:查看网络流量的一个工具,官方网站:Simple Linux Utility for Resource Management

powertop做个环保的程序员,看看自己的电脑里哪些程序费电。PowerTOP 是一个让Intel平台的笔记本电脑节省电源的Linux工具。此工具由Intel公司发布。它可以帮助用户找出那些耗电量大的程序,通过修复或者关闭那些应用程序或进程,从而为用户节省电源。

htop & iotop: htop和iotop 用来查看进程,内存和IO负载。

Multitail:用来实现同时监控多个文档、类似tail命令的功能的软件。他和tail的区别就是他会在控制台中打开多个窗口,这样使同时监控多个日志文档成为可能。他还可以看log文件的统计,合并log文件,过滤log文件,分屏等等。官网:http://www.vanheusden.com/multitail/

mtr: traceroute 2.0,其是把 traceroute 和 ping 集成在一块的一个小工具 用于诊断网络。

socat:一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcatN倍加强版。

netpipes 和socat一样,主要是用来在命令行来进行socket操作的命令,这样你就可以在Shell脚本下行进socket网络通讯了。

iftop & iptraf: iftop和iptraf可以用来查看当前网络链接的一些流量情况。

Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器。针对 HTTP 测试,Tsung 支持 HTTP 1.0/1.1 ,包含一个代理模式的会话记录、支持 GETPOST 和 PUT 以及 DELETE 方法,支持 Cookie 和基本的 WWW 认证,同时还支持 SSL

参看:十个免费的Web压力测试工具

1.3. SSH工具

你是不是经常需要SSH或者telent远程登录到Linux服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。PS:在用ssh登录远程服务器时,确实有这样的需求。多次打开ssh不方便。备注,相应的软件需要在服务器端进行安装。

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话session的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。请参看IBM DeveloperWorks的这篇文章《使用screen管理你的远程会话

dtach是用来模拟screen功能的小工具,其可以让你随意地attach到各种会话上。下图为dtach+dvtm的样子。

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再浪费多余的终端来连接这台远程主机;当然其功能远不止于此。与screen相比的优点:可以横向和纵向分割窗口,且窗格可以自由移动和调整大小。可在多个缓冲区进行复制和粘贴,支持跨窗口搜索;非正常断线后不需重新detach……有人说——tmux相比,screen简直弱爆了

byobuUbuntu开发的,在Screen的基础上进行包装,使其更加易用的一个工具。最新的Byobu默认使用Tmux作为后端。可通过“byobu-tmux”这个命令行前端来接受各种与tmux一模一样的参数来控制它。Byobu的细节做的非常好,效果图如下:

Unix/Linux的命令行工具_第1张图片

rsync:通过SSH进行文件同步的经典工具(核心算法)

Xargs:是一个比较古老的命令,有简单的并行功能,这个不说了。对于GNU parallel(online manpage )来说,它不仅能够处理本机上多执行线程,还能分散至远端电脑协助处理。而使用GNU parallel前,要先确定本机有安装GNU parallel / ssh / rsync,远端电脑也要安装ssh

1.4. 加密备份工具

Duplicity是使用rsync算法加密的高效率备份软件,Duplicity支持目录加密生产和格式上传到远程或本地文件服务器。

rsyncrypto 就是 rsync + encryption。对于rsync的算法可参看酷壳的rsync核心算法

lftp:利用lftp命令行ftp工具进行网站数据的增量备份,镜像,就像使用rsync一样。

1.5. 应用类工具

ack :ack是一个perl脚本,是grep的一个可选替换品。其可以对匹配字符有高亮显示。是为程序员专门设计的,默认递归搜索,省提供多种文件类型供选。

calcurse & remind + wyrd:calcurse是一个命令行下的日历和日程软件。remind + wyrd也很类似。关于日历,不得不提一个LinuxCycle日历,也是一个神器。

newsbeuter & rsstail: newsbeuter 和 rsstail 是命令行下RSS的阅读工具。

ttyrec 是一个 tty 控制台录制程序,其所录制的数据文件可以使用与之配套的 ttyplay 播放。不管是你在 tty 中的各种操作,还是在 tty 中耳熟能详的软件,都可进行录制。

ipbt 是一个用来回放 ttyrec 所录制的控制台输入过程的工具。

与此类似的还有Shelr 和 termrec 

tpp:终端下的PPT,要是在某某大会上用这个演示PPT,就太TMDGeek了。官网:http://www.ngolde.de/tpp.html

ledger :ledger 一个命令行下记帐的小工具。

Taskwarrior:TaskWarrior 是一个基于命令行的 TODO 列表管理工具。主要功能包括:标签、彩色表格输出、报表和图形、大量的命令、底层API、多用户文件锁等功能。

TTYtter 是一个Perl写的命令行上发Twitter的工具,可以进行所有其他平台客户端能进行的事情,当然,支持中文。脚本控、CLI控、终端控、Perl控的最愛。

Earthquake也是一个命令行上的Twitter客户端。

tig:Git的控制台UI

cloc;计算代码行,如果能够递归处理文件的话,这个命令就很强大。

vifm & ranger

Vifm 基于ncurses的文件管理器,DOS风格,用键盘操作。

Ranger:用Python实现的使用 Vim 风格的按键绑定的文件管理器,比如 hjkl(上下左右),dd(剪切),yy(复制)等等。功能很全,扩展/可配置性也非常不错。类似MacOS XFinder(文件管理器)的多列文件管理方式。支持多标签页。实时预览文本文件和目录。

1.6. 下载工具

curl:cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurlcurl支持的协议FTPFTPSHTTPHTTPSTFTPSFTPGopherSCPTelnet、 DICTFILELDAPLDAPSIMAPPOP3SMTPRTSP

GNU wget也是一款利用URL语法的下载工具,支持断点续传,递归下载。

rTorrent 是一个非常简洁、优秀、非常轻量的BT客户端它使用了ncurses并以C++编写,因此它完全基于文本并在终端中运行。将rTorrent用在安装有GNU ScreenSecure Shell的低端系统上作为远程的BT客户端是非常理想的。

aria2是Linux下一个不错的高速下载工具。由于它具有分段下载引擎,所以支持从多个地址或者从一个地址的多个连接来下载同一个文件。这样自然就大大加快了文件的下载速度。aria2也具有断点续传功能,这使你随时能够恢复已经中断的文件下载。除了支持一般的http(s)ftp协议外,aria2还支持BitTorrent 协议。这意味着,你也可以使用aria2来下载torrent文件。

1.7. 游戏类

NetHack(Wiki),20年历史的古老电脑游戏。没有声音,没有漂亮的界面,不过这个游戏真的很有意思。网上有个家伙说:如果你一生只做一件事情,那么玩NetHack。 这句话很惹眼,但也让人觉得这个游戏很复杂不容易上手。其实,这个游戏很虽然很复杂,却容易上手。虽然玩通关很难,但上手很容易。NetHack上有许多 复杂的规则,”the DevTeam thinks of everything”(开发团队想到了所有的事情)。各种各样的怪物,各种各样的武器….,有许多spoilers文件来说明其规则。除了每次开始随机 生成的地图,每次玩游戏,你也都会碰到奇怪的事情因为喝了一种药水,变成了机器人;因为踢坏了商店的门被要求高价赔偿;你的狗为你偷来了商店的东西…..这有点象人生,你不能完全了解这个世界,但你仍然可以选择自己的面对方式。

网上有许多文章所这是最好的电脑游戏或最好的电脑游戏之一。也许是因为它开放的源代码让人赞赏,古老的历史让人宽容,复杂的规则让人敬畏。虽然它不是当前流行的游戏,但它比任何一个当前流行的游戏都更有可能再经受20年的考验。

Slash’EM 也是一个基于NetHack的经典游戏。

后记

原文章的图只保留了byobu,其他的都删掉了,要看图请参考原文连接。具体的内容,我还会做一些修改,等有空了或者遇到新的好用的软件了。

参考文献

1.28Unix/Linux的命令行神器:http://coolshell.cn/articles/7829.html

你可能感兴趣的:(linux,unix,ssh,命令行工具)