Unix/Linux命令行小技巧(11)- ls命令只显示目录

使用“ls -ltrF --color | grep ^d”命令可以只显示一个文件夹下面的目录。
举个例子:

[root@localhost nan]# ls -ltrF --color | grep ^d
drwxr-xr-x  8 1000 1000      4096 Jun 16  2014 x86_64-gdcproject-linux-gnu/
drwxr-xr-x  8 1000 1000      4096 Oct 16 13:31 bashdb-4.1-0.5/
drwxrwxr-x 20 1000 1000      4096 Nov 26 14:37 unixODBC-2.3.2/
drwxrwxr-x 14 1000 1000      4096 Dec 10 09:32 expat-2.1.0/
drwxr-xr-x 14 root root      4096 Dec 11 09:42 cmake-3.0.2/
drwxr-xr-x  8 root root      4096 Dec 11 09:43 build_sysdig/
drwxrwxr-x  6 root root      4096 Dec 16 16:18 redis-2.8.19/
drwxr-xr-x  2 root root      4096 Dec 23 17:48 odbc_test/
drwxr-xr-x 15 root root      4096 Dec 24 14:22 gdb-7.8.1/
drwxr-xr-x 11 root root      4096 Dec 24 14:23 build_gdb/
drwxr-xr-x  4 root root      4096 Jan  8 10:59 hiredis-master/
drwxr-xr-x  2 root root      4096 Jan 13 10:25 command/

技巧出处:https://twitter.com/nixcraft/status/257437865515044866

 

Unix/Linux命令行小技巧(10)- 度量执行一个命令花费的时间等参数

使用“/usr/bin/time -f 'rss=%Mk etime=%E user=%U sys=%S in=%I out=%O' command”命令可以度量执行一个命令花费的时间,占用的内存,文件I/O等参数.
举个例子:

[root@localhost command]# /usr/bin/time -f 'rss=%Mk etime=%E user=%U sys=%S in=%I out=%O'  find /
/data1/sun/tomcat7/webapps/metronic_v1.5.4/admin/resources/glyphicons_pro/glyphicons_pro/glyphicons/png/glyphicons_157_show_thumbnails_with_lines@2x.png
/data1/sun/tomcat7/webapps/metronic_v1.5.4/admin/resources/glyphicons_pro/glyphicons_pro/glyphicons/png/glyphicons_143_database_ban@2x.png
.....
rss=5440k etime=0:03.13 user=0.03 sys=0.08 in=0 out=0

可以看到最后会打印出执行“find /”命令占用的内存,花费的时间等值:

rss=5440k etime=0:03.13 user=0.03 sys=0.08 in=0 out=0

技巧出处:https://twitter.com/nixcraft/status/235491209743831040

 

Unix/Linux命令行小技巧(9)- 为搜索出来的字符串加上颜色

可以使用“--color”选项为grep查找出来的字符串着色:
举个例子:

[root@localhost command]# grep --color [Cat] <<<"nixCraft"

输出为:
nixCraft

也可使用egrep命令:

[root@localhost command]# egrep --color -i 'Mon' ./scan.txt  

输出为:
Nmap 6.46 scan initiated Mon Jan 12 10:58:32 2015 as: nmap -PR -oN scan.txt 192.168.1.0/24
Nmap done at Mon Jan 12 10:58:32 2015 — 256 IP addresses (0 hosts up) scanned in 0.04 seconds

技巧出处:https://twitter.com/nixcraft/status/231473119817261056

 

Unix/Linux命令行小技巧(8)- 只查看今天的日志

使用“grep "$(date +%b\ %e)" /var/log/syslog”命令只查看今天的日志信息:
举个例子:

-bash-3.2$ grep "$(date +%b\ %e)" /var/log/syslog
Jan 12 00:10:18 PONTUS sendmail[5727]: [ID 801593 mail.info] t0BNA1Lo005727: from=sa@xx.com, size=176, class=
0, nrcpts=1, msgid=<201501112310.t0BNA1Lo005727@PONTUS.xx.net>, relay=root@localhost
Jan 12 00:10:34 PONTUS sendmail[5914]: [ID 801593 mail.info] t0BNA1Lo005727: to=cc@xx.net, delay=00:00:33, xd
elay=00:00:16, mailer=relay, pri=120176, relay=mailhost.xx.net. [10.10.8.90], dsn=2.0.0, stat=Sent (t0BNAWRn0
00026 Message accepted for delivery)

技巧出处:https://twitter.com/nixcraft/status/231473119817261056

 

Unix/Linux命令行小技巧(7)- 列举不符合某种模式的文件

使用“ls -I”命令可以列举不符合某种模式的文件:
举个例子:

[root@localhost include]# ls -I 'z*'
acl                   execinfo.h           ldap.h          nspr4                sched.h
aio.h                 fcntl.h              ldap_schema.h   nss3                 scsi
aliases.h             features.h           ldap_utf8.h     nss.h                search.h
alloca.h              fenv.h               ldif.h          numpy                security
alsa                  fmtmsg.h             libart-2.0      obstack.h            selinux
ansidecl.h            fnmatch.h            libaudit.h      openssl              semaphore.h
antlr                 fontconfig           libcgroup       panel.h              sepol
a.out.h               form.h               libcroco-0.6    pango-1.0            setjmp.h
argp.h                fpu_control.h        libdrm          paths.h              sgtty.h
argz.h                freetype2            libelf.h        pcap-bpf.h           shadow.h
ar.h                  fstab.h              libexslt        pcap.h               signal.h
arpa                  ft2build.h           libgen.h        pcap-namedb.h        slapi-plugin.h
.....

显示不以字母z开头的文件名。

