bash技巧

bash
grep查找关键字
grep -n root /etc/passwd 显示/etc/passwd文件所有包含root关键字的行并显示关键字处于文本中哪一行
cut提取文件内容中指定的字段(列)
cut [选项]... [文件]...
选项:
-b 按照字节切,utf-8编码中每个汉字占3个字节,例如 4个汉字就得取12个字节。
-c 按照字符切
-d 指定分割符
-f 指定以分割符分割的哪个字段

head -5 /etc/passwd > /tmp/pass
cat /tmp/pass
cut -d: -f 6 /tmp/pass 显示/tmp/pass文件中以:分隔的第6列的内容,家目录内容
cut -d: -f 6,7,8 /tmp/pass取6,7,8列
cut -d: -f 6- /tmp/pass 取6列至最后一列
cut -d: -f -6 /tmp/pass 取第一列至第6列
cut -c 1-3 /tmp/pass 取第一到第3个字符
echo '×××' | cut -b 1-12 取1-12个字节(3个字节为一个字)
seq按顺序打印一些数字
用法:seq [选项]... 尾数
 或:seq [选项]... 首数 尾数
 或:seq [选项]... 首数 增量 尾数

seq 10按顺序输出1到10
seq 5 11按顺序输出5到11
seq 1 2 10输出1到10之间的奇数
seq 2 2 10 输出1到10之间的偶数
seq -w 1 50 200 用前导零填充使宽度相等

sort 排序(升序、降序)默认是按升序排列
-n, --numeric-sort 根据数值比较,默认是按单个字符来比较
-r, --reverse 逆序输出排序结果
-t 指定分割符(separator)
-k 排序键(key,即排序的列字段)
-u 去掉重复行,u是uniq唯一的缩写
例:执行如下命令。熟悉soft排序的基本用法
seq 1 5
seq 1 5|sort
seq 1 5|sort -n
seq 1 5|sort -nr

cat > a.txt <<EOF
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
EOF
查文件内容 cat a.txt
sort a.txt //默认按升序排列
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
sort -r a.txt// 逆序输出排序结果(按第一列字符排)
tom:102:10:bash
root:1:0:bin
jim:10:300:bash
bin:2:200:bash
sort -t: -k 2 -n a.txt//分割开的以第2列的数值大小排序(用得最多)
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash

echo "bin:2:200:bash" >> a.txt 将echo命令后的文本追加到a.txt文件中
cat a.txt
bin:2:200:bash
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash

sort -u a.txt 去掉重复行
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
wc统计行数 单词数 字节数
wc统计行数 单词数 字节数
wc /etc/passwd会出现3个结果
wc -l /etc/passwd 统计行数
wc -c /etc/passwd 统计字节数
wc -w /etc/passwd 统计单词数
wc -m /etc/passwd 统计字符数
统计/bin目录下有多少个命令
ls /bin | wc -l
1690
uniq 合并连续重复的行
-u 只显示没有连续重复的行
-c 统计连续重复行的次数
-d 只显示连续重复行一次,哪一行连续重复了就显示哪行
-i 忽略大小写
cat > a.txt <<EOF
jim tom root
aa bb cc
aa bb cc
jim
aa bb cc
tom
tom abc
tom
tom abc
EOF

uniq -u a.txt 不显示连续重复的行

jim tom root
jim
aa bb cc
tom
tom abc
tom
tom abc

uniq -c a.txt 统计连续出现的次数
1 jim tom root
2 aa bb cc
1 jim
1 aa bb cc
1 tom
1 tom abc
1 tom
1 tom abc

uniq -d a.txt 仅显示连续出现的内容一次

aa bb cc

sort a.txt | uniq -c 同上,并统计次数,结果如下
3 aa bb cc
1 jim
1 jim tom root
2 tom
2 tom abc
diff文件差异的对比
准备要比较差异的文件:
head -3 /etc/passwd > /tmp/pas3
head -5 /etc/passwd > /tmp/pas5
vimdiff比较两个文件的差异,不同涂红色
cd /tmp 切换到/tmp目录
vimdiff pas3 pas5 说明: 用:qa!强制关闭所有文件并退出vimdiff命令
注:在vimdiff中可以按i键进入vim的编辑模式修改文件内容。按Esc键退出编辑模式,用:wq保存并退出vim编辑器。(用ctrl+w放手后再按w 在窗口之间切换)
diff 文件差异的对比
diff 文件1 文件2
diff pas3 pas5 > 35.patch 制作补丁(增加内容)
diff pas5 pas3 > 53.patch 制作补丁(减少内容)
patch打补丁
要先安装patch
yun -y install patch
用法:patch 原文件 补丁文件
cd /tmp
patch pas3 35.patch 给pas3文件打补丁,提示如下
patching file pas3

cat -n pas3 读pas3文件并显示行号,发现文件中多了2行内容

patch pas3 53.patch 给pas3文件打补丁,提示如下
cat pas3 发现文件中少了2行内容
stat命令:查看文件的状态信息(即详细属性)
stat命令:查看文件的状态信息(即详细属性),包括文件的路径、大小、访问时间(atime)、修改时间(mtime)、属性修改时间(ctime)、索引号(inode)等属性。
stat /etc/passwd
进程管理的命令
查进程pstree ps top pidof pgrep
进程状态信息:R运行 S休眠 Z僵尸 T暂停 s包含子进程 +进程组 < 高优先级 n低优先级
杀进程:kill pkill killall xkill
调优先级:renice nice 谦让nice值范围-20~19,nice值越小优先级(PR)越高,PR默认值是20

linux高级命令:
grep匹配关键字 cut取出字符 sort排序 wc统计单词 uniq去重
diff比较差异 patch打补配 which查文件路径 stat查文件状态
tr替换字符 被替换的字符与替换的字符数必须是相等的
tr 旧字符 新字符
cat > a.txt <<EOF
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
EOF

cat a.txt | tr 20 89 将cat a.txt结果中的20替换成89。
root:1:9:bin
bin:8:899:bash
jim:19:399:bash
tom:198:19:bash
bin:8:899:bash

cat a.txt | tr "a-z" "A-Z" 在替换的时候是一一对应的替换

ROOT:1:0:BIN
BIN:2:200:BASH
JIM:10:300:BASH
TOM:102:10:BASH
BIN:2:200:BASH
\n 换行符

cat a.txt | tr "\n" "+" 将换行符(\n)换成+号

root:1:0:bin+bin:2:200:bash+jim:10:300:bash+tom:102:10:bash+bin:2:200:bash+

cat a.txt | tr -s "\n" 去掉空白行

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...