免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2902 | 回复: 1
打印 上一主题 下一主题

记录 [复制链接]

论坛徽章:
1
2015亚冠之大阪钢巴
日期:2015-07-02 09:26:01
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-06 16:13 |只看该作者 |倒序浏览
本帖最后由 qq493288977 于 2013-03-06 16:14 编辑

1.
    //数组(在sh中不支持,可以在ksh中使用):
    #!/usr/bin/ksh
    array=(item1 item2 item3)
    for ((i=0;i<${#array[@]};i++)); do
        if [ ${array[${i}]} == "item3" ]; then
            echo "match array[${i}]"
        fi
    done
    ###shell的数组只能以数字字符串为下标,awk的数组可以以任意字符串为下标
    RETURN[0]="a"
    RETURN[1]="b"
    RETURN[2]="c"
    RETURN[3]="d"
    RETURN[4]="e"
    RETURN[10]="f"
    RETURN[200]="g"
    RETURN[150]="h"
    echo "${#RETURN[@]}" #8
    echo "${RETURN[@]}"  #a b c d e f h g
    echo "${!RETURN[@]}" #0 1 2 3 4 10 150 200
2.
    kill -l可以列出系统的信号名称
    stty -a可以列出中断信号与键盘的对应
    在shell接收到signal list清单中的信号时,执行命令串commands:trap "commands" signal-list
    恢复信号的默认操作:trap - signal-list
    使trap命令忽视信号:trap " " signal-list
    在多核的环境下,top命令后按1可以看到各个核的具体信息
3.
    typeset -l clc_net_item=`grep "^${clc_net_type}\.${glc_net_sequence}\.+*" ${_IDEPLOY_CONFIG_FILE} | awk -F= '{print $1}'`
    clc_net_item=`echo ${clc_net_item}`
    awk后输出的内容是一行一行的。这里echo的作用是"将多行合并成一行",并用空格代替回车换行。
    awk后面接awk的输出结果也是一行一行的。
4.
    Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,
    fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。
    linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
    //***************************************************************//
    grep正则表达式元字符集(基本集):
    ^
    锚定行的开始 如:'^grep'匹配所有以grep开头的行。
    $
    锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
    .
    匹配一个非换行符的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。
    *
    匹配零个或多个先前字符如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
    []
    匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
    [^]
    匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
    \(..\)
    标记匹配字符,如'\(love\)',love被标记为1。
    \<
    锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
    \>
    锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
    x\{m\}
    重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
    x\{m,\}
    重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
    x\{m,n\}
    重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
    \w
    匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
    \W
    \w的反置形式,匹配一个或多个非单词字符,如点号句号等。
    \b
    单词锁定符,如: '\bgrep\b'只匹配grep。
    //***************************************************************//
    用于egrep和 grep -E的元字符(扩展集)
    +
    匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
    ?
    匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
    a|b|c
    匹配a或b或c。如:grep|sed匹配grep或sed
    ()
    分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
    x{m},x{m,},x{m,n}
    作用同x\{m\},x\{m,\},x\{m,n\}
    //***************************************************************//
    grep -c:只输出匹配的行数 -v:反转 查询不匹配的 -i:忽略大小写 -q=-s:不输出结果和错误 通过$?判断 -w:全字匹配
         -o:Print only the matched (non-empty) parts of a matching line
         -P/-G/-E/-F:Perl regular expression/ basic regular expression/ extended regular expression/ a list of fixed strings
5.
    用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的
6.
    awk -F',' '{i=1;while(i<=NF){print $i;i++}}' :awk '{}'里的内容和C语言一样。定义变量,分号隔开,条件判断后是{},{}里面语句用分号隔开
    ls -l | awk '{print $NF}'
    -F:filed  FS:filed seperate  NF:number of filed  RS:record seperate  NR:number of record  FNR:the current file's number of record
    OFS:output filed separator      ORS:output record separator
7.
    #shell 根据自己的规则分析和替换字符,然后再将这些字符传给sed、awk等,而awk、sed自己又有一套自己的字符识别和替换
    #!/usr/bin/ksh
    touch test.txt
    >test.txt
    cat << eof >> test.txt 2>/dev/null
    settle:x:3004:1004:settlement:/home/settle:/usr/bin/ksh
    settlementid:x:3050:100::/home/settlementid:/usr/bin/csh
    settlemente:x:3055:100::/home/settlemente:/usr/bin/csh
    settlement:x:3060:100::/home/settlement:/usr/bin/csh
    eof
    g_user_name="settlement"
    #全引用('')使得$是awk的meta 结果正确
    cat test.txt | grep ${g_user_name} | awk -F: '{print $6}'
    #部分引用("")使得$是shell的meta 结果错误
    cat test.txt | grep ${g_user_name} | awk -F: "{print $6}"
    #取消shell的$功能,这样awk识别了$ 结果正确
    cat test.txt | grep ${g_user_name} | awk -F: "{print \$6}"
    #awk -F: '{if($1==settlement) print $6}' 中间一对''关闭外面一对''的功能 结果错误
    cat test.txt | grep ${g_user_name} | awk -F: '{if($1=='${g_user_name}') print $6}'
    #awk -F: '{if($1=="settlement") print $6}' 中间一对''关闭外面一对''的功能 结果正确
    cat test.txt | grep ${g_user_name} | awk -F: '{if($1=='\"${g_user_name}\"') print $6}'
    #awk -F: '{if($1==settlement) print $6}' 结果错误
    cat test.txt | grep ${g_user_name} | awk -F: "{if(\$1==${g_user_name}) print \$6}"
    #awk -F: '{if($1=="settlement") print $6}' 结果正确
    cat test.txt | grep ${g_user_name} | awk -F: "{if(\$1==\"${g_user_name}\") print \$6}"
    #用-v参数,在进入awk代码段前,声明外部变量,从而避免在awk代码中使用$来引用外部变量
    cat test.txt | grep ${g_user_name} | awk -F: -v item=${g_user_name} '{if($1==item) print $6}'
8.
    set -x:在执行时显示所有命令和它们的参数
    set -n:读所有的命令,但不执行它们,语法检查
    set -v:在读时显示所有的行
    typeset -i2 bin=65      #2进制
    typeset -i8 bin=65      #8进制
    typeset -i16 bin=65     #16进制
    或者调用awk的printf
9.
    awk '{a[$1]=$2"_"a[$1]} END{for (i in a) print i,a}' list.tmp
10.
    if [ "X${gciv_is_exist}" = "X" ] //防止${gciv_is_exist}为空值而导致判断成功
    函数调用和一定要检查调用的结果
11.
    eval命令:可用于动态(生成和执行)代码, 是生成代码并且执行生成的代码
    命令续行符'\'后面不能接内容
12.
    usermod -g / -G
    g--添加有且只有一个primary group
    G--添加有且可以有N个Secondary Group
13.
    dd (duplicate disk): convert and copy a file
14.
    在ksh中``和$()是有区别的,如
    ref_tmp_name=l_settlementdb_user_name[0]
    lcl_tmp_name=$(echo ${ref_tmp_name} | sed 's/\[/\\[/' | sed 's/\]/\\]/)
    echo ${lcl_tmp_name}#输出l_settlementdb_user_name\[0\]
    decode=`echo ${decode} | sed 's/\//\\\//g'` #失败
    decode=$(echo ${decode} | sed 's/\//\\\//g') #成功
    lcl_tmp_name=`echo ${ref_tmp_name} | sed 's/\[/\\[/' | sed 's/\]/\\]/`
    echo ${lcl_tmp_name}#输出l_settlementdb_user_name[0]
15.  正则表达式
    (?<=<item>).*?(?=</item>)
    这里使用宽度断言和勉强模式重复(只有prel regular expression支持)。
    (?<=<item>)表示匹配内容的左边满足表达式<item>,
    (?=</item>)表示匹配内容的右边满足表达式<\item>,
    .*? 表示是勉强模式匹配(即匹配最少的内容),之所以使用勉强模式匹配是因为,如果使用贪婪模式则会出现和您的表达式出现的同样问题。但这个表达式也存在有bug
    如: (只有Linux机器可用)
    echo "asdkjh//nvakdhf//aslkdfno//alskdfj;//al;sdkjf" | grep -oP '(?<=//).*(?=//)'
    输出:
    nvakdhf//aslkdfno//alskdfj;
    echo "asdkjh//nvakdhf//aslkdfno//alskdfj;//al;sdkjf" | grep -oP '(?<=//).*?(?=//)'
    输出:
    nvakdhf
    aslkdfno
    alskdfj;
16.
    跨行匹配的方法:1.awk   2.将文件的回车换行替换成特定字符,变成一行,然后用grep的 -oP   3.sed
17.
    查看目录下所占空间的大小  du -sh ./
    查看disk的空间占有情况    df -h ./
    查看挂载的物理盘          fdisk -l
?18.
    每一个.sh脚本文件的调用都是启用一个子shell,该子shell继承父shell的环境变量。当.sh文件执行完成时,子shell结束生命周期。
19.
    在使用sed时,如果使用了变量,并且变量是一个目录变量(即有"/"),要将变量先进行处理在传入。将变量中所有的"/"替换成"\/",因为"/"是sed的保留字符。
20.
    在用sourec或者. 引用文件时,最好用绝对路径引用,而不要用相对路径。 因为当存在两层以上的引用时,相对路径可能出错。
21.
    在使用grep时一定要小心,一定要确保能准确匹配到结果。 使用全字匹配或者用特殊字符界定来避免。
    未完待续符'\'后不能接任何字符。
22.
    写出可移植的shell脚本
    AIX和Linux有很大的区别,操作上的区别:AIX下不要使用键盘的方向键,这些键和Linux下的功能不同
    AIX的sed没用-i选项。
23.
    #生成随机密码
    MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
    LENGTH="8"
    while [ "${n:=1}" -le "$LENGTH" ]
    do
        PASS="$PASS${MATRIX:(($RANDOM%${#MATRIX})):1}"
        let n+=1
    done
    echo "$PASS"
    shell字符串的截取的问题
    ${str:begin:len},且支持表达式,如:${str:3:(6-3)}
    ${varible##*string} 从左向右截取最后一个string后的字符串
    ${varible#*string}从左向右截取第一个string后的字符串
    ${varible%%string}从右向左截取最后一个string后的字符串
    ${varible%string}从右向左截取第一个string后的字符串
    ${file:0:5}:提取最左邊的 5 個字節:/dir1
    ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2
    我們也可以對變量值裡的字串作替換:
    ${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
    ${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
    SHELL中每个程序都有他自己的特殊字符,如${}、SED、AWK、及各种正则表达式等。
24.
    find ./ -type f | xargs -n 50 | while read line ;do tar cvf ../`date +%H%M%S`_$RANDOM.tar  $line;done
    lsof -i:1521    #查看是那个进程使用了1521端口
    lsof -p 1521    #查看1521进程的信息,包括他使用了的端口(如果使用了)
25.
    su - oracle -c "echo $ORACLE_HOME" 得不到oracle_home
    而su - oracle -c "echo \$ORACLE_HOME" 才能正确得到oracle home的值
26.
    #!/bin/bash
    a=`echo $0 | sed 's/..\(...\).*/\1/'`
    for i in `w|awk -v b=$a 'NR>2{if($NF !~ b) print $2}'`
    do
        echo $i
        fuser -k /dev/$i
    done
27.
    csh和bash、ksh的重定向语法格式不同。csh的格式为:
    如果,oracle用户是csh的,当执行su - oracle -c "which sqlplus / as sysdba 2>&1" 会出错。
    另外,如果用oracle用户执行的脚本中有用source或者.引入别的文件,而文件里如果有重定向的操作也会出错。
28.
    解释性语言(如各种脚本语言,shell、python,它们是读取一条命令执行一条命令)和编译行语言的一个区别。解释性语言的作用域(对应高级语言的命名空间)
    或者说变量是以文件为范围的,如果你调用的函数不在你当前的文件中将不能使用当前文件的变量。高级语言变量的作用域可能更小,命名空间要大些。
29.
    su和sudo是不同的两个命令。/etc/sudoers是为sudo命令配置的。
    sysomc    ALL=(ALL) NOPASSWD: /bin/su:表示sysomc用户在ALL(即所有的)子网中执行sudo命令时可以不输密码得以ALL(即所有用户)的身份使用su命令。
30.
    在使用mv命令对一个目录进行改名时,先确保dest目录不存在再进行改名。否则,效果不是改名而是移动目录。
31.
    s/@f1(\(.*\))/\\fB\1\\fR/g
    该正则表达式匹配“@f1(.*)”,并使用 \( 和 \) 保存圆括号中的任意内容。在替换部分,保存的匹配部分用“\1”回调。

论坛徽章:
0
2 [报告]
发表于 2014-05-18 21:53 |只看该作者
New Dumps ,100% pass ,VCAC510 - VCA-Cloud
New Dumps ,100% pass ,VCAD510 - VCA-DCV
New Dumps ,100% pass ,VCAW510 - VCA-WM
New Dumps ,100% pass ,VCI510 - VMware Certified Professional 5 -Data Center Virtualization for Instructors

100% guaranteed pass ,Once failed 100%refund

The Fastest and Guaranteed Way toCertify Now

http://www.eliteguides.cn

certification,certify,certified,braindumps,braindump,dumps,exam,exams,studyguides,studyguide,test,tests,testing,training,free,book,pdf,question,questions

New Dumps ,100% pass ,VCI550 - VMware CertifiedInstructor on vSphere 5
New Dumps ,100% pass ,VCP410 - VMware Certified Professional 4 -Data Center Virtualization
New Dumps ,100% pass ,VCP410-DT - VMware Certified Professional 4 -Desktop
New Dumps ,100% pass ,VCP510 - VMware Certified Professional 5 -Data Center Virtualization
New Dumps ,100% pass ,VCP510-DT - VMware View
New Dumps ,100% pass ,VCP510PSE - VMware Certified Professional 5 -Data Center Virtualization PSE
New Dumps ,100% pass ,VCP511 - VMware Certified Professional 5 -Data Center Virtualization - Beta Exam

100% guaranteed pass ,Once failed 100%refund

The Fastest and Guaranteed Way toCertify Now

http://www.eliteguides.cn

certification,certify,certified,braindumps,braindump,dumps,exam,exams,studyguides,studyguide,test,tests,testing,training,free,book,pdf,question,questions

New Dumps ,100% pass ,VCP550 - VMware CertifiedProfessional - Data Center Virtualization
New Dumps ,100% pass ,VCP550PSE - VMware Certified Professional -Data Center Virtualization
New Dumps ,100% pass ,VCPC510 - VMware Certified Professional -Cloud
New Dumps ,100% pass ,VCPC550 - VMware Certified Professional -Cloud
New Dumps ,100% pass ,VCPD510 - VMware Certified Professional -Desktop
New Dumps ,100% pass ,VCPVCD510 - VMware Infrastructure as aService Exam
New Dumps ,100% pass ,VCIA510 - VMware Certified AdvancedProfessional - Cloud Infrastrucure Administration
New Dumps ,100% pass ,VCID510 - VMware Certified AdvancedProfessional - Cloud Infrastructure Design
New Dumps ,100% pass ,VDCA410 - VMware Certified AdvancedProfessional 4 - Data Center Administration

100% guaranteed pass ,Once failed 100%refund

The Fastest and Guaranteed Way toCertify Now

http://www.eliteguides.cn

certification,certify,certified,braindumps,braindump,dumps,exam,exams,studyguides,studyguide,test,tests,testing,training,free,book,pdf,question,questions

New Dumps ,100% pass ,VDCA510 - VMware CertifiedAdvanced Professional 5 - Data Center Administration
New Dumps ,100% pass ,VDCA550 - VMware Certified AdvancedProfessional - Data Center Administration Exam
New Dumps ,100% pass ,VDCD410 - VMware Certified AdvancedProfessional 4 - Data Center Design
New Dumps ,100% pass ,VDCD510 - VMware Certified AdvancedProfessional 5 - Data Center Design
New Dumps ,100% pass ,VDTA510 - VMware Certified AdvancedProfessional - Desktop Administration Beta
New Dumps ,100% pass ,VDTD510 - VMware Certified AdvancedProfessional - Desktop Design

100% guaranteed pass ,Once failed 100%refund

The Fastest and Guaranteed Way toCertify Now

http://www.eliteguides.cn

certification,certify,certified,braindumps,braindump,dumps,exam,exams,studyguides,studyguide,test,tests,testing,training,free,book,pdf,question,questions


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP