Linux命令行的日常使用技术
  • 作者:zhijie
  • 时间:2023-01-31

  单行程序

  这是将命令连成一行的一些样例:

  有时候通过 sort/uniq 对文本文件做交集、并集和差集运算时,这个例子会相当有帮助。假定 a和 b 是已经进行了唯一性处理的文本文件。这会很快,而且可以处理任意大小的文件,总计可达数千兆字节。(Sort不受内存限制,不过如果 /tmp 放在一个很小的根分区的话,你可能需要使用 -T 选项。)也可参见上面关于LC_ALL的注解和 -u 选项(参见下面例子更清晰)。

  sh cat a b | sort | uniq 》 c # c 是 a 和 b 的并集

  cat a b | sort | uniq -d 》 c # c 是 a 和 b 的交集

  cat a b b | sort | uniq -u 》 c # c 是 a 减去 b 的差集

  使用 grep 。 * 来可视化查看一个目录中的所有文件的所有内容,例如,对于放满配置文件的目录: /sys, /proc, /etc。

  对某个文本文件的第三列中所有数据进行求和(该例子可能比同等功能的Python要快3倍,而且代码也少于其3倍):

  awk ’{ x += $3 } END { print x }‘ myfile

  如果想要查看某个文件树的大小/日期,该例子就像一个递归ls -l,但是比ls -lR要更容易读懂:

  find 。-type f -ls

  只要可以,请使用 xargs 或 parallel。注意,你可以控制每行(-L)执行多少个项目,以及并行执行(-P)。如果你不确定它是否会做正确的事情,可以首先使用 xargs echo。同时,使用 -I{} 也很方便。样例:

  find 。-name ’*.py‘| xargs grep some_function

  cat hosts | xargs -I{} ssh root@{} hostname

  比如说,你有一个文本文件,如 Web 服务器的日志,在某些行中出现了某个特定的值,如 URL 中出现的 acct_id 参数。如果你想要统计有多少个 acct_id 的请求:

  cat access.log | egrep -o ’acct_id=[0-9]+‘| cut -d=-f2 | sort | uniq -c | sort-rn

  运行该函数来获得来自本文的随机提示(解析Markdown并从中提取某个项目):

  function taocl(){

  curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |

  pandoc -f markdown -t html |

  xmlstarlet fo --html --dropdtd |

  xmlstarlet sel -t -v ”(html/body/ul/li[count(p)》0])[$RANDOM mod last()+1]“|

  xmlstarlet unesc | fmt -80

  }

 5/6   首页 上一页 3 4 5 6 下一页 尾页
相关推荐
用户评论区