Linux 常用命令

Table of Contents

对每个命令要求:

1 awk

主要用来操作列。

  • 可以处理多个文件。
  • 内置函数。
    • match 只打印正则表达式匹配的部分。

      # With gawk, you can use the match function to capture parenthesized groups.
      gawk 'match($0, pattern, ary) {print ary[1]}'
      # example:
      echo "abcdef" | gawk 'match($0, /b(.*)e/, a) {print a[1]}'
      # outputs cd.
      
  • 之打印

2 bg

3 c++filt

c++为允许重载,编译器将描述函数参数类型的信息合并到函数的原始名称中, 从而为重载函数生成唯一的函数名称。为名称完全相同的函数生成唯一名称的过程叫做名称改编(name mangling)。C++ 标准没有为名称改编方案制定标准, 因此,编译器设计人员必须自己制定标准。为了区分函数重载版本,我们需要一个能够理解编译器(这里为 g++)的名称改编方案的工具,c++filt 正是这样一个实用工具。c++filt 将每个输入的名称看成是改编后的名称(mangled name),并设法确定用于生成该名称的编译器。如果这个名称是一个合法的改编名称,那么,c++filt 就输出改编之前的原始名称;如果 c++filt 无法识别一个改编名称,那它就按原样输出该名称。

4 cron

5 cut

6 echo

  • 默认不会解释字符串中的转义字符。
  • -e 选项解释字符串中的转义字符。
  • -n 选项输出后不在末尾进行换行。

7 find

8 fg

9 gdb

9.1 调试 core 文件

10 grep

11 gzip

  • 压缩保留源文件的方法: gzip -c filename > filename.gz
  • 解压缩保留源文件的方法: gunzip -c filename.gz > filename

12 ls

  • 只显示文件,不显示文件夹。

13 locate

  • 使用-b 参数来只查找 basename,而扩展为*basename*
  • –regex 使用正则表达式。

14 nc

15 nohub

16 objdump

17 ps

18 psstack

19 pstree

20 rz

接收文件

21 scp

用来在两个远程主机之间通过 ssh 传输文件,也就是在 hostA 上控制两个 remote host B\C 之间的文件传输。

localA$ scp user1@host:/transf_file user2@hostc

默认从参数中第一个主机传送文件到第二个主机。

22 sed

用来操作行。

  • 可以处理多个文件。

23 sort

用来排序文本中的行。

  • 数据量较大是使用–parallel 参数来加快排序速度。
  • 通过-k 选项可以通过指定列范围进行排序。

24 source

  • 嵌套调用 souce 命令,文件中的变量可能会发生变化。

    
    

25 split

将文件分成小份,处理大文件比较有用。

split  -a 4 -l 1000 -d bigfile "small/small-"

该命令将 bigfile 每 1000 行分成一个小文件,放在 small 目录下,每个小文件名字为 small-0000,small-0001 等。

  • -d 使用数字作为后缀,默认是字母 a-z。
  • -a 指定后缀的长度,上面长度为 4,如果小文件很多,默认 2 位的后缀长度可能不够用。
  • -b 按照字节大小分割。
  • -l 按照行数分割。
  • –filter=COMMAND 直接将小文件输出到命令处理。

26 strace

27 sz

发送文件

28 tar

压缩、打包文件。

29 ulimit

30 uniq

  • 使用之前应该先使用 sort 命令排序,因为 uniq 只能判断相邻行是否匹配。
  • 输出第一次匹配的行。
  • -c 参数输出重复次数。
  • -d 只输出重复的行,每组一个
  • -f 跳过每行前 N 个域进行比较。
  • -s 跳过每行前 N 个字符进行比较。
  • -u 只输出不重复的行。

31 wc

31.1 应用举例

31.1.1 只打印统计数字不打印文件名

使用管道操作符

    cat /etc/passwd | wc -l

或者使用输入重定向:

wc -l < testfile

31.1.2 用来统计当前目录下的文件数

    ls -l | wc -l

31.1.3 统计代码量

    find . -name '*.c' | xargs wc -l

统计并按行数排序

    find . -name '*.c' | xargs wc -l | sort -n

统计目录并按文件名排序

    find . -name *.c | xargs wc -l | sort -k2

只想知道最后的总的统计结果:

    find . -name "*.[ch]*"| xargs wc -l | grep"total"| awk'{print $1}'

代码统计工具还有 cloc1,Windows 下面的代码统计工具有 SourceCounterCN2

32 whereis

33 which

34 xargs

Footnotes:

Author: lsl

Created: 2016-08-07 Sun 19:48

Validate