看书后突然发现自己的生活变得比以前充实了,甚至忘记了白天上班的劳累~公司今天又来了一位新同事,感觉自己的压力也更大了,不过既然给自己定了一个目标,在没有达到之前,动力会永远存在,也感谢所有看我读书笔记的朋友对我的支持!我会坚持下去的。
继续昨天的内容:
六、使用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文件!