linux常用命令

  • datesed/awk
  • find
  • grep
  • watch/free/pidstat
  • 读取二进制文件内容
  • tar
  • tee
  • ls -lrt/stat


date
$ date '+%Y-%m-%d'  -d  '-1 day'    显示前一天

sed / awk
$ sed 's/[0-9][0-9]$/&.5/g'  file   
$ sed "/$name/,\}/d"  file    在sed中使用shell命令时须使用双引号
$ sed 's/*/*/'   此时 / 有用而如下
$ sed "s/^/'pwd'//g"  file  此时 / 无用,应该写成 sed "s:^:'pwd'/" file
$ echo '1602 1604 1612 1614 16120' | sed -r 's/.*(1612)*/\1/'

awk(按行处理文件内容,取分隔符中的列值)
其中元字符 +和? 只适用于awk
~ 匹配正则表达式
$ awk '{ if($4 ~ /brown/) print}'

备注: 在字符数组内部反斜线没有任何意义,所以此时它并不是一个转义字符,应用其他无字符代替/,例如#或者:

find
$ find ./ -name *.xml | xargs grep "ErrorMsg" 
$ find ./ -name *.xml -print  |  xargs -O  grep  "ErrorMsg"
备注:
首先find查找的以换行符来区分,不区分类似于 "copy of file.xml" 这个的文件,但是xargs以空格或者空白
字符(空格、tab键、换行符)来区分文件,于是"copy of file.xml"被xargs解释为 copy、of、file.xml 三个文
,这样结果会被报"No such file or directories!!"

grep
查找文件或者文件中的字符串时,返回的都是包含这个字符串的完整的字符串
$ echo "hello bird" | grep "e"    如下显示
hello bird    查找包含e的字符串,执行成功,所以 $?=0

备注:
find 原来查找文件,而grep更多原来查找文件内容


watch/free/pidstat
$ watch -d -n 'ls -lh'
$ free -m -s 2    每两秒打印系统内存信息
$ pidstat -p [进程号] [秒数] [次数]  -r/-d/-w

读取二进制文件内容
$ hexdump
$ vim -b file
$ xxb file
$ objdump od file

tar
tar  zcvf  *.tar.gz  fileDir    打包文件并且压缩

tee
$ who | tee who.txt    把一个副本输送到标准输出,并且另一个副本拷贝到相应的文件中

ls -lrt/stat
$ stat file   查看文件状态,包括修改时间和访问时间,改变时间
修改时间: 编辑文件并对文件内容修改一次,ls -l查看的是修改时间; ls -ul 查看的是访问时间
访问时间: 读取一次文件内容,该文件内容将会发生改变,比命令more/less等
改变时间: 更改文件的属性便会更新该时间,比如调用chmod等

未完待续。。。


09-05 01:30