Linux文件编辑器vim、输出输入重定向以及进程
之前在上linux课的时候,老师说,vim使用的好的网络管理员比普通的效率快好多。合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。撸基础吧。 linux编辑工具 VI VIM EMACS vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。vim的这些优势主要体现在以下几个方面: 易用性 vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。 语法加亮 vim可以用不同的颜色来加亮你的代码。 可视化操作(ESC+V) 就是说vim不仅可以在终端运行,也可以运行于x window、mac os、windows。 对vi的完全兼容 某些情况下,你可以把vim当成vi来使用 vim 文件名 如果文件已存在,则此文件被打开且显示文件内容 如果文件不存在,则vim在第一次存盘时自动建立在硬盘上 vim的三种模式: 命令模式:控制光标移动,删除字符,段落复制(按ESC)编辑模式/插入模式:新增文字及修改文字 末行模式:保存文件,离开vi,以及其他设置 vim的基本使用 插入、定位、删除、复制、剪切、替换、取消、搜索、保存、退出 定位命令 0 数字0,将光标移动到该行的行首 $ 将光标移动到该行的行末 H 将光标移动到该屏幕的顶端 M 将光标移动到该屏幕的中间 L 将光标移动到该屏幕的底端 gg 将光标移动到文章的首行 G 将光标移动到文章的尾行 w或W 将光标移动到下一单词 在命令模式下可以直接删除字符 在命令模式下键入v则进入块操作: 1、移动光标以选定操作块 2、c 剪切选定块 或 y 复制选定块 3、p 将选定内容贴在光标所在位置右手边 在vim中删除 x/<del>:删除一个字符 nx:删除下n个字符 dd:删除当前行 dw:删至词尾 ndw:删除后n个词 d$:删至行尾 nd$:删除后n行 在vim中剪贴 yy:选定光标所在行复制 yw:选定光标所在词复制 nyw:选定光标所在位置到之后n个单词复制 y$:选定光标所在位置到行尾的部分复制 p:贴在光标所在位置之右 P:贴在光标所在位置之左 命令模式,取消操作 u:取消上一个更动 U:取消一行内的所有更动 :e! :放弃所有更动,重新编辑 VIM编辑模式 i光标当前处插入 I光标当前行首插入 a光标之后插入 A光标所在行的行尾插入 o光标所在行之后新起一行插入 O光标所在行之前新起一行插入 末行模式在命令模式下输入“:”进入末行模式 :w [文件名] 保存当前文件 :q 如果未对文件做改动则退出 :wq :x 保存当前文件并退出 :q! 放弃存储并退出 :e 文件名 打开另一文件并开始编辑 :r 文件名 在当前光标插入文件内容 :r! 命令在当前光标插入命令执行结果 set nu 显示行号 set nonu 取消行号 /向下查询 ?向上查询,在查找关键字后,可以用n继续下一个关键字查找 Vim使用技巧 :r 文件名 导入文件,导入到光标所在位置 :! which 命令 在vim中使用命令操作 :r!r命令 联合使用,把执行的命令结果导入 定义快捷键:我们要给某一行进行注释的过程是I跳到首字符,i进入编辑模式,然后输入#号,esc退出 :map ^p I#<ESC>,(^p是ctrl +v+p一起按出来的),然后我们只要在任意位置按ctrl p就可以了 vim的替换 :起始行,终止行s/^/#/g :起始行,终止行s/#//g ab替换:输入a的内容,自动变成b的内容 ab wozaigongzuo wozaixuexi 重启后失效,永久存在,编辑家目录下的vim.rc,有可能空的或者不存在 输入、输出、重定向 输入:过滤器的数据来源 输出:过滤器的数据去向 重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向 > , >>输出重定向符 >将屏幕上显示到文本中,刷新保存(文件的原内容会被覆盖) >>将屏幕上显示到文本中,追加保存 < ,<< 输入重定向符 输出重定向 echo 单句输出 < 不用键盘输入,用其他输入 这里用wall来广播一下之前编辑的test文件,写法是# wall 0< /mu1/test 意思就是将test中的文件内容广播出去 << 输入,直到end结束 管道操作 将前一个命令的输出结果作为后一个命令的输入数据源 进程 系统是通过进程来完成工作的,每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程. 系统的原始进程是init ,init的PID总是1 一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程 pstree 以树状的方式表现进程的父子关系 init 是第一级的,Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源.分时,也就是时间片。 进程状态分为:创建态-就绪态-行动态-结束。 然而我们的系统能够多任务的主要原因就是时间片。一个进程,比如说TELNET的进程,一个进程,比如说TELNET的进程,然后TELNET这个进程就进入就绪态,等待时间片。当CPU分给他的时间片的时间到了的话,他就开始运行,进入运行态.当时间片用玩以后,他就进入阻塞态,然后进入就绪态,等下次CPU分配的时间片。然后又进入运行态.当这个程序运行完了以后,就进入结束态。这就是简单的进程状态流程。 linux的进程树是这样的:KERNEL-0号进程-1号进程(INIT)-子进程 ps 【选项】 -l 长列表 -a 显示同一终端下的所有程序 -A 显示所有进程 -e 等于“-A” e 显示环境变量 f 显示程序间的关系 -H 显示树状结构 r 显示当前终端的进程 T 显示当前终端的所有程序 u 指定用户的所有进程 -au 显示较详细的资讯 aux 查看系统所有的进程 第一个F表示这个进程的标志FLAG,4表示用户为超级用户 第二个S 表示这个进程的状态STAT,STAT有这几种状态 ps显示中的STAT,可以为: R:正在运行。 S:进程睡眠中,通常可以因事件发生而被唤醒。 T:进程已停止。 D:进程睡眠中,除非发生指定事件,否则不会被唤醒。 Z:僵尸进程,例如未能被父进程回收的子进程。通常是一个系统bug或非法操作。 < :高优先级进程。 N:低优先级进程。 UID 这个就是使用者识别码 (ID),当 UID 是0 时,代表这个账号是系统管理员! PID 这个进程的ID PPID为父进程的ID C CPU使用的资源百分比 PRI PRIORITY(优先级)的缩写,PRI的值越小,他的优先级越高 NI NICE值等下我们也会详细介绍 ADDR 这个是核心功能,指出该进程在内存的哪一部分,如果是运行的进程,一般是 - ,-是个标志 SZ用掉的内存大小 WCHAN当前进程是否正在运行,若为- 表示正在运行,若为 WAIT 就是等待 TTY 登陆者使用的终端 TIME 用掉的CPU时间 CMD 所执行的命令(也就是用什么命令产生的这个进程) ps -ef 显示所有进程信息,连同命令行 kill 控制进程 语法:kill 【参数】-PID -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 -a 当处理当前进程时,不限制命令名和进程号的对应关系 -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号 -s 指定发送信号 -u 指定用户 发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号: HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 终止 KILL 9 强制终止 CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z) init进程是不可杀的 因为水平有限,文中若有错误,多多包涵。同时也欢迎交流。