linux shell笔记(易忽略部分)

echo

echo -n 不加换行符
echo -e 解释转义符 (echo -e "hello \t world")

扩展: echo 'hello' > demo.txt -- 直接覆盖 echo 'hello' >> demo.txt -- 追加文本

cat显示行号

cat -n xx

tac 倒序打印文本

tac demo.txt

rev 反向打印每一行

echo "123456" | rev

mkdir

mkdir {a..c} 连续创建目录
mkdir {install,tmp}
mkdir -p /opt/test

rename

参数1: 文件名需要替换的字符串
参数2: 将文件名中含有的原字符替换成目标字符串
参数3: 指定要改变文件名的文件列表
rename .sh .sh.bak *.sh -- 将所有sh脚本文件名.sh 替换成.sh.bak
rename .htm .html *.htm -- 将所有.htm替换成.html

dirname 去除路径的最后一个名字

dirname /data/shell_script/while_sample.sh -> /data/shell_script
dirname /data/shell_script -> /data
dirname while_sample.sh -> .

cut 选取文件的每一行

-b 选中第几个字符
-c 选中多少个字符
-d 指定分隔符分字段,默认是空格
-f 显示选中字段
echo "abc" |cut -b "2" -> b
截取 abc 字符:
echo "abcdef" |cut -c 1-3 -> abc
以冒号分隔,显示第二个字段:
echo "a:b:c" |cut -d: -f2 -> b
打印文件的前1-3个字符(可以用于列分隔)
cat startup.sh |cut -c 1-3

stat 显示文件或文件的系统状态

stat start.sh

seq

seq 10 -> 1到10
seq 1 10 -> 1到10
seq 1 2 10 ->1到10,步长为2
seq -s "" 1 10 -> 指定分隔符 12345678910

shuf

seq 1 10|shuf
shuf -i 5-10

sort

-n 根据字符串数字排序
-r 倒序
seq 10|shuf|sort -n -> 根据字符串数字排序

uniq 去重重复行

sort file|uniq 去重
sort file |uniq -c ->打印重复行数

head 输出文件头几行

head -n 打印前多少行

ss

ss -nat ->显示所有tcp
ss -nlt ->显示listen的tcp连接
ss -nat|awk '{print $1}'|sort|uniq -c

77  CLOSE-WAIT
578 ESTAB
23  LISTEN
1   State

lsof

列出所有 TCP 网络连接:

lsof -i tcp

根据文件描述符列出打开的文件:
列出进程 ID 打开的文件:

lsof -p 5373

top

wa 等待 I/O 响应 CPU 时间 0.0%;
hi 硬中断;
si 软中断;
top -> 按f展示更多指标(展示code,data)

time 执行脚本的时间

time ls

echo不换行

-e 开启转义
-n 不换行
echo -ne

vim重要快捷键

enter -> 换行
nG -> 跳转到第n行
:1,$s/echo/ECHO/g ->替换所有行中的echo-ECHO

grep

grep -E ->正则 例如: grep -E '^21:03:50' acc.log
grep -i ->忽略大小写
grep -r ->递归
grep -o -> 只打印匹配的内容
grep -v -> 打印不匹配的行

  1. pidstat
    -u 默认的参数,显示各个进程的CPU使用统计
    -r 显示各个进程的内存使用统计
    -d 显示各个进程的IO使用情况
    -p 指定进程号
    -w 显示每个进程的上下文切换情况
    -t 显示选择任务的线程的统计信息外的额外信息
    pidstat -d -p 29976 1 5 -> 每隔一秒执行一次,总共5次

  2. pstree

  3. pstack 查看进程栈、线程栈
    pstack 2731
    也可查看线程栈

  4. perf
    全局统计程序运行状态 perf stat -p <pid>
    实时显示程序性能统计信息 perf top -p <pid>
    perf record -p <pid> -g -g代表保存调用关系图
    perf report 也可用插件可以展示火焰图
    实例:
    perf record -p <pid> -g 然后 perf report展示关系

  5. pmap 查看进程内存分配
    pmap -x <pid>

  6. 综合实战(top -Hp <pid> -> pstack <tid>)

  7. 利用TOP找出CPU占比最高的进程

  8. 利用pidstat -p <pid> 1 持续观察CPU的变化情况(例如: 是否周期性出现)

  9. 利用perf record -p <pid> -g 来记录一段时间内CPU的变化情况

  10. 利用perf report 来查看CPU最高的线程

  11. pidstat -p pid -t 查看线程信息

  12. pstack <tid>查看线程工作的情况

######################################

shell 实战

######################################

  • shell中单引号、双引号区别
    单引号 所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的什么就输出什么,这成为强引用
  • 双引号 输出双引号的所有内容;如果内容中有命令(要反引)、变量、特殊转义,会先把变量、命令、转义字符解析出结果
for ((i=0;i<10;i++))
do
   mod=$(($i%2))
   if [ $mod -eq 0 ];then
        echo "found num: $i"        ###  found num 0
        echo 'found number is: $i'  ###  found number is: $i
   fi
done

小于、等于 lt, gt
小于或等于 le
大于或等于 ge
不相等 ne

for i in `seq 1 20`
do
  if [ $i -lt 5 ];then
     echo "<5, num is: $i"
  elif [ $i -lt 10 ];then
     echo "<10, num is: $i"
  else
     echo "other, num is: $i"
  fi
done
  1. while语法, 自增
#!/bin/bash
num=1
while ((num<100))
do
   echo "num is: $num"
   ((num=num+5))
done
  1. 中括号(属性测试)
    -e 判断是否存在
    -d 判断是否为目录
    -f 判断是否为普通文件
    -r,-w,-x 判断是否可以读写执行
    如果目录不存在: [ ! -d xx ]
file=/data/tools/jdk1.8.tar.gz
if [ -e $file ];then
   echo "$file is existed"
else
   echo "$file is empty"
fi
  1. 双中括号(字符串比较) [[]]
for i in `seq 1 30`
do
   if [[ $i%2 != 0 && $i -gt 10 ]];then
        echo "bingo: $i"
   fi
done
  1. 大小写转换
hints="Hello,World, I love my company"
echo "toUpper: "${hints^^}  ### 大写
echo "toLower: "${hints,,}  ### 小写
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268