文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【读书笔记】《Linux 命令、编辑器与shell编程》

【读书笔记】《Linux 命令、编辑器与shell编程》

时间:2008-01-24  来源:sealearner

Linux 命令、编辑器与shell编程》(美)Mark G.Sobell 著 杨明军 王凤芹 译 清华大学出版社   2007-12-24 终端处理字符: ctrl+z 挂起,可用fg切换到前台,jobs 查看后台任务情况; ctrl+w 删除单词; ctrl+u 删除行 ctrl+x好像没有效果;   定位工具: which 只在设定的路径搜索,只报告第一个找到的; whereis 在标准路径,显示所有的; type 确定文件是否为内置命令; apropos 关键字 whatis 完全匹配关键字;   符号链接: 内置命令pwd显示链接名; 工具(/bin/pwd)显示路径; info bash builtin 列出内置命令;   2007-12-25 vim的使用: ctrl+w 删除单词; ctrl+h 删除行 ctrl+u; :redo ctrl+r 撤销; ctrl+l 刷新; vim -r 检查交换文件;   命令模式移动光标 字符移动 空格 h和l;Ff 字移动 Ww W按空白分隔字符 行移动 j k 句子 () 段 {} 屏幕 H M L   删除 dG 删除到末尾; d1G 从开始删除; d0 从行的开始; ~ 修改大小写;   替换 1,。 开始到当行; 。,$ 当前到末尾; 1,$ 或 % 所有; :1,$s/ten/te/g 所有行的所有ten替换成te;   2008-01-05 数组变量: 赋值 NAMES=(max helen sam zach) NAMES[1]=fly 引用值 #echo ${NAMES[2]} sam —————————————————————————————— 下标[*]和[@]的区别: 作用都是提取整个数组,但是加双引号工作机制却不同: @将原来的数组复制到新的数组,新旧一样,相当于复制; *将原来的数组当一个元素复制到新的数组 例: A=("${NAMES[*]}") B=("${NAMES[@]}") 用declare -a 显示数组内容 [root@Test ~]# declare -a declare -a NAMES='([0]="max" [1]="helen" [2]="sam" [3]="zach")'
declare -a A='([0]="max helen sam zach")'
declare -a B='([0]="max" [1]="helen" [2]="sam" [3]="zach")'
  echo ${#NAMES[*]} 元素的个数
[root@Test ~]# echo ${#NAMES[*]}
4
echo ${#NAMES[0]} 元素的长度 [root@Test ~]# echo ${#NAMES[0]}
3
————————————————————————————————— ((count=count-1))双扣号,保证shell看成算术表达式,变量不用$ $$ 进程ID,方便创建唯一的文件名; $0 命令本身; $! 后台进程PID; $?退出状态; $# 除命令本身外的参数个数; $*和$&的区别: $* 将所有参数当成一个整体(一个参数); $@ 和原来的一样; 跟下标[*] [@]一样 —————————————————————————————————— shift左移命令 为了得到任意一个参数,循环扫描命令行; set 初始命令行参数值; set $(date) set date ——————————————————————————————————— :- 使用默认值 ${name:-default} := 赋默认值 ${name:=default} : 内置命令 赋值并不执行 : ${name:=default} :? 显示错误信息,并返回状态1,shell不退出;${name:?message} ———————————————————————————————————— 路径操作符 # 最小去除前缀; ## 最大去除前缀; % 最小去除前缀; %% 最大去除前缀; 例: [root@Test ~]# test=/usr/local/src/proftpd-1.2.10.tar.gz [root@Test ~]# echo ${test}
/usr/local/src/proftpd-1.2.10.tar.gz
[root@Test ~]# echo ${test#/*}
usr/local/src/proftpd-1.2.10.tar.gz
[root@Test ~]# echo ${test##/*}
[root@Test ~]# echo ${test%/*}
/usr/local/src
[root@Test ~]# echo ${test%%/*}
[root@Test ~]# echo ${#test} 显示字符个数
36
————————————————————————————————————— sed的使用: 参数:       -n 显示除了p指令;       -i 将修改保存到文件; 指令: d 删除,整行删除; n 显示选中的行当前,从输入中读入下一行; a 每一行之后追加文件,以\换行; i 行之前追加; c 替换文件(整行); s 替换地址; w 重定向到新文件; r 追加行之后; q 退出; 控制结构: !NOT $!d 除了末行之外; {} 指令组;为分隔 Pattern区和Hold区: Pattern:工作平台(保存刚读入的行); Hold:临时工作区 H P->H 将一个换行符和内容追加到H h P->H 将P区替换掉H G H->P 将一个换行符和内容追加到G g H->P 将H区替换掉P 例: sed '5 q' filename 显示前5行; sed '2 a test' filename 第2行之后插入一个换行符和test; sed '/the/n;p' file 所有匹配the不显示; sed 's/^. /\t&/' filename 行首不是空格插入制表符; (^. ) 行首不是空格; s/^/\t/ 行首插入制表符; s/ *$// 行尾的空格全部删除; sed 'G' filename 每行之后插入一个空行; 倒序: 2,$ G h $! G —————————————————————————————— cat   -A(-vET)   -b 对非空行进行编号;   -n 对所有行进行编号;   -s 去除多余的空白行; cut   -c   -d 分隔符;   -f 例: [root@Test sh]# ll |tr -s '  ' ' '|cut -f 5,9 -d ' ' 2.3K a
2.2K b
4.0K BK/
436 ip.1
452 ip.2
264 ip.a
85K ip.list
22K ipList.temp
486 sample.sh*
9.9K selectInfo.sh*
4.0K temp/
tr -s 将多个空格化成单个空格;   [root@Test 20080114]# grep -n '^' test
1:a
2:b
3:c
4:d
'^' 匹配所有的行; -n 对所有的行进行编号   [root@Test 20080114]# grep  -h a * |sort|uniq -c
      2 a
-h 不显示文件名; uniq -c 对于重复的行只显示一遍,并对重复的次数进行统计;   [root@Test 20080114]# vi $(grep -l 'a' *)
2 files to edit
编辑多个匹配的文件; -l 匹配的文件名;   #kill -9 0 对于普通用户来说相当于注销; 对于root等于关机,请慎用; ———————————————————————————————— ls的参数:   -A 显示除了.. . 两个外的所有文件;   -F 显示文件特征;   -r 逆顺;   -t 按修改时间;   -x 行显示;   -1 一行显示一个文件; ———————————————————————————————— sort 参数:   -b 排除字段之前的空格和TAB;   -f 将小写看成大写(大写在前);   -n 算术排序,负号和小数点有意义;   -r 逆顺;   -t x 分隔符x;   -u 重复的行只显示一次;   -k start[,stop] 注:   大写在小写之前;   空白符在之前;   第一遍比较无相同,不进行第二遍查询; 例: #sort --key=2 test 第2字段;   #sort -k 2 -f test 第2字段,小写看成大写;   #sort -k 2 -b test 第2字段,字段前面的空白符和TAB忽略;   #sort -fb -k 3.4 test 第3字段的第4个字符开始;   #sort -b -k 3.4 -k -2f test 第一遍:第3字段的第4字符 第二遍:第2字段,小写看成大写;   #sort -k 1 -k 5 test 先第一字段(没有指定结尾,便是到结束),再第五字段; 但是如果第一遍比较没有相同,不进行第2遍比较;   #sort -k 1,1 -k 5 test 先第一字段,-k 1,1(第一字段的第一字符到stop:第一字段) 再进行第五字段;   #sort -u -k 1f -k 1 test 进行二遍比较,当有大小写相同的字段时; —————————————————————————————— 正则表达式: 星号: /(.*)/ 与圆括号最长匹配; /([^)]*)/ 与圆括号最短匹配;   空正则表达式: /\(test\)/ 和/test/一样; /a\(b*\)c/ 和/ab*c/一样;   替换字符串: &符号 与正则匹配的字符串匹配 \n 转义数字 例: :1,$/\([^,]*\),\(.*\)/\2 \1/ 1,$ 所有的行; \([^,]*\)和[^,]*一样,匹配除逗号外的任意字符串; \2 代表第2个括号内的正则; ———————————————————————————————— 扩展正则: + 匹配字符前面1个或多个; ?匹配字符前面0个或1个 例: /ab+c/ abc abbc /ab?c/ ac abc /(ab)+c/ abc ababc /(ab)?c/ c abc   /ab|ac/ ab ac abac /^Exit|^Quit/ 以Exit 或者Quit 开头的 /(D|N)\.Jones/ D.Jones N.JOnes   vim中 \|代表 |   特殊字符: . 单个字符; * 与*前面的0个或者多个字符; \< 字的开始; \> 字的末尾;
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载