[TOC]
date
1、命令:date
2、命令功能:date 可以用来显示或设定系统的日期与时间。
3、命令参数
1 | -d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; |
4、日期格式字符串列表
1 | %H 小时(以00-23来表示)。 |
5、实例
格式化输出:
1 | date +"%Y-%m-%d" |
输出昨天日期:
1 | date -d "1 day ago" +"%Y-%m-%d" |
2秒后输出:
1 | date -d "2 second" +"%Y-%m-%d %H:%M.%S" |
传说中的 1234567890 秒:
1 | date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S" |
普通转格式:
1 | date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S" |
apache格式转换:
1 | date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S" |
格式转换后时间:
1 | date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S" |
加减操作:
1 | date +%Y%m%d #显示前天年月日 |
设定时间:
1 | date -s #设置当前时间,只有root权限才能设置,其他只能查看 |
检查一组命令花费的时间:
1 | #!/bin/bash |
tr
tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
语法
1 | tr(选项)(参数) |
选项
1 | -c或——complerment:取代所有不属于第一字符集的字符; |
参数
- 字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
- 字符集2:指定要转换成的目标字符集。
实例
将输入字符由大写转换为小写:
1 | echo "HELLO WORLD" | tr 'A-Z' 'a-z' |
‘A-Z’ 和 ‘a-z’都是集合,集合是可以自己制定的,例如:’ABD-}’、’bB.,’、’a-de-h’、’a-c0-9’都属于集合,集合里可以使用’\n’、’\t’,可以可以使用其他ASCII字符。
使用tr删除字符:
1 | echo "hello 123 world 456" | tr -d '0-9' |
将制表符转换为空格:
1 | cat text | tr '\t' ' ' |
字符集补集,从输入文本中将不在补集中的所有字符删除:
1 | echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n' |
此例中,补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。
用tr压缩字符,可以压缩输入中重复的字符:
1 | echo "thissss is a text linnnnnnne." | tr -s ' sn' |
巧妙使用tr做数字相加操作:
1 | echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ] |
删除Windows文件“造成”的’^M’字符:
1 | cat file | tr -s "\r" "\n" > new_file |
tr可以使用的字符类:
1 | [:alnum:]:字母和数字 |
使用方式:
1 | tr '[:lower:]' '[:upper:]' |
cut
cut
命令是用来从文本文件中移除“某些列”的经典工具。在本文中的“一列”可以被定义为按照一行中位置区分的一系列字符串或者字节,或者是以某个分隔符为间隔的某些域。
选项
1 | -b:仅显示行中指定直接范围的内容; |
实例
1 | cat test.txt |
使用 -f 选项提取指定字段:
1 | cut -f 1 test.txt |
1 | cut -f2,3 test.txt |
–complement 选项提取指定字段之外的列(打印除了第二列之外的列):
1 | cut -f2 --complement test.txt |
使用 -d 选项指定字段分隔符:
1 | cat test2.txt |
3.指定字段的字符或者字节范围
1 | cut命令可以将一串字符作为列来显示,字符字段的记法: |
1 | cat test.txt |
打印第1个到第3个字符:
1 | cut -c1-3 test.txt |
打印前2个字符:
1 | cut -c-2 test.txt |
打印从第5个字符开始到结尾:
1 | cut -c5- test.txt |
jq
jq命令允许直接在命令行下对JSON进行操作
包括分片、过滤、转换等
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
基于javascript(Standard ECMA-262 3rd Edition - December 1999)的一个子集
JSON 数据的书写格式是: 名称/对象。
JSON的结构基于两点
“名称/值”的集合 ,在不同的语言中,它可以被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等 .
值的有序列表 多数语言中被理解为数组(array)
JSON的基础结构说明
对象是属性、值的集合。一个对象开始与”{” ,结束于”}”。每一个属性名和值间用”:”分隔。每个属性间用”,”分隔。
值可以是字符串,数字,逻辑值,数组,对象,null。
数字:整数或浮点数
字符串:在双引号中
逻辑符:true和false
数组:在方括号中
对象:在花括号中
null: 代表空
jq命令的格式
1 | jq [options] filter [files] |
filter:
1 | . : 默认输出 |
示例
用作示例的JOSN文件。
1 | [{"hostCompany":"Beijing Autelan Technology","hostModel":"CS-VIC-2000-C","hostsn":"01010730b12014A00477","mac":"00:1F:64:CE:F3:8E","cpuModel":"MIPS 74Kc V4.12","cpuSN":"000000","memoryModel":"abcdefg","memorySN":"000000","boardSN":"01010730b12014A00477","networkCardMac":"00:1F:64:CE:F3:8F","lowFreModel":"AR9344","lowFreSN":"000000","hignFreModel":"AR9582","hignFreSN":"000000","gpsModel":"abcdefg","gpsSN":"000000","MEID_3g":"A000004E123ABD2","Company_3g":"ZTEMT INCORPORATED","modelOf3g":"MC271X","snOf3g":"A000004E123ABD2","iccid":"89860314400200885980","Operators":"CTCC","hardVersion":"1.20","firmwareVersion":"1.0.6.29"}] |
1 | $ jq . apinfo.json |
1 | jq '.[]' apinfo.json |
1 | $ jq -r .[].mac apinfo.json |
xargs
xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name “*.log” | xargs rm -rf * 就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。
1 | [root@jstuz6zw4s2vwp tmp]# find . -type f -name "*.log" | xargs -i cp {} /tmp/k/ |
1 | [root@jstuz6zw4s2vwp tmp]# find . -type f -name "*.log" | xargs -I {} cp {} /tmp/n/ |
结论:
加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
加 -I 参数 需要事先指定替换字符。
其它示例
1 | echo --help | xargs cat |
1 | ls *.txt | xargs -i mv {} /mnt |
1 | echo "ni|shi|shui" | xargs -d"|" -n2 |
1 | [root@b test]# find . -name "*.txt" -exec tar -cf a.tar {} \; |
ulimit
ulimit 是一个计算机命令,用于shell启动进程所占用的资源,可用于修改系统资源限制
常用参数
1 | -H 设置硬资源限制. |
常用命令
1.查看最大的标示符
1 | ulimit -n |
2.调整文件描述符
1 | ulimit -SHn 65535 临时修改 S:soft limit H:Hard limit |
3.推荐控制文件描述符大小
1 | 更改: <domain> <type> <item> <value> |