“Linux-2020-spring-3-25”的版本间的差异
跳到导航
跳到搜索
| 第54行: | 第54行: | ||
| \_ cat | | \_ cat | ||
其含义就是cat进程是bash进程的子进程 | 其含义就是cat进程是bash进程的子进程 | ||
| + | 此例子说明:shell通过创建子进程来执行外部命令。否则怎么执行呢?外部命令有完整的代码(有入口函数main) | ||
| + | |||
| − | + | shell如何找外部命令 | |
| − | + | PATH环境变量,逐一扫描路径(注意不会递归的进入到子目录中) | |
| − | + | == vi使用== | |
*vi的三个模式 | *vi的三个模式 | ||
2020年3月18日 (三) 05:12的版本
回顾上节课的内容
文件查看命令
less、more、cat、head、tail
文件操作命令
cp、mv、mkdir rm
查看帮助文档
man、info、help info类似在浏览网页,可以在不同网页上跳转,我不熟悉
文本编辑
vim,另一个是emacs(更难一点,用的人少一些)
命令的类型和执行过程
命令的三种类型
外部命令:命令由kernel和shell外部程序实现,可以找到这个命令对应的可执行文件,bin目录下的命令均为外部命令
mv more bash
内部(内嵌)命令:命令由shell(或kernel?)实现,对应shell(或kernel)的一部分代码
cd type alias help
别名:ls is aliased to'ls --color=none'
shell有很多种
bash是最常用的一种shell(GNU Bourne-Again Shell) 其他的:sh csh ksh dash
type命令:查看命令类型
$ type ls mv cd less $ps afx 查看进程的情况 $echo $PATH查看路径
alias:取别名
$ alias lm='ls -a'
内部命令的执行过程
相当于调用一个函数
外部命令的执行过程
$ mv x.c xx.c (例如) 找到mv对应的可执行文件 把可执行文件的代码Load到内存中 设置命令行参数 开启子进程,执行mv命令对应的代码(切换进程) 执行结束后回到shell
外部命令执行的一个例子
$ cat (不输入参数,这时cat进程就会和用户交互,等待用户输入内容)
在另一个文字终端中输入
$ ps afx,查看进程树的快照(snapshot),会看到
\_ bash
| \_ cat
其含义就是cat进程是bash进程的子进程
此例子说明:shell通过创建子进程来执行外部命令。否则怎么执行呢?外部命令有完整的代码(有入口函数main)
shell如何找外部命令
PATH环境变量,逐一扫描路径(注意不会递归的进入到子目录中)
vi使用
- vi的三个模式
1、命令模式 2、插入模式 3、底层命令
- 三个模式之间转换
1、命令--->插入模式(i/I光标在行首/a/A光标在行尾/o光标在下一行/O上面再插入一行,光标在下一行) 插入模式--->命令模式下(ESC键,u撤销,x删除一个字符,r替换,yy复制一行,p粘贴,dd删除一行,3dd删除三行:set nu 显示行号;^光标到行首,$光标到行尾,G光标到最后一行,:5直接跑到第五行,3G跑到第三行) 命令--->视图模式(v) 按字符选择 命令--->视图行模式(V) 按行选择 命令--->按列选择(ctrl+v) 命令--->底行模式(/搜索 n正向找,N反着找; ?反向搜索;正则表达式查找/o[uv]---找到所有含有ou或者ov的字符;“:!date”可查看时间;“:r!date”将命令执行的结果保存在当前文本中;“:n1,n2s/word1/word2/g n1和n2为数字,在第n1行和n2行之间寻找word字符串,并将该字符串替换为word2 :1,$s/word1/word2/g 从第一行到最后一行查找字符串word1字符串,并将字符串word1替换为word2 :1,$s/word1/word2/gc 从第一行到最后一行查找字符串word1,并将字符串word1替换为word2,在替换之前提示用户确认是否替换(confirm)”替换) vi wenjianming---进入命令模式---输入“i/insert”---进入插入模式----按“ESC”---进入命令模式---“:wq”---保存退出
- 打开多个文件
命令模式“:sp”利用“ctrl +w+w”进行切换
中枢,中轴