1. 更友好的显示当前挂载的文件系统
mount | column -t
这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法。
下面是单单使用 mount 命令的结果:
$ mount
/dev/root on / type ext3 (rw) 
/proc on /proc type proc (rw) 
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)
而加了 column -t 命令后就成为这样了:
$ mount | column -t
/dev/root on / type ext3 (rw) 
/proc on /proc type proc (rw) 
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)
另外你可加上列名称来改善输出结果

$ (echo "DEVICE - PATH - TYPE FLAGS" && mount) | column -t

DEVICE - PATH - TYPE FLAGS 
/dev/root on / type ext3 (rw) 
/proc on /proc type proc (rw) 
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)
列2和列4并不是很友好,我们可以用 awk 来再处理一下

$ (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t

DEVICE PATH TYPE FLAGS 
/dev/root / ext3 (rw) 
/proc /proc proc (rw) 
/dev/mapper/lvmraid-home /home ext3 (rw,noatime)
最后我们可以设置一个别名,为 nicemount

$ nicemount() { (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t; }

试一下
$ nicemount
DEVICE PATH TYPE FLAGS 
/dev/root / ext3 (rw) 
/proc /proc proc (rw) 
/dev/mapper/lvmraid-home /home ext3 (rw,noatime)
2. 运行前一个 Shell 命令,同时用 "bar" 替换掉命令行中的每一个 "foo"
!!:gs/foo/bar
!! 表示重复执行上一条命令,并用 :gs/foo/bar 进行替换操作。
关于 !! 这个用法在前一篇文章中已有详细的介绍。
3. 实时某个目录下查看最新改动过的文件

watch -d -n 1 'df; ls -FlAt /path'

在使用这条命令时你需要替换其中的 /path 部分,watch 是实时监控工具,-d 参数会高亮显示变化的区域,-n 1 参数表示刷新间隔为 1 秒。
df; ls -FlAt /path 运行了两条命令,df 是输出磁盘使用情况,ls -FlAt 则列出 /path 下面的所有文件。
ls -FlAt 的参数详解:
-F 在文件后面加一个文件符号表示文件类型,共有 */=>@| 这几种类型,* 表示可执行文件,/ 表示目录,= 表示接口( sockets) ,> 表示门, @ 表示符号链接, | 表示管道。 
-l 以列表方式显示 
-A 显示 . 和 .. 
-t 根据时间排序文件
4. 通过 SSH 挂载远程主机上的文件夹
sshfs name@server:/path/to/folder /path/to/mount/point
这条命令可以让你通过 SSH 加载远程主机上的文件系统为本地磁盘,前提是你需要安装 FUSE 及 sshfs 这两个软件。
译者注:关于 sshfs 实际上我之前写过一篇文章介绍过,详见"在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘"。
卸载的话使用 fusermount 命令:
fusermount -u /path/to/mount/point
5. 通过 DNS 来读取 Wikipedia 的词条
dig +short txt <keyword>.wp.dg.cx
这也许是最有趣的一条技巧了,David Leadbeater 创建了一个 DNS 服务器,通过它当你查询一个 TXT 记录类型时,会返回一条来自于 Wikipedia 的简短的词条文字,这是他的介绍
这里有一个样例,来查询 "hacker" 的含义:
$ dig +short txt hacker.wp.dg.cx
"Hacker may refer to: Hacker (computer security), someone involved 
in computer security/insecurity, Hacker (programmer subculture), a 
programmer subculture originating in the US academia in the 1960s, 
which is nowadays mainly notable for the free software/" "open 
source movement, Hacker (hobbyist), an enthusiastic home computer 
hobbyist http://a.vu/w:Hacker"
这里使用了 dig 命令,这是标准的用来查询 DNS 的系统管理工具,+short 参数是让其仅仅返回文字响应,txt 则是指定查询 TXT 记录类型。
更简单的做法是你可以为这个技巧创建一个别名:
wiki() { dig +short txt $1.wp.dg.cx; }
然后试试吧:
$ wiki hacker
"Hacker may refer to: Hacker (computer security), ..."
如果你不想用 dig ,也可以用 host 命令:
host -t txt hacker.wp.dg.cx
6. 用 Wget 的递归方式下载整个网站

wget --random-wait -r -p -e robots=off -U Mozilla www.example.com

参数解释:
- -random-wait 等待 0.5 到 1.5 秒的时间来进行下一次请求 
-r 开启递归检索 
-e robots=off 忽略 robots.txt 
-U Mozilla 设置 User-Agent 头为 Mozilla
其它一些有用的参数:
- -limit-rate=20K 限制下载速度为 20K 
-o logfile.txt 记录下载日志 
-l 0 删除深度(默认为5) 
--wait=1h 每下载一个文件后等待1小时
7. 复制最后使用的命令中的参数
ALT + . (or ESC + .)
这个快捷键只能工作于 shell 的 emacs 编辑模式,它可以从最后使用的命令行中复制参数到当前命令行中,下面是一个样例:
$ echo a b c 
a b c
$ echo <Press ALT + .> 
$ echo c
你可以重复执行该快捷键,以便获取自已需要的参数,
以下是样例:
$ echo 1 2 3 
1 2 3 
$ echo a b c 
a b c
$ echo <Press ALT + .> 
$ echo c
$ echo <Press ALT + .> again 
$ echo 3
另外,假如你想指定第1个或第2个,或者是第 n 个参数的话,可以按 ALT + 1 (或 ESC + 1) 或 ALT + 2 (或 ESC +2) 这样形式的快捷键。
以下是样例:
$ echo a b c 
a b c
$ echo <Press ALT + 1> <Press ALT + .> 
$ echo a 
a
$ echo <Press ALT + 2> <Press ALT + .> 
$ echo b 
b
查看" Emacs Editing Mode Keyboard Shortcuts " 一文获取更多类似的快捷键。
8. 执行一条命令但不保存到 history 中
<space> command
这条命令可运行于最新的 Bash shell 里,在其它 shell 中没测试过。
通过在命令行前面添加一个空格,就可以阻止这条命令被保存到 bash history (~/.bash_history) 文件中,这个行为可以通过 $HISTIGNORE shell 变量来控制。我的设置是 HISTIGNORE="&:[ ]*" ,表示不保存重复的命令到 history 中,并且不保存以空格开头的命令行。$HISTIGNORE 中的值以冒号分隔。
如果你对此感兴趣,想深入了解的话,可进一步看此文"The Definitive Guide to Bash Command Line History"
9. 显示当前目录中所有子目录的大小

du -h --max-depth=1

- -max-depth=1 参数可以让 du 命令显示当前目录下 1 级子目录的统计信息,当然你也可以把 1 改为 2 ,进一步显示 2 级子目录的统计信息,可以灵活运用。而 -h 参数则是以 Mb 、G 这样的单位来显示大小。
译者注:在此推荐一个小工具 ncdu ,可以更方便的达到此效果。
10. 显示消耗内存最多的 10 个运行中的进程,以内存使用量排序
ps aux | sort -nk +4 | tail
显然这并不是最好的方法,但它确实用起还不错。
这是一个典型的管道应用,通过 ps aux 来输出到 sort 命令,并用 sort 排序列出 4 栏,再进一步转到 tail 命令,最终输出 10 行显示使用内存最多的进程情况。
假如想要发现哪个进程使用了大量内存的话,我通常会使用 htop 或 top 而非 ps 。
额外的:用 python 快速开启一个 SMTP 服务
python -m smtpd -n -c DebuggingServer localhost:1025
这是一个用 Python 标准库 smtpd (用 -m smtpd 指定) 实现在简易 SMTP 服务,运行于 1025 端口 。
另外三个参数的解释:
-n 参数让 Python 不要进行 setuid ( 改变用户)为 "nobody" ,也就是说直接用你的帐号来运行 
-c DebuggingServer 参数是让 Python 运行时在屏幕上输出调试及运行信息 
localhost:1025 参数则是让 Python 在本地的 1025 端口上开启 SMTP 服务
另外,假如你想让程序运行于标准的 25 的端口上的话,你必须使用 sudo 命令,因为只有 root 才能在 1-1024 端口上开启服务。如下:
sudo python -m smtpd -n -c DebuggingServer localhost:25

[SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)的更多相关文章

  1. linux常用命令三

    linux常用命令三 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 ...

  2. [SHELL进阶] (转)最牛B的 Linux Shell 命令 (四)

    1.查看ASCII码表 man 7 ascii  很多人初学编程都会接触到ascii码的概念,有时候为了查某个符号的ascii值,可能还得翻箱倒柜找出当年的课本?Linux Manpage里面其实包含 ...

  3. [SHELL进阶] (转)最牛B的 Linux Shell 命令 (二)

    1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按 <CTRL-x CTRL-e> ,会打开一个你指定的编辑器(比如vim,通 ...

  4. [SHELL实例] (转)最牛B的 Linux Shell 命令 (一)

    本文编译自commandlinefu.com ( 应该是 Catonmat ) 的系列文章 Top Ten One-Liners from CommandLineFu Explained .作为一个由 ...

  5. 《最牛B的Linux Shell命令》笔记

    1.以sudo 运行上一条命令 sudo !! 大家应该都知sudo,不解释.但通常出现的情况是,敲完命令执行后报错才发现忘了sudo.如下: ➜ ~ cp ~/download/CentOS7-Ba ...

  6. linux常用命令(三)

    文件搜索命令 which 命令;可以用于查询某个命令所存在的路径,由此可知道谁可以使用它.附加可以看到命令的别名记录,就是在ls的时候会自动对文件夹上色.前面章节讲过. whereis 命令;可以找到 ...

  7. Linux常用命令(三)查看当前计算机各方面信息

    1.查看cpu: top 2.查看当前linux版本:name -a 查看当前运行的内核版本:cat /pro/version 查看发行版本信息:cat /etc/issue 查看上面所有信息:lsb ...

  8. Linux基础命令(三)

    作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >/1.txt 2) 将用户信息数据库文件和用户 ...

  9. Linux Linux常用命令三

    在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. touch 创建文件或修改文件时间 touch [options] file-list 参数 file-li ...

随机推荐

  1. kvm NET 和 BRIDGE

    net: <interface type='network'> <mac address='52:54:00:e1:ac:43'/> <source network='d ...

  2. jquery 展开折叠菜单

    jquery 展开折叠菜单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <ht ...

  3. AppInventor学习笔记(二)——Hello Purr

    一.设计组件 1.定义: 就是WPF中的控件一个意思,直接调用不需要知道怎么写的,只需要写响应函数即可. 2.Designer: (1)界面如下: (2)分区: ①预览窗口: 用于放置应用中所需的组件 ...

  4. 【HTML5】Web Workers

    什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...

  5. android wheelview 滚轮控件

    项目地址:http://android-wheel.googlecode.com/svn

  6. HTTP基础02--HTTP协议简介

    客户端和服务器端: 仅从一条通信路线来说,服务器端和客户端是确定的: HTTP协议规定,通信一定是先从客户端开始建立,服务器端在没有接受到请求之前不会发送响应: 不保存状态: HTTP是无状态协议,对 ...

  7. Xamarin iOS开发中的编辑、连接、运行

    Xamarin iOS开发中的编辑.连接.运行 创建好工程后,就可以单击Xamarin Studio上方的运行按钮,如图1.37所示,对HelloWorld项目进行编辑.连接以及运行了.运行效果如图1 ...

  8. 【BZOJ】1069: [SCOI2007]最大土地面积(凸包+旋转卡壳)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1069 显然这四个点在凸包上,然后枚举两个点找上下最大的三角形即可. 找三角形表示只想到三分QAQ.. ...

  9. 【NOIP2003】传染病控制(-贪心/dfs)

    我自己yy了个贪心算法,在某oj 0msAC~.然后去wikioi提交,呵呵,原来是之前oj的数据太弱给我水过了,我晕. 我之前的想法是在这棵树上维护sum,然后按时间来割边,每一时刻割已经感染的人所 ...

  10. 【BZOJ】1041: [HAOI2008]圆上的整点(几何)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1041 所谓的神题,我不会,直接题解..看了半天看懂题解了.详见hzwer博客 这题呢,我只能 ...