Linux 命令行小工具
Table of Contents
1. bat
cat 的克隆版,用法和 cat 差不多,有些我比较喜欢的特点:
- 显示的文件超过一屏时,默认带类似 less 自动分页;
- 常见语言的源文件可以高亮代码;
- 主题可以定制。
安装:
sudo dnf install bat
2. iconv
编码转换
-t 目标编码 -f 原编码
如:
iconv -t utf8 -f gbk index.html > index.htm
3. import
import 是一个命令行版的屏幕截图工具。
import 文件名
截图后自动生成文件名,并保存到 home 目录中:
#!/bin/sh filename=date +%Y%m%d%H%M%S savepath=$HOME exec import $savepath'/'$filename'.jpg'
4. zenity
使用 zenity 命令,可以弹出一个提示框,提示的文本内容可以自定义。如下例子是一个提示是否关机或重启的脚本:
#! /bin/bash case $1 in "down") zenity --question --text "关机?" && sudo shutdown -h now ;; "reboot") zenity --question --text "重启?" && sudo shutdown -r now ;; esac
5. pdfunite
合并 PDF 文件
pdfunite file1.pdf file2.pdf output.pdf
6. convert
格式转换
例,合并多张图片到一个 PDF 文件:
convert 1.jpg 2.jpg 3.jpg out.pdf
7. gs
合并多个 PDF:
$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=输出的独立文件.pdf -dBATCH file1.pdf file2.pdf
8. ack
比 grep 要快的文本搜索工具。
9. xclip
命令行使用粘贴板数据。如下,把 echo 的内容复制到粘贴板:
echo hello | xclip -selection clipboard
从粘贴板中读取数据:
xclip -i
10. cloc
统计目录中源码文件的行数。
$ cloc . 3769 text files. 3713 unique files. 586 files ignored. github.com/AlDanial/cloc v 1.82 T=9.12 s (351.9 files/s, 176310.3 lines/s) --------------------------------------------------------------------------------------- Language files blank comment code --------------------------------------------------------------------------------------- Python 1823 111987 137183 520054 C 315 49176 44958 304067 C/C++ Header 350 13996 10373 118865 reStructuredText 483 71697 83814 90178 Bourne Shell 18 2982 2633 19408 m4 3 524 150 5463 C++ 5 717 258 3170 HTML 10 107 11 2017 WiX source 51 162 41 1725 make 4 276 292 1613 Assembly 7 258 395 1481 DOS Batch 29 288 88 1376 Windows Module Definition 8 23 14 1360 MSBuild script 27 44 4 680 Objective C 7 98 61 635 Lisp 1 109 81 502 YAML 8 112 4 452 Pascal 3 111 261 339 JavaScript 3 37 58 315 Windows Resource File 7 40 47 295 WiX string localization 11 28 0 188 PowerShell 5 27 58 156 CSS 2 42 4 154 INI 1 42 27 102 XML 6 56 2 77 D 5 8 1 73 JSON 6 3 0 65 Fish Shell 1 13 15 47 IDL 2 1 0 35 C Shell 1 9 7 21 SVG 8 0 0 8 Visual Basic 1 0 1 0 --------------------------------------------------------------------------------------- SUM: 3211 252973 280841 1074921 ---------------------------------------------------------------------------------------
11. tldr
方便快速查询 Linux 命令使用示例。
12. exa
exa - a modern replacement for ls
相比传统的 ls 命令来说,exa 有更直观的列目录功能:
exa -l:显示文件详细信息,并且权限等字段用了不同的颜色做区分 exa -T:代替 tree 命令,可以树状列出子目录中文件 exa -R:递归显示子目录中文件
13. expect
expect 可以模拟用户键盘输入,比如写的脚本里用到了 scp、ssh 需要输入密码时。简单的语法如下:
expect -c " set timeout -1; spawn scp ${tar_name} root@host:/data; expect { yes/no { send \"yes\r\"; exp_continue } *assword* { send \"123456g\r\" } } ; expect 100% ; expect eof ; "
-c 参数表示接受字符串形式的 expect 语法。
spawn 是对 shell 进行了一层“包装”,spawn 不是系统自带的命令,注意。
expect {} 用来匹配,匹配到后的 send 表示模拟用户输入(记得 \r 换行)。其中 expcontinue 表示匹配后继续当前 expect 块中其他输入,否则会被跳过到后面。