PT组点滴记忆
来源:互联网 发布:淘宝网汽车坐垫套 编辑:程序博客网 时间:2024/06/11 02:17
1:工程师首先想到的是解决问题,而不是学习知识。
工程师解决问题的方式:
那次SPEC编译失败,是因为你禁用了二进制接口宏;
这次/var目录空间不足的解决方法:背景(你明明删除了LOG子目录下的messages文件,但还是显示/VAR/目录剩余空间为0)
方法:仅仅重启一下/ETC/INIT.D/SYSLOG服务就行了,根本不用再上网搜什么资料。
2 转义字符方面的东西
\s在很多流派里面都代表空白,包括tab,空格,换行,回车这类的。其他的还有:
\t:tab
\n:换行
\r:回车
\S:除了\s以外所有的字符(所以\s\S就是统统统统的有了)
\w:[a-zA-Z0-9]
\W:\w以外所有的字符
\d:0-9数字
\D:除了\d以外的字符
5.修饰符:i是忽略大小写
一次我们想试一下能不能用cat命令来显示man的内容,我们用如下命令将bash的帮助页写到文件kkk中去:
man -P /bin/cat bash >kkk
结果发现,用cat命令显示kkk 文件时一切正常,而用vi命令编辑此文件时却发现行中夹杂着许多乱字符,就像下面这样:
N^HNA^HAM^HME^HE
bash - GNU Bourne-Again SHell
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
这些夹杂在行中的^H实际上是退格键,也就是说有些行每输入一个字符,就用退格键将其删除,然后重新输入这个字符。对于cat命令来说,能够正确解释退格键这样的控制字符,所以其显示结果看不出什么不正常,然而vi命令就无法正常显示了,此外当使用grep命令时也不能正常查找。解决的办法是使用如下sed命令:
sed 's/.\x8//g' kkk >kkk1
这样就将文件kkk中的乱字符去掉并将正确的内容送到文件kkk1中去了。
3:sed语法及正则表达式学习
见mod_elilo()中:
eliloconf='/boot/efi/efi/redhat/elilo.conf'
default=`awk -F '=' '$1~/^default/{print $2}' $eliloconf`
label_n=`grep -n "^[[:blank:]]label=${default}$" $eliloconf | awk -F ':' '{print $1}'`
sed "${label_n},$((${label_n}+3))s%\(^[[:blank:]]append=\"\).*\$%\1${append}\"%" $eliloconf
见mod_str()中:
str_before=`sed <<< "$str_before" "s@/@\\\\\\\\/@g"`
可用命令检验: str_before=`sed <<< "/bin/bash/" "s@/@\\\\\\\\/@g"`;echo $str_before
结果则为:\/bin\/bash\/
如果命令为:sed <<< "$str_before" "s@/@\\\\/@g"
则为:\/bin\/bash\/
ed-最古老的编辑器
str_after=`sed <<< "$str_after" "s@/@\\\\\\\\/@g"`
ed - $mod_file <<- EOF
%s/$str_before/$str_after/
w
EOF
4:富士通两备脚本学习
/etc/opt/fjsvdrivers/mkinitrd/S10sdx_mkinitrd:
如果image为initrd,
IMAGE=`echo $image | sed -r -e "s#^([^/])#$PWD/\1#"`
中IMAGE为:`pwd`/initrd
rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab)
中间\t为空格及制表符。
echo $rootdev | cut -d/ -f1,2,3`
如果rootdev为/dev/sfdsk/RootClassX/dsk/rootVolume
则结果为
/dev/sfdsk
for t in /tmp /var/tmp /root ${PWD}; do
if [ ! -d $t ]; then continue; fi
if ! echo access -w $t | /sbin/nash --quiet; then continue; fi
fs=$(df -T $t 2>/dev/null | awk '{line=$1;} END {printf $2;}')
if [ "$fs" != "tmpfs" ]; then
TMPDIR=$t
break
fi
done
中间continue的用法,
update_init() {
mknod_cmds=`mknod_command` \
|| error "Could not construct mknod statements."
及:
mknod_command() {
[ -d "/dev/sfdsk/${root_class}/dsk" ] \
|| error "/dev/sfdsk/$root_class/dsk: No such directory."
ls -ln /dev/sfdsk/${root_class}/dsk | awk "
BEGIN {
FS=\",[ \t]*|[ \t]+\"
printf \"mkdir -p /dev/sfdsk\\\\n\"
printf \"mkdir -p /dev/sfdsk/${root_class}\\\\n\"
printf \"mkdir -p /dev/sfdsk/${root_class}/dsk\\\\n\"
}
!/^total/ && /^b/ {
printf \"mknod /dev/sfdsk/${root_class}/dsk/\" \$NF \" b \" \$5 \" \" \$6 \"\\\\n\"
}"
}
中间:FS=\",[ \t]*|[ \t]+\" FS可设置多个分隔符,
执行echo -en $mknod_cmds结果为:
mkdir -p /dev/sfdsk
mkdir -p /dev/sfdsk/RootClassX
mkdir -p /dev/sfdsk/RootClassX/dsk
mknod /dev/sfdsk/RootClassX/dsk/ahVolume b 231 34
mknod /dev/sfdsk/RootClassX/dsk/efiVolume b 231 6
mknod /dev/sfdsk/RootClassX/dsk/optVolume b 231 33
mknod /dev/sfdsk/RootClassX/dsk/rootVolume b 231 2
mknod /dev/sfdsk/RootClassX/dsk/swapVolume b 231 32
mknod /dev/sfdsk/RootClassX/dsk/varVolume b 231 4
单执行函数mknod_command里的语句结果为:
mkdir -p /dev/sfdsk\nmkdir -p /dev/sfdsk/RootClassX\nmkdir -p /dev/sfdsk/RootClassX/dsk\nmknod /dev/sfdsk/RootClassX/dsk/ahVolume b 231 34\n等等;
单独的NF代表当前行字段的个数;
cat >> $work_init << EOL
echo "Loading sfdsk"
insmod /lib/sfdsk_lib
insmod /lib/sfdsksys
EOL
中间CAT命令的用法,现场往文件里面输东西;
awk -f - init >> $work_init << EOS
NR > $pos_1 {
if (/^resume/ || /^mkrootdev/){
print
}else if (!/sfdsk/){
print
}
if (/switchroot/) exit
}
EOS
AWK的参数f表明它的动作命令是
NR > $pos_1 {
if (/^resume/ || /^mkrootdev/){
print
}else if (!/sfdsk/){
print
}
if (/switchroot/) exit
}
- PT组点滴记忆
- 点滴记忆
- 点滴记忆
- 记录点滴,留给记忆
- HPC组点滴记忆—记录我的成长(技术方面)
- pt
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- 点滴
- Apache2 httpd.conf配置文件中文版详解
- 七、Struts2之文件上传与下载
- 英寸向米的转换表
- CCombpBox控件的学习
- OpenGL函数思考-glColor
- PT组点滴记忆
- 博文测试
- CSDN下载频道1月最受欢迎资源强力推荐~!
- nagios + snmp配置,自己配出来,才能有收获!
- 日常邮件用语(二)
- 用C#实现基于TCP协议的网络通讯
- 【动态规划32讲】第四节 动态规划入门[不懂]
- 中国茶叶的影响
- BOP - 计算32位整型数中的1的个数