技巧出处:https://twitter.com/nixcraft/status/217200352267739137

 

Unix/Linux命令行小技巧(6)- 打印当前目录下占磁盘空间最多的文件

使用“du -hsx * | sort -rh | head -n”命令可以打印当前目录下占磁盘空间最多的n个文件:
举个例子:

[root@localhost include]# du -hsx * | sort -rh | head -5
63M     boost
7.3M    c++
5.9M    Qt
4.3M    QtGui
3.7M    pgsql

打印了占磁盘空间最多的5个文件(包含目录)。

技巧出处:https://twitter.com/nixcraft/status/201955934283632640

 

Unix/Linux命令行小技巧(5)- 以表格方式显示输出

使用“column -t”命令可以用表格化方式显示输出:
举个例子:

[root@localhost /]# mount
/dev/sda3 on / type ext4 (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/sda1 on /boot type ext4 (rw)
/dev/sda8 on /data1 type ext4 (rw)
/dev/sdb1 on /data2 type ext4 (rw)
/dev/sdc1 on /data3 type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
/dev/sda5 on /usr type ext4 (rw)
/dev/sda6 on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /sys/kernel/config type configfs (rw)
[root@localhost /]# mount | column -t
/dev/sda3  on  /                         type  ext4         (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/sda1  on  /boot                     type  ext4         (rw)
/dev/sda8  on  /data1                    type  ext4         (rw)
/dev/sdb1  on  /data2                    type  ext4         (rw)
/dev/sdc1  on  /data3                    type  ext4         (rw)
/dev/sda2  on  /home                     type  ext4         (rw)
/dev/sda5  on  /usr                      type  ext4         (rw)
/dev/sda6  on  /var                      type  ext4         (rw)
none       on  /proc/sys/fs/binfmt_misc  type  binfmt_misc  (rw)
none       on  /sys/kernel/config        type  configfs     (rw)
[root@localhost /]#

对比之后可以发现“mount | column -t”命令输出很清晰。

技巧出处:https://twitter.com/nixcraft/status/190898232228978688

 

Unix/Linux命令行小技巧(4)- 显示文本文件内容的行号

使用cat -n /file命令可以显示文本文件内容的行号:
举个例子:

[root@localhost command]# cat -n ./mem1.log
 1               total       used       free     shared    buffers     cached
 2  Mem:         32062       9922      22140          0        906       3451
 3  -/+ buffers/cache:       5563      26498
 4  Swap:        31999       9313      22686

技巧出处:https://twitter.com/nixcraft/status/188694159203373056

Unix/Linux命令行小技巧(3)- 把命令输出到多个日志文件

可以使用tee命令把命令输出到多个日志文件:
举个例子:

[root@localhost command]# free -m | tee mem1.log mem2.log
         total       used       free     shared    buffers     cached
Mem:         32062       9922      22140          0        906       3451
-/+ buffers/cache:       5563      26498
Swap:        31999       9313      22686
[root@localhost command]# ls
mem1.log  mem2.log
[root@localhost command]# ls -alt
total 16
drwxr-xr-x  2 root root 4096 Jan 12 10:48 .
-rw-r--r--  1 root root  230 Jan 12 10:48 mem1.log
-rw-r--r--  1 root root  230 Jan 12 10:48 mem2.log
drwxrwxrwx 15 root root 4096 Jan 12 10:47 ..
[root@localhost command]# cat mem1.log
             total       used       free     shared    buffers     cached
Mem:         32062       9922      22140          0        906       3451
-/+ buffers/cache:       5563      26498
Swap:        31999       9313      22686
[root@localhost command]# cat mem2.log
             total       used       free     shared    buffers     cached
Mem:         32062       9922      22140          0        906       3451
-/+ buffers/cache:       5563      26498
Swap:        31999       9313      22686

可以看到,mem1.logmem2.log文件都保存了日志。
技巧出处:https://twitter.com/nixcraft/status/163974717311692801

 

第一次北京Golang爱好者聚会小记

昨天参加了第一次北京Golang爱好者聚会(活动可以参考我之前的文章),总体来说办的很成功。讲师们分享的话题很不错,大家提问也很踊跃。最后大家也都拿到了纪念品,很happy!

第一个话题是GolangWeb开发方面的分享以及做的开源项目。我对Web编程不是很懂,但是开源项目演示效果很不错,值得以后关注一下。
第二个话题是使用Golang的经验分享,很详细。尤其是对于Golang新手,值得一听。
第三个话题是对Golang并发编程的经验分享,也不错,对Golang内部机制感兴趣的朋友,可以仔细研究一下。
第四个话题其实和Golang没什么关系,分享了容器技术的一些原理和实现。
第五个话题是介绍用Golang实现的开源项目codis,碰巧我对Redis有一些了解,所以对这一部分最感兴趣,也和讲师讨论了一下。对Redis感兴趣的朋友,可以关注一下这个项目。
最后一个话题是关于OpenAPM的,这个只是泛泛地提了一下,没什么实质性的内容。

我目前对Golang的感觉是:有一些公司开始在用,但短期内可能不会大规模增长。原因如下:
(1)现有的大量系统都是用老牌语言开发的,用Golang重新开发成本太大,风险太高。很多公司不愿冒险;
(2)目前市场上Golang人才毕竟相对较少。一旦有项目组人员流失,短期内有可能会招不到合适的人选;
(3)Golang语言自身的一些因素,比如gc机制,也许也是一个原因。

我不是语言专家,也没资格对任何语言评头论足。我只是建议大家如果感兴趣,可以去看看Golang。其实了解一门语言最大的收获应该是了解它的实现机理,了解它为什么要这样设计,也许这些内容会给我们日常的工作带来一些启迪。