c第二天

来源:互联网 发布:网络影视广告视频教程 编辑:程序博客网 时间:2024/05/17 07:56
第二课    vi与shell脚本
一、Unix的常用命令
1.创建链接:ln
1)硬链接:一份文件数据与多个文件路径相关联。
ln 目标文件 硬链接文件
1.txt -> hello <- 2.txt
通过一个文件名对文件进行修改,通过其他硬链接的文件名可以看到上述修改。
通过rm删除文件,实际上只是删除了一个硬链接,只有当文件的硬链接数变成0的时候,文件数据才真正被删除。
2)软连接:在一个文件(链接文件)中保存另一个文件(目标文件)的路径信息。
ln -s 目标文件 软链接文件 
2.txt -> 1.txt -> hello
通过一个文件名对文件进行修改,通过其他软链接的文件名可以看到上述修改。
通过rm删除了目标文件,则与其关联的所有软连接文件都将失效。
2.显示文件内容:cat/more/head/tail
cat 文件
显示文件的全部内容,不分屏。
more 文件
显示文件的全部内容,分屏,<Enter>滚一行,<空格>滚一屏,<q>结束显示。
head -n 文件
显示文件的前n(缺省10)行。
tail -n 文件
显示文件的后n(缺省10)行。
tail -f 文件
跟踪文件的增长,显示其追加的内容。
3.查找文件或目录:find
find 目录 条件
条件:
-name 文件名或目录名
按照文件名或目录名查找。
-perm 权限数(同chmod)
按照权限查找。
-user 属主
按照属主查找。
-group 属组
按照属组查找。
-ctime/atime/mtime -n/+n
按照文件创建时间/最后访问时间/最后修改时间查找。-n表距离现在n天以内,+n表示n天之前。
find . -mtime +10
查找当前目录下最后修改时间距离现在10天以前的文件或目录。
-size n
查找大小为n块的文件或目录。
-size nc
查找大小为n字节的文件或目录。
-type d/f/l/p/b/c
d:目录
f:普通文件
l:软链接
p:管道
b:块设备文件
c:字符设备文件
4.查找内容:grep
grep 选项 正则表达式 文件或目录
-n(数字)
显示匹配行的上下n行。
-c
只显示匹配的行数,不显示匹配行内容。
-l
只显示包含匹配行的文件名。
-L
只显示不包含匹配行的文件名。
-n(字符n)
显示行号。
-v
显示不匹配的行。
-w
将表达式作为一个完整的单词处理。
5.查看进程:ps
ps
以简略的方式显示当前用户有控制终端的进程信息。
1)BSD风格的常用选项
a:所有用户的有控制终端的进程。
x:包括无控制终端。
u:以详尽方式显示。
w:加宽显示。
进程状态:
R:运行(正在执行或已就绪等待调度)
S:可唤醒的睡眠(等待资源)
D:不可唤醒的睡眠(通过wake_up调用唤醒)
T:暂停(收到SIGSTOP信号,收到SIGCONT信号继续)
W:等待内存分页(2.6以后内核取消)
X:死亡(不可见)
Z:僵尸(已经结束,但是父进程尚未获得此状态)
<:高优先级。
N:低优先级。
L:有被锁入内存的分页(实时进程)。
s:会话首进程。
l:多线程化进程。
+:在前台进程组中。
2)SVR4风格的常用选项
-e或-A:所有用户的进程。
-a:当前终端的进程。
-u 用户名或用户ID:特定属主的进程。
-g 组名或组ID:特定属组的进程。
-f:按完整格式显示。
-F:按更完整格式显示。
-l:按长格式显示。
ps -eFl
静态优先级=常数(80)+NICE(-20~19),60~99,值越小的进程优先级越高。
动态优先级,内核在静态优先级的基础上对进程实施奖惩。
IO消耗型进程:奖励
处理机消耗型进程:惩罚
6.杀死进程:kill
kill 进程ID
杀死特定的进程。
kill -信号名/信号值 进程ID
向特定的进程发送特定的信号。
kill -l
打印信号列表。
SIGINT(2):终端中断符信号
当用户按下中断键(Ctrl+C)时,产生此信号,并送至前台进程组的所有进程。
默认动作:终止。
SIGQUIT(3):终端退出符信号
当用户按下退出键(Ctrl+\)时,产生此信号,并送至前台进程组的所有进程。
默认动作:终止+core。
SIGFPE(8):算数异常信号
除0,浮点溢出
默认动作:终止+core。
SIGALRM(14):闹钟信号
当以alarm()函数设置定时器,一旦时间到,进程就会受到此信号。
默认动作:终止。
SIGKILL(9):终止信号
不能被捕获,不能被忽略,常用于杀死进程。
默认动作:终止。
7.切换用户:su
su 用户名
切换到特定的用户,不写用户名,表示切换到root用户。
su - 用户名
以新的用户名重新登录,环境变量,用户主目录都会同时切换为新用户的。
8.修改密码:passwd
passwd
修改当前用户的密码。
passwd 用户名
修改特定用户的密码,只有root用户可以使用此命令。
二、文件通配符
1.“*”通配若干个任意字符。
2.“?”通配一个任意字符。
3.“[]”通配一个特定字符集中的字符。
三、输入输出重定向
1.输出重定向:>
2.追加:>>
3.输入重定向:<
四、管道
管道符“|”:连接多个命令,使前一个命令的输出成为后一个命令的输入。
五、命令分隔符
“;”:在一个命令行中分隔多个命令。
六、续行符
“\”:将一条命令分多行输入。
七、文本编辑器vi/vim的使用
1.vi的命令选项
vi
编辑一个无名的空文件。
vi 不存在的文件
编辑一个有名的空文件。
vi 存在的文件
打开并编辑一个已存在的文件。
vi +n 文件
打开并编辑文件,光标置于第n行之首。
vi + 文件
打开并编辑文件,光标置于文件末行。
vi +/pattern 文件
打开并编辑文件,光标置于与pattern匹配的行首。
vi -r 文件
上次编辑过程中崩溃,用这个命令可以恢复文件。
vi -R 文件
以只读方式打开文件。
vi 文件1 文件2 ...
同时打开多个文件。
注意:vi不对文件加锁,多人同时编辑一个文件,只有最后保存的数据被保留下来。
2.三种工作模式


              <Esc>         <:>/</>/<?>
