当前位置: 首页 > news >正文

做网站域名 空间东莞网站

做网站域名 空间,东莞网站,山东省城建设计院网站,网站系统开发方式图 by#xff1a;石头青海湖关于作者#xff1a;程序猿石头(ID: tangleithu)#xff0c;现任阿里巴巴技术专家#xff0c;清华学渣#xff0c;前大疆后端 Leader。以每篇文章都让人有收获为目的#xff0c;欢迎关注#xff0c;交流和指导#xff01;背景本文主要来源于… 图 by石头青海湖关于作者程序猿石头(ID: tangleithu)现任阿里巴巴技术专家清华学渣前大疆后端 Leader。以每篇文章都让人有收获为目的欢迎关注交流和指导背景本文主要来源于在之前公司的小组内部的一个小分享整理成一篇文章po出来。题目叫 “Shell 助力开发效率提升”更切题的应该是叫“命令行”提升开发效率这里并没有讲到 Shell 编程而是主要介绍 Linux 或者 Mac 下常用的一些基本工具命令来帮助处理一些日常事务。通过本文的介绍你应该对相关命令有一个初步的了解知道比如用什么命令可以完成怎样的操作 至于具体的参数不需要刻意地背诵等到需要用到的时候再去 cmd --help 或者 man cmd用得多了常用的命令也就自然记住了。本文首先介绍了 Linux/Mac 下一些常用的命令行工具然后用具体的示例阐述了常用的命令用法最后通过一两个案例来说明这些工具的强大之处比如给定一个 nginx 日志文件能够找出 HTTP 404 请求最多的 top 10 是什么? 比如能找到请求耗时最多的 top 10 是什么?再比如能够简单的得到每小时的PV是多少? 再比如拿到一篇文章 能否简单统计一下这篇文章单次词频最高的10个词语是什么?需要批量改某个文件夹下的文件名批量将文件夹下的图片压缩成固定大小的等等。Mac 环境zshon-my-zshplugingitautojumposx(man-preview/quick-look/pfd(print Finder director)/cdf(cd Finder))常用快捷键(bindkey)演示: 高亮/git/智能补全/跳转(j, d)...这里给大家展示一个小 Demo之前在视频号(程序猿石头欢迎关注)中分享的一个小视频演示了如何在目录之间快速跳转。关于 Mac 程序猿提高效率的相关技巧更多的可以参考以下三篇文章工欲善其事必先利其器 -- Mac 软件推荐(序)有了这几个神器瞬间逼格就上去了优秀的程序员是如何利用工具来提升工作效率的Shell 基础命令which/whereis 常用 whatis man --help➜  .oh-my-zsh git:(master)$ whereis ls/bin/ls➜  .oh-my-zsh git:(master)$ which lsls: aliased to ls -G基本文件目录操作rm mkdir mv cp cd ls ln file stat wc(-l/w/c) head more tail cat...利器 管道: |Shell 文本处理这里就是通过案例讲了一下12个命令的大致用法和参数可以通过点击右边的目录(我博客有目录公众号上木有)直达你想要了解的命令。find, grep, xargs, cut, paste, commjoin, sort, uniq, tr, sed, awkfind常用参数文件名 -name 文件类型-type 查找最大深度-maxdepth时间过滤(create/access/modify) -[cam]time执行动作 -exec示例find ./ -name *.jsonfind . -maxdepth 7 -name *.json -type ffind . -name *.log.gz -ctime 7 -size 1M -delete (atime/ctime/mtime)find . -name *.scala -atime -7 -exec du -h {} \;grep常用参数-v(invert-match)-c(count)-n(line-number)-i(ignore-case)-l -L -R(-r --recursive) -e示例grep partner ./*.scala -lgrep -e World -e first -i -R ./  (-e: or)相关命令: grep -z / zgrep / zcat xx | grepxargs常用参数-n(每行列数)-I(变量替换)-d(分隔符) Mac 不支持注意与GNU版本的区别示例find . -type f -name *.jpg | xargs -n1 -I {} du -sh {}cut常用参数-b(字节)-c(字符)-f(第几列)-d(分隔符)f 范围: n, n-, -m, n-m示例echo helloworldhellp | cut -c1-10cut -d -f2-8 csu.db.export.csvpaste常用参数-d 分隔符-s 列转行示例➜  Documents$ cat file11 112 223 334 44➜  Documents$ cat file2one     1two     2three   3one1    4➜  Documents$ paste -d, file1 file21 11, one     12 22, two     23 33, three   34 44, one1    4➜  Documents$ paste -s -d: file1 file2a 11:b bb:3 33:4 44one     1:two     2:three   3:one1    4join类似sql中的 ...inner join ...on ... -t 分隔符默认为空格或tab➜  Documents$ cat j11 112 223 334 445 55➜  Documents$ cat j2one     1   0one     2   1two     4   2three   5   3one1    5   4➜  Documents$ join -1 1 -2 3 j1 j21 11 one 22 22 two 43 33 three 54 44 one1 5comm常用参数用法 comm [-123i] file1 file2字典序列 3列: 只在file1/file2/both- 去掉某列i 忽略大小写示例➜  Documents$ seq 1 5 file11➜  Documents$ seq 2 6 file22➜  Documents$ cat file1112345➜  Documents$ cat file2223456➜  Documents$ comm file11 file221        2        3        4        5    6➜  Documents$ comm -1 file11 file22    2    3    4    56➜  Documents$ comm -2 file11 file221    2    3    4    5➜  Documents$ comm -23 file11 file221相关命令 diff(类似git diff)sort常用参数-d --dictionary-order-n --numeric-sort-r --reverse-b --ignore-leading-blanks-k --key示例➜  Documents$ cat file2one     1two     2three   3one1    4➜  Documents$ sort file2one     1one1    4three   3two     2➜  Documents$ sort -b -k2 -r file2one1    4three   3two     2one     1uniq常用参数-c 重复次数-d 重复的-u 没重复的-f 忽略前几列示例➜  Documents$ cat file41122331111➜  Documents$ sort file4 | uniq -c   3 11   1 22   1 33➜  Documents$ sort file4 | uniq -d11➜  Documents$ sort file4 | uniq -u2233➜  Documents$ cat file3one     1two     1three   3one1    4➜  Documents$ uniq -c -f 1 file3   2 one     1   1 three   3   1 one1    4注意uniq比较相邻的是否重复一般与sort联用tr常用参数-c 补集-d 删除-s 压缩相邻重复的示例➜  Documents$ echo 1111234444533hello | tr  [1-3] [a-c]aaaabc44445cchello➜  Documents$ echo 1111234444533hello | tr -d [1-3]44445hello➜  Documents$ echo 1111234444533hello | tr -dc [1-3]11112333➜  Documents$ echo 1111234444533hello | tr -s [0-9]123453hello➜  Documents$ echo helloworld | tr [:lower:] [:upper:]HELLOWORLDsed常用参数-d 删除-s 替换 g 全局-e 多个命令叠加-i 修改原文件(Mac下加参数 备份)示例➜  Documents$ cat file2one     1two     2three   3one1    4➜  Documents$ sed 2,3d file2one     1one1    4➜  Documents$ sed /one/d file2two     2three   3➜  Documents$ sed s/one/111/g file2111     1two     2three   31111    4#将one替换成111 并将含有two的行删除➜  Documents$ sed -e s/one/111/g -e /two/d file2111     1three   31111    4# ()标记(转义), \1 引用➜  Documents$ sed s/\([0-9]\)/\1.html/g file2one     1.htmltwo     2.htmlthree   3.htmlone1.html    4.html# 与上面一样  标记匹配的字符➜  Documents$ sed s/[0-9]/.html/g file2one     1.htmltwo     2.htmlthree   3.htmlone1.html    4.html➜  Documents$ cat mobile.csv13090246026180202780261852026102113110221022➜  Documents$ sed s/\([0-9]\{3\}\)[0-9]\{4\}/\1xxxx/g mobile.csv130xxxx6026180xxxx8026185xxxx1021131xxxx1022awk基本参数和语法NR 行号 NF 列数量$1 第1列 $2, $3...-F fs fs分隔符字符串或正则语法: awk BEGIN{ commands } pattern{ commands } END{ commands } 流程如下:执行begin对输入每一行执行 pattern{ commands } pattern 可以是 正则/reg exp/ 关系运算等处理完毕 执行 end示例➜  Documents$ cat file511  11 aa cc22  22 bb33  33 d11  1111  11#行号 列数量 第3列➜  Documents$ awk {print NR(NF): $3} file51(4): aa2(3): bb3(3): d4(2):5(2):#字符串分割 打印12列➜  Documents$ awk -Fxxxx {print $1 $2} mobile.csv130 6026180 8026185 1021131 1022#添加表达式➜  Documents$ awk $122 {print NR: $3} file52: bb3: d#累加1到36奇数偶数➜  Documents$ seq 36 | awk BEGIN{sum0; print question:} {print $1 ; sum$1} END{print ; print sum} | xargs | sed s/ //question: 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  32  33  34  35  36  666➜  Documents$ seq 36 | awk BEGIN{sum0; print question:} $1 % 2 1 {print $1 ; sum$1} END{print ; print sum} | xargs | sed s/ //question: 1  3  5  7  9  11  13  15  17  19  21  23  25  27  29  31  33  35  324➜  Documents$ seq 36 | awk BEGIN{sum0; print question:} $1 % 2 !1 {print $1 ; sum$1} END{print ; print sum} | xargs | sed s/ //question: 2  4  6  8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  342其他高级语法for, while 等 各种函数等本身awk是一个强大的语言可以掌握一些基本的用法。实际应用日志统计分析例如拿到一个nginx日志文件可以做很多事情比如看哪些请求是耗时最久的进而进行优化比如看每小时的PV数 等等。➜  Documents$ head -n5 std.nginx.log106.38.187.225 - - [20/Feb/2017:03:31:01 0800] www.tanglei.name GET /baike/208344.html HTTP/1.0 301 486 - Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) 360JK yunjiankong 975382 106.38.187.225, 106.38.187.225 - 0.000106.38.187.225 - - [20/Feb/2017:03:31:02 0800] www.tanglei.name GET /baike/208344.html HTTP/1.0 301 486 - Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) 360JK yunjiankong 975382 106.38.187.225, 106.38.187.225 - 0.00010.130.64.143 - - [20/Feb/2017:03:31:02 0800] stdbaike.bdp.cc POST /baike/wp-cron.php?doing_wp_cron1487532662.2058920860290527343750 HTTP/1.1 200 182 - WordPress/4.5.6; http://www.tanglei.name/baike 10.130.64.143 0.205 0.20510.130.64.143 - - [20/Feb/2017:03:31:02 0800] www.tanglei.name GET /external/api/login-status HTTP/1.0 200 478 - - 10.130.64.143 0.003 0.00410.130.64.143 - - [20/Feb/2017:03:31:02 0800] www.tanglei.name GET /content_util/authorcontents?count5offset0israndom1author9 HTTP/1.0 200 11972 - - 10.130.64.143 0.013 0.013上面是nginx的一个案例 例如希望找到top 10 请求的path:head -n 10000 std.nginx.log | awk {print $8 ,  $10} | grep ,404 | sort | uniq -c | sort -nr -k1 | head -n 10#orhead -n 10000 std.nginx.log | awk $10404 {print $8} |sort | uniq -c | sort -nr -k1 | head -n 10当然你可能一次不会直接处理成功一般会先少拿一部分数据进行处理看逻辑是否正常 或者你可以缓存一些中间结果.cat std.nginx.log | awk {print $8 , $10} | grep ,404 404.logsort 404.log | uniq -c | sort -nr -k1 | head -n 10再比如每小时请求数量请求耗时等等➜  Documents$ head -n 100000 std.nginx.log | awk -F: {print $1 $2} | cut -f3 -d/ | uniq -c8237 20170315051 20170416083 20170518561 20170622723 20170719345 201708其他实际案例 ip block案例: db数据订正背景: 因为某服务bug导致插入到db的图片路径不对需要将形如(安全需要已经将敏感数据替换) https://www.tanglei.name/upload/photos/129630//internal-public/shangtongdai/2017-02-19-abcdefg-eb85-4c24-883e-hijklmn.jpg 替换成 http://www.tanglei.me/internal-public/shangtongdai/2017-02-19-abcdefg-eb85-4c24-883e-hijklmn.jpg因为mysql等db貌似不支持直接正则的替换所以不能够很方便的进行写sql进行替换(就算支持直接改也有风险的还是先备份再修改留个“后悔药”)。当然将数据导出然后写 python 等脚本处理也是一种解决方案但如果用上面的命令行处理只需要几十秒即可完成。步骤:准备数据select id, photo_url_1, photo_url_2, photo_url_3 from somedb.sometable where photo_url_1 like https://www.tanglei.name/upload/photos/%//internal-public/% orphoto_url_2 like https://www.tanglei.name/upload/photos/%//internal-public/% orphoto_url_3 like https://www.tanglei.name/upload/photos/%//internal-public/%;替换原文件 一般在用sed替换的时候先测试一下是否正常替换。#测试是否OKhead -n 5 customers.csv | sed s|https://www.tanglei.name/upload/photos/[0-9]\{1,\}/|http://www.tanglei.me|g# 直接替换原文件 可以sed -i .bak 替换时保留原始备份文件sed -i  s|https://www.tanglei.name/upload/photos/[0-9]\{1,\}/|http://www.tanglei.me|g customers.csv拼接sql 然后执行awk -F {print update sometable set photo_url_1   $2, , photo_url_2   $3, , photo_url_3   $4,  where id   $1 ; } customers.csv  customer.sql#然后执行sql 即可其他play framework session老方式: 需要启play环境慢。新方式直接命令行解决。sbt project site consoleQuickimport play.api.libs._val sec  secret...secretvar uid  10086Crypto.sign(suid$uid sec.getBytes(UTF-8))  s-uid$uid➜  Documents$  ~/stdcookie.sh 97522918xxxxdf64abcfcxxxxc465xx7554dxxxx21e-uid97522➜  Documents$ cat ~/stdcookie.sh#!/bin/bash ##  cannot remove this lineuid$1hashecho -n uid$uid | openssl dgst -sha1 -hmac secret...secretecho $hash-uid$uid统计文章单词频率: 下面案例统计了川普就职演讲原文中词频最高的10个词。➜  Documents$ head -n3 chuanpu.txtChief Justice Roberts President Carter President Clinton President Bush President Obama fellow Americans and people of the world thank you.We the citizens of America are now joined in a great national effort to rebuild our country and restore its promise for all of our people. Together we will determine the course of America and the world for many many years to come.➜  Documents$ cat chuanpu.txt | tr -dc a-zA-Z  | xargs -n 1 | sort | uniq -c | sort -nr -k1 | head -n 20  65 the  63 and  48 of  46 our  42 will  37 to  21 We  20 is  18 we  17 America  15 a  14 all  13 in  13 for  13 be  13 are  10 your  10 not  10 And  10 American随机数比如常常新注册一个网站随机生成一个密码之类的。➜  Documents$ cat /dev/urandom | LC_CTYPEC tr -dc a-zA-Z0-9 | fold -w 32 | head -n 5cpBnvC0niwTybSSJhUUiZwIz6ykJxBvuVDP56NlHnugAt2yDySAB9HU2Nd0LlYCW0WEDzpjPop32T5STvR6K6SfZMyT6KvAIa9xBwBat7tJVaad279fOPdA9fEuDEqUdhTLrOiTH5FNP2nU3uflsjPUXJmfleI5c➜  Documents$ cat /dev/urandom | head -c32 | base64WoCqUye9mSXI/WhHODHDjzLaSb09xrOtbrJagG7Kfqc图片处理压缩可批量改图片大小等等 sips➜  linux-shell-more-effiency$ sips -g all which-whereis.png/Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png  pixelWidth: 280  pixelHeight: 81  typeIdentifier: public.png  format: png  formatOptions: default  dpiWidth: 72.000  dpiHeight: 72.000  samplesPerPixel: 4  bitsPerSample: 8  hasAlpha: yes  space: RGB  profile: DELL U2412M➜  linux-shell-more-effiency$ sips -Z 250 which-whereis.png/Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png  /Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png➜  linux-shell-more-effiency$ sips -g all which-whereis.png/Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png  pixelWidth: 250  pixelHeight: 72  typeIdentifier: public.png  format: png  formatOptions: default  dpiWidth: 72.000  dpiHeight: 72.000  samplesPerPixel: 4  bitsPerSample: 8  hasAlpha: yes  space: RGB  profile: DELL U2412M➜  linux-shell-more-effiency$ sips -z 100 30 which-whereis.png/Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png  /Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png➜  linux-shell-more-effiency$ sips -g pixelWidth -g pixelHeight which-whereis.png/Users/tanglei/Documents/linux-shell-more-effiency/which-whereis.png  pixelWidth: 30  pixelHeight: 100命令行处理 JSON 的神器随着 JSON 通用性常常需要处理 JSON 数据这里推荐这个命令行 JSON 处理神器 jq is a lightweight and flexible command-line JSON processor[1]其他还有一个综合应用可参考没想到 Shell 命令竟然还能这么玩| Shell 玩转大数据分析 推荐以下参考材料[1] JSON processor: https://stedolan.github.io/jq/[2] Linux工具快速教程: http://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html[3] Linux命令大全: http://man.linuxde.net/[4] Advanced Bash-Scripting Guide: http://tldp.org/LDP/abs/html/[5] UNIX环境高级编程: https://book.douban.com/subject/25900403
http://www.zqtcl.cn/news/844177/

