本篇包括:vi/awk/sed/grep/find/busybox/mount/df/du/ifconfig/ip/iperf/chmod/kill killall/adb
(1)vi
1 vi编辑器是所有Unix及Linux系统下标准的编辑器
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式last line mode也算入命令行模式command mode。
2 在终端执行 vi +文本文件名 就可以进入vi编辑界面,这时候处在「命令行模式(command mode)」
3 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候就可以开始输入文字。
4 按Esc键可以退出插入模式
5 在底行模式界面输入qw q!都可以退出vi编辑界面,有所不同的是qw是退出时保存,q!是强制退出,一般常用的是这两个退出
6 具体常用的命令行操作还有:
按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
按「ctrl」+「b」:屏幕往"后"移动一页。
按「ctrl」+「f」:屏幕往"前"移动一页。
按「ctrl」+「u」:屏幕往"后"移动半页。
按「ctrl」+「d」:屏幕往"前"移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的"行尾"。
按「^」:移动到光标所在行的"行首"
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
(2) awk
是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
平常用的比较多的awk命令:ls -lh |awk ‘{print $5}’
用来获取当前目录下的各个文件的大小
ls -lh
总用量 176M
-rw-rw-r-- 1 xuzehao xuzehao 6.7K 8月 14 15:43 192.168.222.123.info
drwxr-xr-x 2 root root 4.0K 8月 4 08:44 logs
-rwxrwxrwx 1 xuzehao xuzehao 176M 7月 31 08:53 main_2.1
-rw-r–r-- 1 root root 51 8月 14 11:33 output.txt
drwxr-xr-x 2 root root 4.0K 8月 4 08:46 pic_dir
drwxr-xr-x 2 root root 4.0K 8月 4 08:44 temp
ls -lh |awk ‘{print $5}’
6.7K
4.0K
176M
51
4.0K
4.0K
一般我是用在Python程序中去读取设备上某个文件夹或者某个文件的大小,如果在Python程序中用df -h会获取所有的文件名和大小,后期再用正则匹配去匹配有时候会匹配比较麻烦(当文件比较多比比较复杂时,如果文件少还是用正则匹配简单)
如果要指定某一行:ls -lh |awk ‘NR3{print $9,$5}’ 这边的例子是指定第三行返回文件名和大小
ls -lh |awk 'NR3{print $9,$5}’
logs 4.0K
这样编程的时候再去切片就简单很多(用空格切片).
还有一种比较经常使用的场景是拷机过程中ping设备,ping要打印时间,把ping的信息保存到文件,方便定位设备什么时候重启
命令如下:
ping ip | awk ‘{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()); fflush()}’ >> outIP.info &
有&会放在后台进行,如果要终止ping要kill一下进程号
如果报错为:awk: line 2: function systime never defined
执行一下:sudo apt-get install gawk
(3)sed
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法模板:sed [-hnV][-e
(4)grep
grep是我们在排查log或者是bug、ps的时候常用的过滤方法
例如:ps