看书后突然发现自己的生活变得比以前充实了,甚至忘记了白天上班的劳累~公司今天又来了一位新同事,感觉自己的压力也更大了,不过既然给自己定了一个目标,在没有达到之前,动力会永远存在,也感谢所有看我读书笔记的朋友对我的支持!我会坚持下去的。
继续昨天的内容:
六、使用vi编辑器
1. 认识基本的vi编辑器操作:[vi编辑器不会改变文件的权限]
vi中的三种基本模式:命令模式、编辑模式、末行模式;
命令模式:删除/修改/拷贝/移动文本内容、定位光标、搜索字串及退出vi;
末行模式:按':'(冒号)进入该模式,能使用增强的编辑命令。
!命令模式和编辑模式间的切换:vi进入后默认为命令模式,键入编辑命令即可进
入编辑模式,完成后按esc返回到命令模式
vi -r filename:用于vi时系统当机后找回文件所修改的内容;
2. vi编辑器中的文件操作
命令view filename:调用vi以只读模式打开文件,退出时不能保存修改!
vi中编辑模式增加内容的命令:
i:在光标所在行首插入内容;
i:在光标前插入内容;
o:光标所在行上方再插入一空行
o:光标所在行下方再增加一空行;
a:在光标所在行末增加内容;
a:在光标后增加内容;
:r filename:当前文件中插入来自另一文件的内容;
vi中光标移动的控制:
h(退格)/j/k/l:光标方向,相当于左/下/上/右的方向键;
w/b:光标向前/向后一个单词;
e:光标移动到当前单词的末字符位;
$:光标移动到行末;
0(零):光标移动到行首;
^:光标移动到不是以空格开头的第一行;
回车:光标移动到下一行首;
g:光标移动到文件最后一行;
lg:光标移动到文件第一行;
:n或ng:光标移动到第“n”行;
ctrl+f:屏幕向后翻一页内容;
ctrl+d:屏幕中向下翻半页内容;
ctrl+b:屏幕向前翻一页内容;
ctrl+u:屏幕中向上翻半页内容;
ctrl+l:重新刷新屏幕内容;
vi中与删除相关的操作:
r:覆盖或替换从光标右侧开始得字符直到按esc为止;
c:从光标所在行得末尾开始改写内容;
s:替换光标所在的字符串;
x:删除当前光标所在的字符;
dw:删除位于光标右侧的一个单词;
dd:删除光标所在的一整行内容;
d:删除当前行光标右侧的剩余内容;
:n,md:删除n-m行的内容;
![删除操作在文件没有保存退出前,都只是对缓冲区操作]
vi中基本的编辑命令:
cw:修改或替换光标所在单词的最后一个字符;
r:替换光标所在的字符为另一字符;
j:合并当前行及下一行;
xp:使当前光标和光标右侧的字符调换位置;
~:改变当前光标所在字符的大小写;
u:恢复到上一条命令执行前的状态;
u:恢复当前行的所有改变;
.:重复执行上一条命令;
vi中的查找和替换操作:
/string:向后搜索'string'字串;
?string:向前搜索'string'字串;
n:跟搜索命令后执行,继续查找下一匹配的字串;
n:跟搜索命令后执行,继续查找上一匹配的字串;
:%s/old/new/g:搜索所有的'old'字串并全部替换成'new'字串。
vi中的拷贝粘贴操作:
yy:拷贝一行内容至缓冲区;
p:???
p:???
:n,n1 co n2:拷贝第n-n1行的内容粘贴到第n2行后面;
:n,n1 m n2:移动第n-n1行到第n2行,如“:4,6 m 8”则第六行变成第八行,第
五行变成第七行,第四行变成第六行!
vi中的存盘和退出操作:
:w:保存修改到文件;
:w new_filename:保存修改后的内容到一个新文件;
:wq或:x或zz:保存文件修改并退出vi;
:q!:不保存对文件的修改并退出vi;
vi编辑会话定制命令:
:set nu:显示行号;
:set nonu:隐藏行号显示;
:set ic:执行搜索时忽略字母大小写;
:set noic:执行搜索时字母大小写敏感;
:set list:显示不可见的特殊字符,如表格中的^i,或行末的$;
:set nolist:不显示特殊字符;
:set showmode:显示当前vi编辑器所处的操作模式;
:set noshowmode:不显示当前vi编辑器所处的操作模式;
:set:显示所有vi中能设置的set参数;
:set all:显示所有set参数,并指示当前个参数的设置值;
![vi操作快速参考:p153_图6-3]!
七、文件的基本权限:可以通过ls -l或ls -n查看当前文件或目录的权限;
solaris oe通过两项基本措施来防止系统的非验证访问及数据安全:
1. 登陆系统的用户名和密码(保存在/etc/passwd和/etc/shadow两个文件中);
2. 系统自动保护对文件和目录的访问(文件建立时系统就赋予了基本访问权限);
例:ls -l给出的内容中:-rw-r--r--
其中最左边一位表示文件类型,-为普通文件、d为目录;
接下来就是文件的具体访问权限:r只读、w可写、x可执行、-拒绝;
三位一组(从左往右):文件的所有者、文件所有者所在的组、其他
!系统中记录组的文件:/etc/group,系统管理员按照用户可访问的文件来确定用
户属于那个组!
[注意:目录若没有赋予执行权限,那么就不能用cd命令进入,一般给r-x权限];
命令ls -n可以查看文件或目录的访问权限及文件所有者的uid(用户验证字)和所
属组的gid(组验证字);一个文件或目录同一时间只能属于唯一的uid和gid,不能
多属!
!系统通过判断当前登陆用户的uid和gid,对比文件所属的uid和gid,来确定用户
访问文件的权限。(p162_图7-3)
改变文件或目录的权限:
格式:chmod symbolic_mode filename
symbolic_mode包括:who op permission(s) 三部分:
who:u(所有者)、g(所属组)、o(其他)、a(所有);
op:+(增加权限)、-(移除权限)、=(分配给出的权限);
permission:r(只读)、w(可写)、x(执行);
例:chmod o-r file1:删除file1这个文件其他用户的读权限;
chmod u+x,go+r file2:增加file2所有者的执行权限,所属组和其的读权限;
chmod a=rw file2:分配file2的读写权限给所有用户。
当然,也可以使用八进制格式分配权限:
格式:chmod octal_mode filename 八进制的具体表示:
7 rwx 读、写、执行
6 rw- 读、写
5 r-x 读、 执行
4 r-- 读
3 -wx 写、执行
2 -w- 写
1 --x 执行
0 --- (无)
修改文件或目录的默认权限:通常文件建立时系统就赋予了默认权限,可以通过
umask工具修改,在solaris oe中默认的umask值为022!
查看umask值,直接键入umask即可;
注意:不同的shell,umask值看起来也不同[sh为0022,ksh为022,csh为22]!
solaris oe中系统初始分配的权限:
1. 新建文件为666(rw-rw-rw-);
2. 新建目录为777(rwxrwxrwx);
通过设置umask改变权限使用的是掩码值!(初始权限-umask=实际分配的权限)!
八、在korn shell中使用:
[不知道准确的“metacharacters”该怎么翻译,按照我的理解觉得用“(系统)特
殊字符”解释比较合理]
korn shell支持三类特殊字符:路径中的~、(文件名)通配符、重定向符。
1. 在路径中使用的特殊字符:
“~”:表示当前用户的home目录;
如用cd ~/dir1即可切换到当前用户home目录下的dir1子目录。
!注意:除sh外,其他shell都支持路径中使用“~”;
用cd ~username即可进入指定用户的home目录
“~+”表示当前工作目录,“~-”表示先前的目录(父目录)。
“-”:使用cd -可以在当前工作目录和上一工作目录间切换。
2. 文件名中使用通配符:
“*”:可代替文件名中任意位数的字符,不包括开头首字符是.的隐藏文件;
“?”:可代替文件名中一位字符,不包括开头首字符是.的隐藏文件;
“[]”:用一组字符或一个范围的字符代替单一一个字符(如[a-z]*表示开头字母
可以是a-z中任意一个字母的文件、[acb]*表示以a或c或b开头的文件)。
3. 使用引用符号:
' '单引号:单引号中的所有字符都将被shell忽略执行;
" "双引号:双引号中除$、`(被单引号括起来的东西)、\三个特殊字符,其他内
容也将被shell忽略执行;
\ 反斜杠:双引号中特殊字符前加上\就不会被shell当指令而执行。
例:echo "$shell"显示为/bin/ksh,而echo '$shell'则仍为$shell
4. 使用重定向符:
三个重定向符:> 、< 、 ——默认下,系统都是通过键盘接收和读取命令,再
通过显示设备将命令和结果输出到屏幕上!
格式:command<filename:把file文件作为命令执行的输入;
command>filename:把命令的结果输出到一个文件中;
command>>filename:把命令的结果添加进文件中(跟在原有内容之后);
!抑制命令的出错信息:command 2> /dev/null
“”管道符:故名思义就是把前一个命令的输出当作第二个命令的输入信息。
5. 显示历史命令:
直接用history命令显示已执行的历史命令,例:
...
87 data
88 cd /etc
89 ps -ef
90 history
使用history -n可不显示左边的命令行号;
可用history -m显示不包括当前history这个命令之前的m个命令(m为具体数字);
默认history的命令按执行顺序往下排列显示的,可以是用-r参数反相排列;
若history后跟具体命令,则显示近期执行那条命令的相关次数。
在korn shell中历史命令存储在$home/.sh_history这个文件中,默认为128条,
可通过histfile变量改变默认存储值。
重复执行上一条命令:命令行中直接输入r即可!若r后再跟一个具体行号,则执
行history中那行所在的命令。若r后跟具体字串,则系统会执行最近执行过的命
令中含那个字串的命令。
[接下来讲到的开启vi的shell命令行编辑还没完全理解,等弄明白后进行补充。]
6. 用户配置文件:
当用户登陆时,korn shell会从.profile文件中查询初始环境设置,.profile文
件包含env变量。shell首先执行.profile中的命令,再执行命令中的env变量。
另外,shell还要定位korn shell的特定配置文件.kshrc,之后系统提示符就会出
现,等待用户命令输入。
若需要启动cde,则还要用到另一个初始化文件.dtprofile来定制桌面环境。
~/.profile文件:针对特定用户的配置文件,其中的设置只对特定用户生效;
/etc/profile文件:全局配置文件,其中的设置对登陆系统的每个用户都生效;
~/.kshrc文件:包含shell变量和别名,可设置一下常用内容:
shell提示符定义、别名定义、shell功能、history变量、shell特殊选项等。
一般对.profile和.kshrc的修改在用户再次登陆后生效,也可通过执行这两个文
件使之当场生效:
$. ~/.profile
$
$. ~/.kshrc
~/.dtprofile文件:对.dtprofile文件中变量的修改可覆盖任何cde中默认设置。
每次登陆cde shell都会去读.dtprofile、.profile和.kshrc文件;
在cde中打开console也会再次读.profile和.kshrc文件!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器