carl的修行

坚持做正确的事情, 做时间的朋友

0%

find < path > < expression > < cmd >

  • path: 所要搜索的目录及其所有子目录。默认为当前目录。
  • expression: 所要搜索的文件的特征。
  • cmd: 对搜索结果进行特定的处理。

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

find命令常用选项及实例

  • -name 按照文件名查找文件。

    1
    2
    find /dir -name filename  在/dir目录及其子目录下面查找名字为filename的文件
    find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
阅读全文 »

grep [选项] pattern [文件名]

命令中的选项为:

  • -? 同时显示匹配行上下的?行,如:grep -2 pattern filename 同时显示匹配行的上下2行。
  • -A ? 显示匹配行和后面的?行, 如: grep -A 2 pattern filename
  • -B ? 显示匹配行和前面的?行
  • -b,–byte-offset 打印匹配行前面打印该行所在的块号码。
  • -c,–count 只打印匹配的行数,不显示匹配的内容。
  • -f File,–file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
  • -h,–no-filename 当搜索多个文件时,不显示匹配文件名前缀。
  • -i,–ignore-case 忽略大小写差别。
  • -q,–quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。
  • -l,–files-with-matches 打印匹配模板的文件清单。
  • -L,–files-without-match 打印不匹配模板的文件清单。
  • -n,–line-number 在匹配的行前面打印行号。
  • -s,–silent 不显示关于不存在或者无法读取文件的错误信息。
  • -v,–revert-match 反检索,只显示不匹配的行。
  • -w,–word-regexp 如果被<和>引用,就把表达式做为一个单词搜索。
  • -V,–version 显示软件版本信息。
阅读全文 »

变量命名

规则

  1. 首字符必须为字母
  2. 中间不能有空格, 可以有下划线_
  3. 不能使用标点符号
  4. 不能使用bash里的关键字

代码风格建议

  • 全部用大写
  • 下划线分隔
  • 定义在文件的顶部
阅读全文 »

背景

管道符 | + xargs, 用于把上游输出转换为下游参数输入。

例如 ls *.bak | xargs rm -f

问题:
xargs默认把输入作为参数放到命令的最后,但是很多命令需要自己定位参数的位置,比如拷贝命令cp {上游结果} destFolder
解决方法:
xargs -I <参数指示符>, 然后用这个参数指示符定位参数插入的位置,

ls *.bak | xargs -I % cp % /tmp/test

注释:这里使用%作为指示符,第一个%可以理解为声明,第二个%可以理解为调用。你也可以用其他字符,比如 ls *.bak | xargs -I {} cp {} /tmp/test

阅读全文 »