1. 更友好的显示当前挂载的文件系统mount | column -t

这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法。

下面是单单使用 mount 命令的结果:[root@uyhd000225 ms]# mount

/dev/hda1 on / type ext3 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/xvdb1 on /data type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

而加了 column -t 命令后就成为这样了:[root@uyhd000225 ms]# mount|column -t

/dev/hda1 on / type ext3 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/xvdb1 on /data type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

另外你可加上列名称来改善输出结果$ (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'

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 文件系统为本地磁盘(http://wowubuntu.com/sshfs.html)。

卸载的话使用 fusermount 或 umount 命令:$ fusermount -u /path/to/mount/point

# umount /path/to/mount/point

5. 通过 DNS 来读取 Wikipedia 的词条

1

dig +short txt .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

另外在Twitter上看过某人的创意,用普通的dns来作为程序版本更新的查询服务器:设定域名software-version-check.example.com的A记录为1.2.40.3,对比自己的版本号,嗯,有更新了!

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. 复制最后使用的命令中的参数 or

这个快捷键只能工作于 shell 的 emacs 编辑模式,它可以从最后使用的命令行中复制参数到当前命令行中,下面是一个样例:$ echo a b c

a b c

$ echo

$ echo c

你可以重复执行该快捷键,以便获取自已需要的参数,

以下是样例:$ echo 1 2 3

1 2 3

$ echo a b c

a b c

$ echo

$ echo c

$ echo again

$ echo 3

另外,假如你想指定第1个或第2个,或者是第 n 个参数的话,可以按 ALT + 1 (或 ESC + 1) 或 ALT + 2 (或 ESC +2) 这样形式的快捷键。

以下是样例:$ echo a b c

a b c

$ echo

$ echo a

a

$ echo

$ echo b

b

查看Emacs Editing Mode Keyboard Shortcuts(http://www.catonmat.net/blog/bash-emacs-editing-mode-cheat-sheet/)一文获取更多类似的快捷键。

8. 执行一条命令但不保存到 history 中$ command

这条命令可运行于最新的 Bash shell 里,在其它 shell 中没测试过。

通过在命令行前面添加一个空格,就可以阻止这条命令被保存到 bash history (~/.bash_history) 文件中,这个行为可以通过 $HISTIGNORE shell 变量来控制。我的设置是 HISTIGNORE=”&:[ ]*” ,表示不保存重复的命令到 history 中,并且不保存以空格开头的命令行。$HISTIGNORE 中的值以冒号分隔。

如果你的命令内包含密码,比如mysqladmin,不把它记录在历史当中是好主义。

深入了解的话,可进一步看此文The Definitive Guide to Bash Command Line History(http://www.catonmat.net/blog/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 。

11. 用 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.查看ascii码表man 7 ascii

很多人初学编程都会接触到ascii码的概念,有时候为了查某个符号的ascii值,可能还得翻箱倒柜找出当年的课本?Linux Manpage里面其实包含了很多类似的实用资料,上述命令就能很详细的方式解释ascii编码,当然这里还有在线版。

man命令的第二个参数是区域码,用来区分索引词的范围,比如printf,在C标准库里面的printf跟bash当中的printf是不同的,前者的查询是man 3 printf,后者是man 1 printf。如果这个区域码省略,就会从1开始搜索,直到找到为止。

命令man man可以看到详细的解释。

manpages里面还有一些有趣而且实用的资料,可能鲜为人知:

man 1 intro – 一篇对从未接触过Linux的用户的简明教程。

man 2 syscalls – 内核系统请求的列表,按内核版本注释分类,系统编程必备。

man 2 select_tut – 关于select()系统请求的教程。

man 3 string – 在头文件内的所有函数。

man 3 stdio – 关于头文件的使用,标准输入/输出库的说明。

man 3 errno – 所有errorno的取值及说明。(C语言内类似其他语言的异常告知机制)

man 4 console_codes – Linux的终端控制码及其使用解释。

man 4 full – 介绍/dev/full这个总是处于“满”状态的磁盘。(对应/dev/null这个总是空的设备)

man 5 proc – 介绍/proc下的文件系统。

man 5 filesystems – 各种Linux文件系统。

第7区里面的资料通常最酷:

man 7 bootparam – 详细解释内核启动参数。

man 7 charsets – 解释各种语言的编码集。(gbk,gb2312等)

man 7 glob – 解释glob文件名管理机制的工作过程。

man 7 hier – 解释Linux文件系统结构各个部分的作用。

man 7 operator – C语言的运算符的列表。

man 7 regex – 介绍正则表达式。

man 7 suffixes – 常见文件后缀名的列表跟解释。

man 7 time – Linux的时钟机制解释。

man 7 units – 数值单位及其数值的解释。

man 7 utf8 – 描述UTF-8编码。

man 7 url – 解释URL、URI、URN等的标准。

2.简易计时器time read

运行命令开始算起,到结束时按一下Enter,就显示出整个过程的时间,精确到ms级别。

time是用来计算一个进程在运行到结束过程耗费多少时间的程序,它的输出通常有三项:[root@uyhd000225 ms]# time ll

总计 924

-rw-r--r-- 1 root root 697856 12-19 16:19 ?????????-20131219.doc

-rw-r--r-- 1 root root 79 12-17 16:41 cpms.sh

-rw-r--r-- 1 root root 76 12-18 16:27 delms.sh

-rw-r--r-- 1 root root 222990 12-19 16:20 mscfqk.zip

drwxr-xr-x 2 root root 4096 12-11 17:37 test

real 0m0.003s

user 0m0.001s

sys 0m0.001s

[root@uyhd000225 ms]#

real指整个程序对真实世界而言运行所需时间,user指程序在用户空间运行的时间,sys指程序对系统调用锁占用时间。

read本来是一个读取用户输入的命令,常见用法是read LINE,用户输入并回车后,键入的内容就被保存到$LINE变量内,但在键入回车前,这个命令是一直阻塞的。

可见time read这命令灵活地利用了操作系统的阻塞。用这个命令来测试一壶水多久煮滚应该是不错的。

3.远程关掉一台Windows机器net rpc shutdown -I IP_ADDRESS -U username%password

Windows平台上的net命令是比较强大的,因为其后台是一个RPC类的系统服务,大家应该看过win下用net use \\ip\ipc$ *这样一个命令建立IPC空连接,***主机的事情。

Linux下的net命令是samba组件的程序,通常包含在smbclient内,可以跟windows主机的文件、打印机共享等服务进行通讯,但是也支持rpc命令。

上述命令就是在远程Windows主机上执行了shutdown命令。当然这不一定成功,关系到win主机上面的安全设置。net命令能够控制到win主机就是了。

4.在一个子shell中运行一个命令(cd /tmp && ls)

当然这只是演示,要查看目录当然可以ls /tmp。

好处就是不会改变当前shell的目录,以及如果命令中设计环境变量,也不会对当前shell有任何修改。

在Shell编程中还有很多使用上引号来括住一个命令:`ls /tmp`,这也是子shell过程。可是上引号的方法无法嵌套,而使用小括号的方法可以,一个比较纠结的例子是:

echo $(echo -e \\x$(printf "%x" 65))

5.利用中间管道嵌套使用SSHssh -t host_A ssh host_B

如果目标机器host_B处于比较复杂的网络环境,本机无法直接访问,但另外一台host_A能够访问到host_B,而且也能被本机访问到,那上述命令就解决了方便登录host_B的问题。

但理论上这个过程是可以无限嵌套的,比如:ssh -t host1 ssh -t host2 ssh -t host3 ssh -t host4 ...

嗯那神马FBI CIA的,有本事来捉我吧~

6.清空屏幕;

这个跟之前介绍的reset命令重置终端的作用有些类似,其实都只是发送一段控制序列,让终端的显示复位。

还可以这样运行:tput clear

tput是专门用来控制终端的一个小工具,也挺强大的,详细信息运行man tput查看。

7.我想知道一台服务器什么时候重启完ping -a IP

系统管理员最常做的事情是重启系统。但是服务器的重启过程往往得花上好几分钟,什么你的服务器4个scsi卡?16个硬盘?系统是Redhat?还完全安装所有组件?好吧,它重启的时间都够你吃顿饭了,所以我很想知道它什么时候回来。

ping命令有个audible ping参数,-a,当它终于ping通你的服务器时会让小喇叭叫起来。

8.列出你最常用的10条命令history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

这行命令组合得很妙:

history输出用户了命令历史;awk统计并输出列表;sort排序;head截出前10行。

9.检查Gmail新邮件curl -u you@gmail.com --silent "https://mail.google.com/mail/feed/atom" |

perl -ne \

'

print "Subject: $1 " if /

(.+?)/ && $title++;

print "(from $1)\n" if /(.+?)/;

'

Gmail的一个特色是支持Atom feed输出邮件列表,所以总是见到很多Gmail邮件提醒器之类的,因为开发特简单,atom很方便。

这里只是利用了perl的正则来解析atom(sed/awk也能做到)。

10.用Telnet看《星球大战》telnet towel.blinkenlights.nl

没什么好解释的,就是ASCII艺术之一。如果你有ipv6连接,还能看到彩色版的。牛吧?

linux 最牛机器,最牛B的 Linux Shell 命令(二)相关推荐

  1. C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)

    参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...

  2. linux不同机器之间的拷贝,Linux下不同机器之间的文件拷贝

    通过 scp 命令实现不同机器之间的文件拷贝. (1)本机考到目标机器:scp 本机文件 目的地: (2)其他机器考到本机:scp 其他机器上的文件 本机路径 20160701补充:通过scp与win ...

  3. linux如何自动调jiaob,最牛B的 Linux Shell 命令 系列连载(四)

    本文编译自commandlinefu.com的系列文章Top Ten One-Liners from CommandLineFu Explained.作为一个由用户推荐最有用shell命令的网站,其记 ...

  4. 【牛客 错题集】Linux系统方面错题合集

    前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...

  5. 最牛B 的 Linux Shell 命令

    最牛B 的 Linux Shell 命令(一) 引言 Shell作为Unix系操作系统当中最有魅力且不可或缺的组件,经过数十载的洗礼不仅没有被淘汰,而且愈加变得成熟稳健,究其原因,大概因为它是个非常稳 ...

  6. 最牛B的Linux Shell命令 系列

    编者按 本文编译自commandlinefu.com的系列文章Top Ten One-Liners from CommandLineFu Explained.作为一个由用户推荐最有用shell命令的网 ...

  7. 千牛工作台linux版,深度商店应用千牛工作台、Discord、QQ(Linux)、新浪微博安卓版...

    深度商店收录千牛工作台.Discord.QQ(Linux).新浪微博安卓版应用,如果使用Deepin或是统信UOS操作系统,可在深度商店程序上安装它们. 1.千牛工作台 千牛工作台是阿里巴巴官方出品的 ...

  8. 用Linux玩开发版和用Windows,在Linux系统中使用Wine开发版可正常运行千牛PC Windows版...

    目前千牛PC版仅推出Windows及Mac版本,无Linux版本提供,但是你可以在Linux操作系统中使用Wine开发版来运行千牛PC Windows版,经在Deepin平台中测试可完美运行,实现起来 ...

  9. 最牛B 的 Linux Shell 命令(一)

    引言 Shell作为Unix系操作系统当中最有魅力且不可或缺的组件,经过数十载的洗礼不仅没有被淘汰,而且愈加变得成熟稳健,究其原因,大概因为它是个非常稳固的粘合剂,能够把大量功能强大的组件任意配搭,总 ...

最新文章

  1. C++ 落选,2021 年最想学习的五大编程语言
  2. Yarn 组件的指挥部 – 调度器Scheduler
  3. 九九乘法表口诀python-Python用for循环实现九九乘法表
  4. 2020计算机考研初试考试先后顺序,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
  5. 此三层非彼三层——MVCamp;UBD
  6. Redis集群的基本配置
  7. Hadoop 使用自动化脚本启动hdfs和yarn
  8. garmin USB: linux USB host驱动
  9. c++计算园的面积与周长
  10. 区块链学习笔记:DAY05 如何使用公有云区块链服务
  11. Linux中锁的总结
  12. Python批量压缩图片(TinyPNG)
  13. 腾讯会议瞩目会议开启共享屏幕时候出现卡顿时候,是显卡问题。
  14. ffmpeg历史版本下载
  15. 编译原理学习笔记 4.5 自底向上分析方法
  16. ogg转mp3格式转换器哪个好用
  17. 评论(评价)数据库表的设计
  18. 利用Docker 基于Uptime Kuma搭建服务器监控
  19. vivo手机可以升级鸿蒙系统,什么手机可以刷鸿蒙系统?vivo、OPPO、三星手机刷鸿蒙系统教程...
  20. 自定义view,仿微信、支付宝密码输入控件的源码实现

热门文章

  1. 4月14日~15日,2021慕尼黑上海电子展,我等你来!
  2. 三星a52和三星s20fe参数对比哪个好 三星a52和三星s20fe的区别
  3. 美团技术团队前端安全系列
  4. serverl列求和 sql_分组后分组合计以及总计SQL语句--收集未整理
  5. matlab 线性调频,线性调频(LFM)仿真
  6. armbian 斐讯n1_斐讯N1刷入Armbian 更换国内系统源更换国内软件源修改DNS
  7. c.k是四分之一混血吗
  8. 怎样查询苹果服务器关闭验证,iPhone小技巧:如何查询 iOS 系统是否已经关闭验证?...
  9. 斩---c语言指针于马下!(上)
  10. SpringMVC是如何消灭web.xml后还能加载到DispatchServlet的流程