Linux常用命令总结
数据流重定向
- 标准输入(stdin) : 代码为0,使用
<
或<<
- 标准输出(stdout) : 代码为1,使用
>
或>>
- 标准错误输出(stderr) : 代码为2,使用
2>
或2>>
范例: 1
$ ls /home > ~/homefile # 将屏幕信息输出到homefile里
/dev/null
垃圾黑洞设备
/dev/null
可以吃掉任何导向这个设备的信息
范例: 1
2$ find /home -name .bashrc 2> /dev/null
# 只有stdout会显示到屏幕上,stderr被丢弃了
将正确与错误数据写入同一文件
1 | $ find /home -name .bashrc > list 2>&1 |
<
与<<
用stdin
替代键盘输入以创建新文件的简单流程 1
$ cat > catdile < ~/.bashrc
<<
代表输入结束: 1
2
3$ cat > catfile << "eof"
> This is a test.
> eof # 输入这个关键字,立刻结束而不需要[ctrl]+d
tee -双向重定向
1 | $ tee [-a] file |
tee
可以让standard output
转存一份到文件内并将同样的数据继续送到屏幕上。
选取命令 : cut、grepsad
cut -在一行信息中取出想要的
用法: cut -d '分割字符' -f fields
cut -c 字符范围
参数: * -d : 后面接分割字符,与 -f 一起使用 * -f : 依据-d的分割字符将一段信息切割成数段,用-f取出第几段的意思 * -c : 以字符的单位取出固定字符区间 例: echo $PATH | cut -d ':' -f 4
export | cut -c 12-
sed 工具
1 | $ sed [-nefr] [动作] |
以行为单位的新增/删除功能
1 | # 将/etc/passwd 的内容列出并且打印行号,同时将第2-5行删除 |
用s命令替换
1 | $ cat pets.txt |
把其中的 my
字符串替换成 Hao Chen’s
,下面的语句应该很好理解(s表示替换命令,/my/表示匹配my,/Hao Chen’s/表示把匹配替换成Hao Chen’s,/g 表示一行上的替换所有的匹配):
1 | $ sed "s/my/Hao Chen's/g" pets.txt |
注意:如果你要使用单引号,那么你没办法通过’这样来转义,就有双引号就可以了,在双引号内可以用”来转义。
grep -分析一行信息,若有想要的就拿出整行
用法: grep [-acinv] [-A] [-B] [--color=auto] '查找字符串' filename
参数: * -a : 将binary文件以text文件的方式查找数据 * -c : 计算找到'查找字符串'的次数 * -i : 忽略大小写 * -n : 输出行号 * -v : 反向选择 * -A : 后面接数字,为after的意思,后续的n行也列出来 * -B : 后面接数字,为before的意思,前面的n行也列出来 * --color=auto : 可以将找到的关键字部分加上颜色显示
例: 1
2
3$ last | grep -v 'neymar' | cut -d ' ' -f 1
$ dmesg | grep -n -A3 -B2 --color=auto 'eth'
# dmesg可列出内核产生的信息。通过grep来选取网卡相关信息
排序命令:sort, wc, uniq
sort
用法: sort [-fbMnrtuk] [file or stdin]
参数: * -f : 忽略大小写 * -b : 忽略最前面空格 * -M: 以月份的名字来排序 * -n : 使用纯数字进行排序(默认以文字类型来排序) * -r : 反向排序 * -u : 就是uniq,相同的数据中,仅出现一行代表 * -t : 分隔符,默认用[Tab]来分割,配合-k使用 * -k : 后面加数字,以-t分割出来的哪个区间进行排序 例: last | cut -d '.' f 1 | sort
uniq -重复数据仅列出一个
用法: uniq [-ic]
参数: * -i : 忽略大小写字符的不同 * -c : 进行计数 例: last | cut -d ' ' -f1 | sort | uniq -c
wc - 计算输出信息的整体数据
用法: wc [-lwm]
参数: * -l : 仅列出行 * -w: 仅列出多少字 * -m : 仅列出多少字符 例: cat /etc/passwd | wc
awk - 数据处理工具
awk主要是处理每一行的字段内数据,而默认的字段的分隔符为空格键或[tab]键
用法: awk '条件类型1{动作1} 条件类型2{动作2} … ' filename
awk的内置变量与含义: * $0 一整行数据 * $1, $2 … $n 第1列,第2列 …. 第n列 * NF 每一行拥有的字段总数 * NR 目前处理的行数 * FS 目前的分隔符,默认时空格键
awk的逻辑运算符: * > < >= <= == !=
说明: * 所有awk动作,即在{}内的动作,如果有需要多个命令辅助时,可用”;“间隔,或者直接以[Enter]键来隔开每个命令 * 与bash、shell的变量不同,在awk中,变量可以直接使用,不需要加”$“
举例: * 取出账号与登录者IP,且账号与IP之间以[tab]隔开: last -n 5 | awk '{print $1 “\t” $3}'
* 列出每一行的账号,列出正在处理的行数,并说明该行有多少字段: last -n 5 | awk '{print $1 “\t lines: “ NR “\t columes: “ NF}'
* 在/etc/passwd中以”:“来分隔字段,列出第三列小于10的数据,并且仅列出账号与第三列 cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t" $3}'