编辑   ---------->命令 -----------> 底行
模式  <---------- 模式 <----------  模式
       <i>/<a>/<o>  <Enter>/<Esc>
<i>:在光标位置之前插入
<a>:在光标位置之后插入
<o>:在光标所在行之下插入
< :>:输入底行命令
</>:从当前位置向文件尾方向搜索
<?>:从当前位置向文件首方向搜索
3.基本命令
1)移动光标
h:左移一个字符
l:右移一个字符
k:上移一行
j:下移一行
Backspace:向文件首的方向移动一个字符
空格:向文件尾方向移动一个字符
Enter:向文件尾方向移动一行
H:光标移到屏幕顶行首
M:光标移到屏幕中行首
L:光标移到屏幕末行首
0:光标移至当前行首
$:光标移至当前行尾
G:光标移至末行首
nG:光标移至第n行首
n$:光标下移n行(含当前行)至行尾
n+:光标下移n行至行首
n-:光标上移n行至行首
2)翻滚屏幕
Ctrl+u:向文件首方向翻半屏
Ctrl+d:向文件尾方向翻半屏
Ctrl+b:向文件首方向翻一屏
Ctrl+f:向文件尾方向翻一屏
3)插入文本
i:在当前位置之前插入
I:在当前行首插入
a:在当前位置之后插入
A:在当前行尾插入
o:在当前行下插入
O:在当前行上插入
nr:替换从当前位置开始的n(缺省1)个字符
R:进入替换状态,直到按<Esc>位置
4)删除文本
nx:删除从当前位置开始的n(缺省1)个字符
nX:删除当前位置之前的n(缺省1)个字符
d0:删至行首
d$:删至行尾
ndd:删除从当前行开始的n(缺省1)行
5)查找替换
/pattern:从当前位置开始向文件尾方向查找与pattern匹配的文本
?pattern:从当前位置开始向文件首方向查找与pattern匹配的文本
n:沿相同的方向继续查找
N:沿相反的方向继续查找
:s/p1/p2/g:将当前行中所有的p1全部替换为p2
:n1,n2 s/p1/p2/g:将第n1到n2行中所有的p1全部替换为p2
:g/p1/s//p2/g:将文件中所有的p1全部替换为p2
6)复制粘贴
yw:复制一个单词
yy:复制一行
p:粘贴
7)撤销和重复
u:撤销先前的命令
:undo:撤销先前的命令
.:重复先前的命令
8)底行命令
:n:光标移至第n行首
:n1 co n2:将第n1行拷贝到第n2行之下
:n1,n2 co n3:将第n1-n2行拷贝到第n3行之下
:n1 m n2:将第n1行移动到第n2行之下
:n1,n2 m n3:将第n1-n2行移动到第n3行之下
:w:保存
:w!:保存只读文件
:q:退出
:q!:不保存退出
:wq:保存退出
:x:保存退出
:x!:保存只读文件退出
:e 文件名:在当前vi中打开另一文件
:e!:重新载入当前文件,之前的修改全部放弃。
:! 命令:不离开vi环境执行shell命令
9)设置选项
:set all:显示所有的选项当前值
:set nu/nonu:显示行号/不显示行号
:set autoindent/noautoindent:自动缩进/不自动缩进
:syntax on/off:打开语法加亮/关闭语法加亮
4.配置文件
用户主目录下的.exrc文件。可以将set选项写到该文件中,每次启动vi都会根据该文件中的信息设置编辑环境。
八、环境变量
九、简单shell脚本
0 0
原创粉丝点击