Thursday, July 14, 2016

linux命令记录

1.
  1. $ while true; do date >> date.txt ; sleep 5 ; done &
  2. avi@deb:~$ (cd /home/avi/Downloads/)
  3. ctrl+l 效果等于clear

排序

假设先按第6列数字倒序,再此基础上再按第5列顺序排列:
sort -k6nr -k5n file.txt
注意不能用以下排序方法:
sort -k6 -nr -k5 -n file.txt
这样最后结果还是按第五列排了

linux 如何显示一个文件的某几行(中间几行)

【一】从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000

【二】显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000

*注意两种方法的顺序

分解:
    tail -n 1000:显示最后1000行
    tail -n +1000:从1000行开始显示,显示1000行以后的
    head -n 1000:显示前面1000行

【三】用sed命令

 sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行


判断是否为空


判断一个脚本中的变量是否为空,我写了一个这样的shell脚本:

  1. #!/bin/sh
  2. #filename: test.sh
  3. para1=
  4. if [ ! -n $para1 ]; then
  5.  echo "IS NULL"
  6. else
  7.  echo "NOT NULL"
  8. fi

然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL,很是奇怪,最后,通过查询一些资料发现,可以通过如下方式判断一个shell变量是否为空:
1. 变量通过" "引号引起来
      如下所示:,可以得到结果为 IS NULL.
  1. #!/bin/sh
  2. para1=
  3. if [ ! -n "$para1" ]; then
  4.  echo "IS NULL"
  5. else
  6.  echo "NOT NULL"
  7. fi

2. 直接通过变量判断
      如下所示:得到的结果为: IS NULL
  1. #!/bin/sh
  2. para1=
  3. if [ ! $para1 ]; then
  4.  echo "IS NULL"
  5. else
  6.  echo "NOT NULL"
  7. fi

3. 使用test判断
    得到的结果就是: dmin is not set!  
  1. #!/bin/sh
  2. dmin=
  3. if test -z "$dmin"
  4. then
  5.  echo "dmin is not set!"
  6. else
  7.  echo "dmin is set !"
  8. fi


4. 使用""判断
  1. #!/bin/sh
  2. dmin=
  3. if [ "$dmin" = "" ]
  4. then
  5.  echo "dmin is not set!"
  6. else
  7.  echo "dmin is set !"
  8. fi

#!/bin/bash
a="zzz"
if [[ "$a" = "" ]]
then
echo $a empty
else
echo $a no empty
fi

if [ -z "$VAR" ] ; then
command
fi

先写一些基本语法:

1、字符串判断

str1 = str2       当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1           当串str1为非空时为真

2、数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真

3 文件的判断

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

3、复杂逻辑判断

-a         与
-o        或
!        非


grep精准匹配


面试时问到一个问题,要精确的找出进程名为abc,判断进程的数量是否在3-5之间,如果不在,就纪录下相关的信息
用ps aux | grep abc | grep –v grep | wc –l 统计出数量再进行判断
但是忽略了一点,如果是有进程名为abcd,abcde等有包含"abc"字符的,那么判断将会不准备,如果精确的匹配到abc呢,当时不知道,只能很诚实的回答,不清楚
其实答案很简单,用grep –w "abc" 或者是grep "\<abc\>"都可以实现
-w, --word-regexp         强制 PATTERN 仅完全匹配字词
纪录一下


隔几秒执行一条命令 ,监视器
watch -dn 'wc -l log.txt'

查看磁盘使用率
df -TH

更改权限
sudo chown -R yonghuming wenjianjia

计算md5
md5sum
查看文件大小
df -Th 用户查看一级目录大小
du -h 查看文件夹大小
du -h --max-depth=1 查看当前文件夹下文件夹大小
ls -lh 查看文件大小

#!/bin/bash
echo `dirname $0`/mac_open_hour.csv
查找文件,并且打印文件并匹配
find 20170611*.log | xargs cat |grep -E '22011716|2285906|1768039' > 1206_20170611.log
解压多个文件到指定目录
find 20170704*.zip| xargs -n1 unzip -d /haha/temp_log

grep使用http://www.cnblogs.com/luojinping/p/3380771.html

stat file 查看文件修改时间等


50
down voteaccepted
What's wrong with the good old,
for pid in $(ps -ef | grep "some search" | awk '{print $2}'); do kill -9 $pid; done
There are ways to make that more efficient,
for pid in $(ps -ef | awk '/some search/ {print $2}'); do kill -9 $pid; done
and other variations, but at the basic level, it's always worked for me.



删除特定的文件
find . -type f -name '* *' -delete
ll | egrep '\(*\)' | xargs -0 rm



No comments:

Post a Comment