首页 | 程式人生 | 原创下载 | 技术文档 | 留言我们 | 关于我们

Bash学习笔记(一)

作者: phanrider        2006-05-31

Bash学习笔记(一)
在学习Bash中,发现很多可以引起注意的地方,如有可能,我会不定期整理学习笔记,记录于此。

1,字符串的索引
string=abcdef
#abcdef
#012345 对于Bash来说,第一个索引值从0开始
#123456 对于Awk来说,第一个索引值从1开始



[phanrider@redhat ~]$ string=abcdef
[phanrider@redhat ~]$ echo ${string:1:3}
bcd # 从b开始取三位
[phanrider@redhat ~]$ echo | awk '{print substr("'"${string}"'",1,3)}'
abc # 从a开始取三位
# 空的“echo”管道为“awk”提供了假想输入
[phanrider@redhat ~]$




2,变量替换中的冒号问题
{parameter+-=default}与{paramter:+-=default}唯一区别就是前者变量即使为空也会认为ture,但后者只有变量设置值时才会为ture



[phanrider@redhat ~]$ abc= #前者为true,后者为false
[phanrider@redhat ~]$ abc=0 #前者为true,后者为true




3,冒号与换行
在脚本或命令行中,if...then...else...fi或者while...do...done结构,都是另起一行,而在同一行中,则必须要有分号“;”,也即在不同行中可用可不用分号,但在同一行中,没有分号,没有换行符,则shell无法分别了,从这一点看,借鉴了C却又延伸了它,其实在不同行中,分号可有可无。



[phanrider@redhat ~]$ if [ 1 -lt 2 ] ; then echo ok ; else echo ;fi
ok
[phanrider@redhat ~]$ if [ 1 -lt 2 ] ; #该分号可有可无
> then
> echo ok; #该分号可有可无
> else
> echo ; #该分号可有可无
> fi
ok
[phanrider@redhat ~]$




4,管道
管道是用符号“|”表示的,如果没有管道,shell也许没有这么强大,正是由于管道的存在,同一个问题才会有不同的解法。下面是一个例字,打印出当前用户的主目录



[phanrider@redhat ~]$ cat /etc/passwd | grep `whoami` | awk -F : '{print $6}'
/home/phanrider
[phanrider@redhat ~]$




5,几个有用的快捷键
Ctrl+I TAB键
Ctrl+H 退格键,相当于Backspace
Ctrl+U 清除当关光标之前所有字符,不包含当前光标
Ctrl+K 垂直TAB键,也即清除当前光标之后所有之符,包含当前光标
Ctrl+J 另起一新行,如该行有命令,则执行之,相当于Ctrl+M
Ctrl+L 清屏

小结:
以上几个有用的快捷键,在XP的CMD中只支持Ctrl+I和Ctrl+H,当然了Ctrl+M只个功能从DOS时代就有了。说到CMD,也就是现行WINDOWS类系统下的SHELL,虽然微软公司一直在增强CMD的功能,但与Bash相比,却还有很多很多的不同,加之操作系统本身就不擅长与此。同比之下的应用工具也是少之又少。注定了它的不伦不类。简单的不同文件的不同色彩显示,在WINDOWS下用CMD本身却没办法实现,至少到目前为此(关于用命令行实现LINUX下的LS,可以参看本站文章)。用CMD批处理实现Bash中一些基本功能,作为练手可以,作为学习,可谓本末倒置了。


→返回←

红蜻蜓工作室版权所有
Copyright © 1999-2025 Reddragonfly & Studio All Rights Reserved.
如有任何问题及建议请留言红蜻蜓工作室