Chinaunix
标题:
记录
[打印本页]
作者:
qq493288977
时间:
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”回调。
作者:
gzcarlo
时间:
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 ,
V
CI550 - 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 ,
V
CP510 - 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 ,
V
CP550 - VMware CertifiedProfessional - Data Center Virtualization
New Dumps ,100% pass ,
V
CP550PSE - VMware Certified Professional -Data Center Virtualization
New Dumps ,100% pass ,
V
CPC510 - VMware Certified Professional -Cloud
New Dumps ,100% pass ,
V
CPC550 - VMware Certified Professional -Cloud
New Dumps ,100% pass ,
V
CPD510 - VMware Certified Professional -Desktop
New Dumps ,100% pass ,
V
CPVCD510 - VMware Infrastructure as aService Exam
New Dumps ,100% pass ,
V
CIA510 - VMware Certified AdvancedProfessional - Cloud Infrastrucure Administration
New Dumps ,100% pass ,
V
CID510 - VMware Certified AdvancedProfessional - Cloud Infrastructure Design
New Dumps ,100% pass ,
V
DCA410 - 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 ,
V
DCA510 - VMware CertifiedAdvanced Professional 5 - Data Center Administration
New Dumps ,100% pass ,
V
DCA550 - VMware Certified AdvancedProfessional - Data Center Administration Exam
New Dumps ,100% pass ,
V
DCD410 - VMware Certified AdvancedProfessional 4 - Data Center Design
New Dumps ,100% pass ,
V
DCD510 - VMware Certified AdvancedProfessional 5 - Data Center Design
New Dumps ,100% pass ,
V
DTA510 - VMware Certified AdvancedProfessional - Desktop Administration Beta
New Dumps ,100% pass ,
V
DTD510 - 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
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2