• 常用的shell命令整理


    转:http://blog.chinaunix.net/uid-23659649-id-3902267.html

     工作快一年了,shell命令也玩了一年了。还是有点积累的,下面是本人常用的。
    
    1pwd | xargs -i basename {}   获取当前所在目录的名称
    
    2ps -ef|grep -w  indexd_admin_mcd.pid|grep -v grep|wc -l
    
    ps -ef 查找进程    grep -v  查找不存在  grep -w 强制 PATTERN 仅匹配整个词
    
    查找进程中为 indexd_admin_mcd.pid的进程,并且排除掉grep的进程。最后计数,这样进程的个数。
    
    3if [ $cn -lt 1 ]   如果cn的值< 1
    
    4、ulimit  -c   最大的core文件的大小,以blocks为单位。    ulimit -c  unlimited  对生成的core文件大小不进行限制。
    
    5kill
    
    kill -9 pid,是不顾后果的强制终止(如果的你的速度够快,有时候是和ctrl+c是一样的)
    
    kill -15 pid,是先关闭和其有关的程序,再将其关闭
    
    6、crontab
    
    crontab -l    显示crontab中的所有的内容
    
    crontab filename     用新的文件代替crontab里的所有的内容。
    
    所有想在crontab中添加新的自动运行的进程,则先用crontab -l >temp,先将crontab中所有的内容全部重定向到一个新的文件中,然后在这个temp文件后>>追加内容。最后用crontab temp,用temp的文件内容替代crontab的所有的内容。
    
    crontab文件的格式:分  时  日  月  星期
    
    7、$()与‘’的意思相同,获取shell执行后的值,但是用$()会更加的直观。  ${},{}中经常放的是变量,这样在${}就可以精确后面的变量的范围了。
    
    ${file#*/}:拿掉第一条/及其左边的字符串: dir1/dir2/dir3/my.file.txt
    
    ${file##*/}:拿掉最后一条/及其左边的字符串:my.file.txt
    
    ${file#*.}:拿掉第一个.及其左边的字符串:file.txt
    
    ${file##*.}:拿掉最后一个.及其左边的字符串:txt
    
    ${file%/*}:拿掉最后条/及其右边的字符串:/dir1/dir2/dir3
    
    ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
    
    ${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
    
    ${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
    
    8、运算
    
    (( A )) 做运算的,A是任何的运算的表达式 A中的变量可用$来替换,也可以不用。
    
     9、if  判断条件中 $#   和$? 是什么意思?
    
    $#  获取参数的数目my.sh p1 "p2 p3" 为例   $#可得到2
    
    $@ 与 $* 均可获得所有的参数 my.sh p1 "p2 p3" p4 $@ 与 $* 得到p1 p2 p3 p4
    
    但是,如果置于 soft quote 中的话:
    
    "$@" 则可得到 "p1" "p2 p3" "p4" 这三个不同的词段(word)
    
    "$*" 则可得到 "p1 p2 p3 p4" 这一整串单一的词段。
    
    10、在 shell command line 中可用 $? 这个变量得到最新的一个 return value ,也就是刚结束的那个行程传回的值。
    
    * 若在 script 里,用 exit RV 来指定其值,若没指定,在结束时以最后一道命令之 RV 为值。
    
    * 若在 function 里,则用 return RV 来代替 exit RV 即可。
    
    11、重定向输出
    
    * 2>&1 就是将 stderr 并进 stdout 作输出
    
    * 1>&2 或 >&2 就是将 stdout 并进 stderr 作输出
    
    ls my.file no.such.file 2>/dev/null
    
    * 若将 FD1 跟 FD2 转到 /dev/null 去,就可将 stdout 与 stderr 弄不见掉。
    
    * 若将 FD0 接到 /dev/null 来,那就是读进 nothing 。
    
    >/dev/null 2>&1   单纯只跑程序,不想看到任何输出结果  除了用 >/dev/null 2>&1 之外,你还可以&>/dev/null
    
    12、tee复制
    
    所谓 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去。
    
    cm1 | cm2 | tee file | cm3
    
    在预设上, tee 会改写目标档案,若你要改为增加内容的话,那可用 -a 参数达成。
    
    凡举 cat, more, head, tail, wc, expand, tr, grep, sed, awk, ... 等等文字处理工具,搭配起 pipe line 来使用
    
    13、shell程序的参数
    
      $0   当前程序的执行名字
    
      $n   当前程序的第n个参数值,n=1..9
    
      $*   当前程序的所有参数
    
      $#   当前程序的参数个数
    
      $$   当前程序的PID
    
      $!   执行上一个指令的PID
    
      $?  执行上一个指令的返回值
    
    14、date显示时间
    
    date '+%F %T'    2012-08-27 15:52:54   等同于date +"%Y-%m-%d %T"
    
    date -d '-1 days' +"%Y%m%d"    获取前一天的时间
    
    15、if添加的判断的另一个方式
    
    判断参数的个数
    01     if (( $# < 1 ))
    02     then
    03         echo "Usage: $0 worker_id"
    04         exit 1
    05     fi
    06     if (( $# == 1 ))
    07     then
    08         WORKER_ID=$1
    09         MAX_WORKER_ID=$WORKER_ID
    10     elif (( $# > 1 ))
    11     then
    12         echo "Usage: $0 [worker_id]"
    13         exit 1
    14     else
    15         echo "worker count $WORKER_CNT"
    16     fi
    
    这样写if的条件的判断就和c语言的一样了,条件运算
    
    16、ipcs  查看共享内存的使用的情况
    
    ipcrm -M  shmid  关闭共享内存
    
    17、make -p
    
    即使data这个文件夹不存在,也可以创建他的子目录,当然同同时,他也被创建。
    
    mkdir -p /data/coredump
    
    18、head  tail
    
    head 是显示一个文件的内容的前多少行;
    
    head  -n  行数值  文件名;
    
    比如我们显示/etc/profile的前10行内容,应该是:
    
    [root@localhost ~]# head -n 10 /etc/profile
    
    tail 工具,显示文件内容的最后几行,用法比较简单;
    
    tail   -n  行数值  文件名;
    
    比如我们显示/etc/profile的最后5行内容,应该是:
    
    [root@localhost ~]# tail  -n 5 /etc/profile
    
    更多:http://blog.csdn.net/carzyer/article/details/4759593
    
    19、创建软链接
    
    ln -sf  a  b     b链向a
    
    20、export  执行的路径
    
    export LD_LIBRARY_PATH=./
    
    21、if  [ expr ];   then … fi
    
    -n str
        
    
    字符串 str 是否不为空
    
    -z str
        
    
    字符串是否为空
    
    str1  = str2
        
    
     str1是否与 str2 相同
    
    str1 != str2
        
    
     str1是否与 str2 不同
    
    int1 -eq int2
        
    
    等于
        
    
    int1 -le  int2
        
    
    小于等于
    
    int1 -ge int2
        
    
    大于等于
        
    
    int1 -lt   int2
        
    
    小于
    
    int1 -gt  int2
        
    
    大于
        
    
    int1 -ne int2
        
    
    不等于
    
    -b
        
    
    是否块文件
        
    
    -p
        
    
    文件是否为一个命名管道
    
    -c
        
    
    是否字符文件
        
    
    -r
        
    
    文件是否可读
    
    -d
        
    
    是否一个目录 *
        
    
    -s
        
    
    文件的长度是否不为零
    
    -e
        
    
    文件是否存在 *
        
    
    -S
        
    
    是否为套接字文件
    
    -f
        
    
    是否普通文件 *
        
    
    -x
        
    
    文件是否可执行,则为真
    
    -g
        
    
    是否设置了文件的 SGID 位
        
    
    -u
        
    
    是否设置了文件的 SUID 位
    
    -G
        
    
    文件是否存在且归该组所有
        
    
    -w
        
    
    文件是否可写,则为真
    
    -k
        
    
    文件是否设置了的粘贴位
        
    
    -t fd
        
    
    fd 是否是一个与终端相连的打开的文件描述符(fd 默认为 1)
    
    -O
        
    
    文件是否存在且归该用户所有
    
    22、for循环
    1     for((i=1;i<=100;++i))
    2     do
    3         echo $i
    4     done
    
    23、对一行的第一列进行排重,只保留最新的数据。awk的内置的数组进行排重,排重之后在sort
    01     filename=$1
    02     awk '
    03     {
    04         cont[$1] = $0;
    05     }
    06     END {
    07         for (key in cont)
    08         {
    09         print cont[key];
    10         }
    11     }' $filename | sort -k1
    
    24、显示上次文件的创建的时间
    
    stat -c %Y $file
    
    25、while循环
    
    http://www.linuxidc.com/Linux/2011-02/32239p2.htm
    
    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html
    
    26、查看当前目录下的文件的大小
    
    du -h --max-depth=1
    
    27、# nohup  ./pso > pso.file 2>&1 &
    
    解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。
    
    当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。
    
    http://www.cnblogs.com/xianghang123/archive/2011/08/02/2125511.html
    
    28、将大文件分割为指定大小的文件
    
    http://huangyandong.blog.51cto.com/1396940/690276
    
    split -b 1m 20121018_quey.txt
    
    29、对windows上传的文件进行处理,处理特殊字符
    
    dos2unix over_wap_query_seed.20121023.txt
    
    30、将window的^M回车符号换成linux的
    
    tr -s "[
    ]" "[
    ]" < log.get
    
    tr -s "[15]" "
    " < log.get
    
    31、在securecrt软件上显示用户名和ip
    
    echo -ne "e]2;${USER}@$(/sbin/ifconfig eth1 | awk -F"[ :]+" '/inet addr/{print $4}')a"
    
    如果你是root用户,把下面上面的那句命令行追加到 /etc/profile
    
    如果你是个人账户,在自己的家目录新建一个 .profile 文件,把命令行追加到.profile文件
    
    32、shell保留两位小数
    
    echo "scale=2; 1*100/3" | bc
    
    33、去掉变量的最后一个字符
    
    AA=abcd
    
    echo $AA | cut -c 1-$(expr ${#AA} - 1)
    
    34、linux下如何查询已知进程运行目录
    
     ls -l /proc/PID/cwd
    
    最后为大家分享两个pdf文档,这是我入门学习shell时候用的。
  • 相关阅读:
    数据库连接 执行 select 语句
    cygwin完全安装步骤方法(组图)
    Android 8位颜色值和6位颜色值的区别
    执行带参数的sql语句
    [Android环境搭建] 申请Android Map API Key
    调用存储过程
    [Android]应用语言切换的三种方法
    JS 的魅力
    Android工程 引用另外一个Android工程
    使用XML Security验证XML文件的数字签名
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3341225.html
Copyright © 2020-2023  润新知