目录

一些不起眼却很实用的Linux命令(不定期更新)

是否经历过这样的场景?

比如,需要按某种方式去处理一个文本,然后去查有没有现成的Linux命令。果然有!好吧,我把你记录下来。

当然,“不起眼”是相对我个人来说的,可能在大家看来这都是比较常见的命令,那必须是我的孤陋寡闻了,见笑。

文件/目录操作

  • realpath

    获取目标文件或目录的绝对路径。

  • mktemp

    用于创建一个临时的文件或目录。

    默认在/tmp目录下创建临时文件/目录,文件/目录名类似tmp.XXXXXXXXXX,其中X是随机字符;通过-p/--tmpdir指定生成的位置,通过-t指定名字模板(包含至少3个X),例如在/tmp/test目录下生成一个*mydemo-*名称开头的临时目录,可执行命令:

    1
    
    mktemp -d -p /tmp/test -t mydemo-XXXXXX
    

    输出结果:

    1
    
    /tmp/test/mydemo-sh3PlU
    
  • 一条mkdir命令创建多个目录

    1
    
    mkdir -p dir/{subdir1,subdir2}
    

    子目录名之间以逗号分隔,且不允许出现空格。

文本处理

  • tac

    反向逐行输出文件内容

    最初知道这个命令时,看名字以为是tail cat的缩写,从尾部开始输出。直到一天突然发现tac不就是cat的字母反向吗?!而功能也是相反的,这应该是其真正的命名由来吧,很有意思。

  • paste

    可以把多个文件按行进行合并,分隔符可指定

    做数据统计可能会用到,比如画曲线图,作为数据源,每列数据就是一条曲线。

  • nl

    在每行前面添加行号并输出

    行号可指定格式,比如左对齐、右对齐、0填充等。

  • 一条sed命令替换多个字符串

    可以将多个表达式合并,以分号分隔

    1
    2
    
    echo "aa-bb" | sed "s/aa/bb/g;s/cc/dd/g" 
    cc-dd
    

    也可以使用-e选项指定多个表达式

    1
    2
    
    echo "aa-bb" | sed -e "s/aa/cc/g" -e "s/bb/dd/g"
    cc-dd
    

Vim

冒号开头的表示命令模式,非冒号开头的表示普通模式

  • ZZ

    保存并退出

  • :x

    保存并退出

  • :TOhtml

    生成一个html格式,经过格式化的文本内容

    这货是我一个Tab不小心敲出来的,然后把我惊到了。