相关文章:

  • 上海外贸网站推广方法爱站关键词
  • 网站页面框架设计企业建设流程
  • 网站做留言板如何推广小程序商城
  • 金融社区类网站建设鞍山58同城招聘网
  • 网站搭建策划书wordpress 屏蔽插件更新
  • 做网上购物网站杭州房产网官方网站
  • 汕头市网站建设分站公司站长网站大全
  • c2c的网站名称和网址深圳设计公司办公室
  • 建设银行企业版网站做微网站平台
  • 北京企业网站建设电话长沙建设工程信息网
  • 大型综合门户网站开发扁平化个人网站
  • 怎么做代理人金沙网站长沙 网站运营
  • 商城网站开发的目的和意义鲜花类网站建设策划书范文
  • 什么类型的公司需要做建设网站的iis7 网站权限设置
  • 信誉好的商城网站建设火车头 wordpress 发布
  • 龙岩做网站抚顺 网站建设
  • wordpress怎么设置广告位青州网站优化
  • 网站的备案编号高端网站建设谷美
  • 佛山智能网站建设地址设计资溪做面包招聘的网站
  • 荆州网站建设多少钱国外网站设计理念
  • 网站备案成功后wordpress文字加框
  • 中小企业怎么优化网站西安网站建设求职简历
  • 网站开发者模式怎么打开商城网站建设特点有哪些
  • 网站登录按纽是灰色的做网站的前途怎么样
  • 常州城乡建设局网站霸榜seo
  • 网站响应样式如何制作自己的公众号
  • 网站的友情连接怎么做免费收录链接网
  • 太原网站设计排名wordpress 设置语言
  • 南京模板建站定制网站网站单页面怎么做的
  • 宁夏住房建设厅网站石家庄最新今天消息