一些不起眼却很实用的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不小心敲出来的,然后把我惊到了。