10个你从未用过的Linux命令

系统 Linux
也许需要几年甚至是几十年,才能真正掌握Linux shell 命令。这里有10个你从来没有听说或使用过的命令。他们在没有特定的顺序。我最喜欢的是mkfifo。

 这也许需要几年甚至是几十年,才能真正掌握Linux shell 命令。这里有10个你从来没有听说或使用过的命令。他们在没有特定的顺序。我最喜欢的是mkfifo。

1、pgrep, 替代:

# ps -ef | egrep '^root ' | awk '{print $2}'
1
2
3
4
5
20
21
38

39

...

你还可以这样:

# pgrep -u root
1
2
3
4
5
20
21
38
39
...

2、pstree,在tree 格式中列出进程,当有webSphere或重任务应用时非常有用。

# pstree
init-+-acpid
|-atd
|-crond
|-cups-config-dae
|-cupsd
|-dbus-daemon-1
|-dhclient
|-events/0-+-aio/0
| |-kacpid
| |-kauditd
| |-kblockd/0
| |-khelper
| |-kmirrord
| `-2*[pdflush]
|-gpm
|-hald
|-khubd
|-2*[kjournald]
|-klogd
|-kseriod
|-ksoftirqd/0
|-kswapd0
|-login---bash
|-5*[mingetty]
|-portmap
|-rpc.idmapd
|-rpc.statd
|-2*[sendmail]
|-smartd
|-sshd---sshd---bash---pstree
|-syslogd
|-udevd
|-vsftpd
|-xfs
`-xinetd

3、bc 是个任意精度计算器语言,它可以Shell脚本执行平方根操作,expr 不支持平方根。

# ./sqrt
Usage: sqrt number
# ./sqrt 64
8
# ./sqrt 132112
363
# ./sqrt 1321121321
36347
Here is the script:
# cat sqrt
#!/bin/bash
if [ $# -ne 1 ]
then
echo 'Usage: sqrt number'
exit 1
else
echo -e "sqrt($1)\nquit\n" | bc -q -i
fi

4、split, 你需要将大的文件分解称若干小部分?

split是你的命令,下面是将250MB文件分解为2M的块儿,所有开始于LF_前缀。

 

# ls -lh largefile
-rw-r--r-- 1 root root 251M Feb 19 10:27 largefile
# split -b 2m largefile LF_
# ls -lh LF_* | head -n 5
-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_aa
-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ab
-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ac
-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ad
-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ae
# ls -lh LF_* | wc -l
126

 

5、nl 数字线,在没发现nl之前,一直用脚本来实现。

# head wireless.h
/*
* This file define a set of standard wireless extensions
*
* Version : 20 17.2.06
*
* Authors : Jean Tourrilhes - HPL
* Copyright (c) 1997-2006 Jean Tourrilhes, All Rights Reserved.
*/#ifndef _LINUX_WIRELESS_H
# nl wireless.h | head
1 /*
2 * This file define a set of standard wireless extensions
3 *
4 * Version : 20 17.2.06
5 *
6 * Authors : Jean Tourrilhes - HPL
7 * Copyright (c) 1997-2006 Jean Tourrilhes, All Rights Reserved.
8 */9 #ifndef _LINUX_WIRELESS_H

#p#

6、mkfifo 是最酷的一个,你一定知道如何创建管道 输送grep的结果到LESS,可能甚至perl。

但是你知道如何使2个命令通过1个命名管道沟通?看下图,创建管道,开始写到它。

mkfifo pipe; tail file > pipe

然后读取它:

cat pipe

 

7、ldd, 想知道java链接到哪个Linux线程库?

# ldd /usr/java/jre1.5.0_11/bin/java
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00bd4000)
libdl.so.2 => /lib/libdl.so.2 (0x00b87000)
libc.so.6 => /lib/tls/libc.so.6 (0x00a5a000)
/lib/ld-linux.so.2 (0x00a3c000)

8、col, 想保存帮助页面为纯文本?

# PAGER=cat
# man less | col -b > less.txt

9、xmlwf, 需要知道一个XML文档或许是配置文件是否合理?

# curl -s 'http://bashcurescancer.com' > bcc.html
# xmlwf bcc.html
# perl -i -pe 's@<br/>@<br/>@g' bcc.html
# xmlwf bcc.html
bcc.html:104:2: mismatched tag

10、lsof 列出打开文件,你可以用它做很多很cool的事情,比如查找哪个接口是开放的?

# lsof | grep TCP
portmap 2587 rpc 4u IPv4 5544 TCP *:sunrpc (LISTEN)
rpc.statd 2606 root 6u IPv4 5585 TCP *:668 (LISTEN)
sshd 2788 root 3u IPv6 5991 TCP *:ssh (LISTEN)
sendmail 2843 root 4u IPv4 6160 TCP badhd:smtp (LISTEN)
vsftpd 9337 root 3u IPv4 34949 TCP *:ftp (LISTEN)
cupsd 16459 root 0u IPv4 41061 TCP badhd:ipp (LISTEN)
sshd 16892 root 3u IPv6 61003 TCP badhd.mshome.net:ssh->kontiki.mshome.net:4661 (ESTABLISHED)
Note: OpenBSD 101 pointed out that “lsof -i TCP” a better way to obtain this same information. Thanks!Or find the number of open files a user has. Very important for running big applications like Oracle, DB2, or WebSphere:
# lsof | grep ' root ' | awk '{print $NF}' | sort | uniq | wc -l
179

提示,匿名评论者指出应该用“sort -u”代替sort | uniq,本人忘记了-u flag,谢谢!

原文:http://www.oschina.net/news/19435/10-linux-commands-youve-never-used

英文原文:http://bashcurescancer.com/10-linux-commands-youve-never-used.html

【编辑推荐】

  1. 五个不容错过的Linux命令行技巧
  2. 六个鲜为人知的超酷Unix/Linux命令
  3. Linux命令行闭关修炼札记
责任编辑:黄丹 来源: oschina.net
相关推荐

2009-06-02 10:49:32

思科路由器交换机

2015-12-25 10:58:20

WiFi政府

2023-11-24 13:00:32

2022-10-17 15:47:19

JavaScript开发Web

2020-03-19 19:00:01

Linux命令

2009-05-13 10:28:28

Linux命令

2020-08-16 10:58:20

Pandaspython开发

2020-09-22 14:45:11

谷歌TensorFlow开发

2020-05-03 14:14:48

Linux 命令 代码

2020-08-23 09:18:30

Pandas函数数据分析

2010-11-26 09:45:56

2020-10-13 14:54:11

机器学习技术工具

2013-10-11 15:26:32

linux网络监控

2021-07-12 14:50:25

Linux命令文件

2023-04-21 08:11:24

2020-12-15 09:43:20

Python可视化工具网络应用

2018-09-13 10:00:02

Linux命令危险命令

2017-03-20 14:37:43

Linux命令

2014-03-14 09:13:35

Linux终端进程管理终端命令

2020-03-23 09:56:50

软件测试面试技术
点赞
收藏

51CTO技术栈公众号