`

最牛B的 Linux Shell 命令(三)

阅读更多

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

分享到:
评论
1 楼 mimicom 2012-04-25  
 
牛b......

相关推荐

    最牛B的 Linux Shell 命令

    最牛B的 Linux Shell 命令,最牛B的 Linux Shell 命令,

    最牛B的Linux_Shell命令

    标题《最牛B的Linux_Shell命令》所指向的知识点覆盖了Linux中Shell命令的强大和便捷性,尤其是在完成系统管理任务时的实用性。Shell命令之所以重要,是因为它们充当了用户和操作系统之间的接口,能够调用和控制底层...

    最牛的Linux Shell 命令.pdf

    【Linux Shell 命令详解】 在Linux操作系统中,Shell是一个至关重要的组成部分,它作为用户与系统交互的接口,提供了一系列强大的命令行工具。本文将详细介绍一些顶级的Linux Shell命令,帮助用户提升在Linux运维和...

    最牛B的 Linux Shell 命令 中文版

    Shell作为Unix系操作系统当中最有魅力且不可或缺的组件,经过数十载的...本文的一些命令很可能看起来是"雕虫小技",我们只好仰慕一下Shell大牛了,但是有些细节我会稍加发掘加以说明,遇到有趣的地方希望能博您一笑了。

    最牛B的linuxBshell命令

    最牛B 的 linux B shell 命令 最牛B 的 linux B shell 命令

    Linux常用命令大全Linux常用命令深入理解Linux内核鸟哥的Linux私房菜Linux命令学习资料(12个).zip

    Linux常用命令大全Linux常用命令深入理解Linux内核鸟哥的Linux私房菜Linux命令学习资料(12个): Linux命令大全(Linuxidc.com修改版).chm Linux命令学习.chm Linux基础命令教程(豪华版).chm LINUX安全加固手册.doc ...

    Linux Shell编程最牛面试题全揭秘 119页

    Linux Shell编程是一种使用命令行解释器(如bash)编写脚本的方式,它在Linux系统管理、自动化任务和处理文本文件等方面有着广泛的应用。Shell脚本的使用是面试Linux系统管理员、运维工程师、DevOps工程师等职位时必...

    史上最牛b的linux教教程

    Linux 的命令格式通常由命令名、选项和参数组成,例如 `ls -l`、`mkdir -p` 等。 11. Linux 目录处理命令 Linux 目录处理命令包括 `ls`、`mkdir`、`cd`、`pwd`、`rmdir` 等,用于目录的管理和操作。 12. Linux ...

    史上最牛Linux教程

    史上最牛Linux教程。 简单,易学,页数不是很多。

    linux命令大全(15部最全面的CHM文档)linux命令手册集合最新版本

    Mint11官方中文手册.pdfLinux命令大全(Linuxidc.com修改版).chmLinux命令学习.chmLinux基础命令教程(豪华版).chmLinux基础命令教程豪华版.chmLINUX安全加固手册.docLinux常用命令全集.CHMLinux常用命令大全.chm史上...

    史上最牛的Linux内核学习方法论.doc

    #### 三、利用Kconfig和Makefile寻找目标代码 接下来,我们将具体介绍如何利用Kconfig和Makefile来定位U盘驱动的相关代码。 1. **进入目标目录**: - 首先,我们需要找到与U盘驱动相关的目录。由于U盘是一种USB...

    linux命令大全.rar

    《史上最牛Linux教程》可能是一个集大成者,包含了丰富的Linux知识和实战技巧,适合有一定基础的用户提高技能。 《深入理解Linux内核》则更偏重于技术深度,讲解了Linux内核的工作原理,对想要了解Linux内部机制的...

    史上最牛的linux教程学习笔记整理

    史上最牛的linux教程学习笔记整理、linux学习笔记整理、

    Linux常用命令和基础命令和教程,好用,非常推荐

    所提供的资源如“史上最牛Linux教程”、“Linux基础命令教程豪华版”和“Linux常用命令”都是很好的学习材料,值得深入研究。学习Linux不仅能提升工作效率,也有助于理解计算机系统底层工作原理,为成为IT专家打下...

    linux下最牛B的测网速软件,没有之一

    本文将详细介绍一款被誉为“Linux下最牛B的测网速软件”——iperf,以及如何利用它来进行网络速度和性能的测量。 iperf是一款强大的网络性能测试工具,它支持TCP和UDP协议,可以用来测量带宽、延迟抖动以及网络连接...

    史上最牛的Linux内核学习方法

    ### 最强Linux内核学习法:深入理解Kconfig与Makefile #### 一、引言 在探索Linux内核的世界时,很多初学者可能会感到迷茫和困惑,不知道从何入手。尤其是在面对庞大的代码库时,如何高效地找到自己感兴趣的部分是...

Global site tag (gtag.js) - Google Analytics