101 条命令行
101 条命令行
疯狂的兔子 发表于3年前
101 条命令行
  • 发表于 3年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

查看 postgresql 当前运行日志

 tail -f pg_log/`ls -al pg_log/| tail -n 1| awk '{print $9}'`

一个一次性的编辑器

有时候只是想临时保存个东西,又不想存文件,可以这样:

在终端里:

cat >/dev/null

然后把文本拷贝粘贴终端屏幕上。用完之后 ctrl-c,东西就没了。

让程序及时刷新stdout

有时候写个脚本:

nohup test.sh > my.log 2>&1 &

之后,因为在后台,标准输出(stdout)刷新不是很及时,于是你

tail -f my.log

经常会一阵阵的输出日志,不够及时,在 shell 里如何弄呢?
可以这样:

nohup unbuffer test.sh > my.log 2>&1 &

或者

nohup stdbuf -i 0 -o0 -e 0 test.sh > my.log 2>&1 &

按空格分隔逐个遍历

for i in ` cat somefile` ; do echo $i ; done

一次一行读取输入遍历

cat somefile | while read line ;  do echo $line ; done

一次一行读取输入,不逃逸输入中的反斜杠

read -r

可以免于逃逸输入中的反斜杠:

cat somefile | while read -r line ; do $echo $line; done

获取度假IOS app所有GID

 cat b2c.ios.access.log.page1 | grep '"dep":"北京"' |awk -F '=' '{print $3}'  | while read -r line ; do echo $line | json_xs|grep '"gid" :' ; done

命令行上的日历

审批报销的时候,经常需要看月历,Unix 系统有非常优秀的 cal 命令可以看月历:

bash-4.2$ cal
      十月 2013     
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

加上年份:

bash-4.2$ cal 2013
                               2013                               

        一月                   二月                   三月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
       1  2  3  4  5                   1  2                   1  2
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                              31
        四月                   五月                   六月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
    1  2  3  4  5  6             1  2  3  4                      1
 7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                              30
        七月                   八月                   九月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
    1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
28 29 30 31            25 26 27 28 29 30 31   29 30

        十月                  十一月                 十二月       
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
       1  2  3  4  5                   1  2    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
27 28 29 30 31         24 25 26 27 28 29 30   29 30 31

命令行上的计算器

bc 命令:

bash-4.2$ echo '0.99*0.99*0.99'| bc -l
.970299

命令行上对一个有序文件进行乱序处理

简单的逻辑就是:我们对随机数进行排序,那么出来的“顺序”就是乱的,因此,如果我要对一个有序的文件进行乱序操作,基本逻辑就是给每行都附加一个随机数,然后我们把随机数排列成有序的,那么原来的数据就乱序了:

for line in `cat tt.txt | awk $'{print $2 }' ` ; do echo $RANDOM $line ; done | sort -k 1 -n

shuf

现代 Linux 都内置了一个叫 shuf 的命令,专门对文件进行乱序处理:

time cat tt.txt | shuf

命令行上对文件的某一列求和

用 awk 最简单,比如对文件第二列的数字求和

cat some_file | awk '{SUM += $2} END {print SUM}'

命令行上对文件的倒数第二列求和

用 awk 的 $NF 变量,可以这么做:

cat some_file | awk '{SUM += ($(NF-1))} END {print SUM}'

当然,倒数第几列是可以控制的拉。

命令行上对文件的倒数第二列求平均

cat some_file | awk '{SUM += ($(NF-1)); CNT += 1 } END {print SUM/CNT}'


共有 人打赏支持
粉丝 30
博文 155
码字总数 100504
×
疯狂的兔子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: