基础三 * 下 【vim 编辑器】 【管道】【文件内容浏览命令】

2023-10-27

    目录 

                  【vim 编辑器】

                  【管道】

                  【文件内容浏览命令】

                【练习】

        

【 vim 编辑器】

       前言须知 : 

                     1.  vim 是个啥?

                                   其实, vim 类似于 windows 上的记事本 : 能够编辑,保存,复制,粘贴,

                                               搜索,替换等等。

                                   在 linux 上叫 vim ,早些时候 unix 或者 linux 系统不会内置 vim 会内置一个

                                   叫 vi 的。

                     2.  vim 能干啥 ?

                                  vim 本身就是一个 文本编辑器,自然用来编辑文本文件,是 vi 的增强版,使

                                  用 vi 也可以编辑文件。 

                     3.  vim 与 linux 

                                   我们经常说,在 linux 中,一切皆是文件,而且大多数情况下以文本文件为

                                   主,或者说,在 linux 中,我们很多程序的配置,服务的配置都是以配置文

                                   件来完成的,而配置文件又都是配置文本文件,所以在配置的时候一定避

                                   免不了需要编辑它,因此,vim 在 linux 的使用程度是非常高的。

                     4.  vim 的使用 

                                   vim 是字符界面,不是图形界面,基本用不上鼠标。

     三种模式 :

                        命令模式 控制光标 完成复制 粘贴 删除 查找的功能

                        编辑模式 : 编辑文本文件的内容

                        末行模式 : 保存,退出,设置环境

     模式切换  :

                       使用 vim  data.txt 进入 vim 中,默认进入命令行模式;也就是说,我们要进入到 

                       vim 下,首先是默认的给我们显示的是 vim 三种模式下的 命令行模式。

                       

                       那么命令行模式是怎样的呢?         

                               示例  :      

                              

                              

                      那么怎么又由 命令行模式 切换到 编辑模式呢?

                               切换 : 按下(输入)  “a" 或  " i " 或 " o " 便进入到编辑模式 。

                               特点 :  编辑模式下会有一个特点,会让你知道此刻就在 编辑模式下,那便

                                             是 在左下角会显示出  红色 --INSERT-- 字样。

                               示例  :  进入到编辑模式便可以输入东西了。 

                               

                      那么怎么由  编辑模式 切换到 命令行模式 呢?

                                 切换 : 按下 "  Esc "  键

                                 示例  :会发现左下角的 红色 --INSERT-- 字样消失

                        ​​​​​​​        

                       那么怎么由 命令行 切换到 末行模式 ?

                                  切换  : 输入 " : "  

                                  示例  : 左下角 是 "  :  "  即切换到 末行模式中。

                                

                       那么怎么由  末行模式 切换到  命令行模式 ?

                                   切换  :  按下 " Esc "  

                                   示例  : 这个切换后,前后差别不是很大,但 按下 " Esc " 就到 命令行模式

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

                  总结  :      

                

                               注意 :  输入模式 和 末行模式 是相互切换不了的

    命令行模式   : 

             常用命令  : 光标移动   

           

                             注 :  行号显示是在  末行模式 下进行的。

             

                常用命令  :  复制、粘贴、删除      

                

                       

                常用命令   :  文件内容查找

                

                                 注  : 查找可以分为两种方式去执行,一种是从上往下,一种从下往上

                                            / " 要查找的内容 "  , 即 / 后跟的是你要查找的东西。执行完后, vim 会

                                                 将你要查找的内容 用背景颜色凸显出来,一眼就找到。

                                           n 与 N 是 你将要查找的东西找出来之后,在所有被显示出的被查的内

                                                 容里去进行的操作。 按 n 光标就跑到下一个 被查的内容那里了。

                   常用命令  :   撤销编辑  保存退出  

                  

                         注  : 

                              在使用 vim 编辑一个文件的时候,如果这个文件本身不存在,然而你编辑完成

                              之后保存并退出了,那就意味着创建了一个新的文本文件。

                              和 touch 的区别  : touch 创建的是一个空的新文件,并且没有指定一定是文本

                                                              文件

             末行模式

                          常用命令 : 保存文件及退出vi编辑器

        ​​​​​​​        ​​​​​​​        

                                      :  保存文件分为 保存 和 另存为。

                                                其中,另存为是对文件重新命名, :w  /root/newfile即为另存为

                                                的新文件名。 

                         常用命令  : 打开新文件或读入其他文件内容

        ​​​​​​​        ​​​​​​​        

                                     

                                            : e  是  在已经打开的文件里面,再打开一个新的文件。

                                            : r  是   在打开的这个文件里面去打开另一个文件并且把另一个文件的

                                                        内容装载进来。  

                                              

                         常用命令  :  文件内容替换

        ​​​​​​​        ​​​​​​​        

                                注 :

                                  #  上示表格中的所有的 old 代表的是 你要进行替换的东西,new 代表的是

                                       替换后的新内容。

                                  #  " #,# " 这里面,第一个 # 代表的是起始行号,第二个 # 代表的是 结束行号

                                  #   注意在 / 前是有空格的。

【 管道 】

     管道 

        管道 :     由我们的 | 管道符隔开的若干条命令组成的序列。

        作用 :     就是来传输的,起了一个连接的作用(有点像楼层与楼层之间的下水管。) 

     管道符 

        管道符   : “ | ”   就是根竖线。  

        管道符 | 的前后两个命令之间的关系 : 前一个命令的输出,使用管道符,进而作为后一

                                                                      个命令的输入。 这就是管道的作用。

        管道符使用格式 :  命令1 | 命令2 | 命令3 .......

     

           注

                    #  上示图示,就是为了让大家方便理解 管道 的前后情况。

                    #   process  :  进程 / 程序 的意思

                         stdout     :  标准输出 (一般就是指终端,就是把结果显示在屏幕上)

                          stdin      :  标准输入   

           管道符的使用场合 :

                           当输出内容较多时,为方便浏览,可将输出内容,通过管道符,传递给 more 命

                           令来分页查看,也可传递给 grep 命令实现对指定对象的查看。

                            

                             #  对两个命令 more ,grep 的解释 :

                             #   more   :

                                   作用 : 用于文件内容的浏览,分页浏览,是按页去展示内容的(按空格跳

                                                转下一页,按 q 退出,也可以进行搜索 / ,用 / 搜索)

                                    示例 : more  data.txt

                                    

              more 与 管道符一起使用  :                     

[root@bogon ~]# ls -l | more
total 24
-rw-------. 1 root root 1402 Mar 23 20:07 anaconda-ks.cfg
-rw-r--r--. 1 root root 2381 Apr  7 21:41 baidu.html
-rw-r--r--. 1 root root  168 May 10 23:24 data.txt
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Desktop
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Documents
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Downloads
-rw-r--r--. 1 root root    0 Apr 30 10:25 file1
-rw-r--r--. 1 root root    0 Apr 30 10:27 file2
-rw-r--r--. 1 root root    0 Apr 30 10:27 file3
-rw-r--r--. 1 root root   19 May  8 15:32 first_test.txt
-rw-r--r--. 1 root root 1557 Mar 23 22:19 initial-setup-ks.cfg
drwxr-xr-x. 4 root root  129 May  2 09:48 link_test
drwxr-xr-x. 2 root root   29 May  1 12:17 link_wenjian
drwxr-xr-x. 3 root root   17 Apr 17 17:03 loo
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Music
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Pictures
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Public
drwxr-xr-x. 2 root root    6 Apr  3 11:11 tar_dir
drwxr-xr-x. 2 root root    6 Mar 23 22:23 Templates
drwxr-xr-x. 3 root root   17 Apr 30 11:15 text
drwxr-xr-x. 2 root root    6 Apr 30 10:29 text1
drwxr-xr-x. 2 root root   32 Apr 30 11:12 text3
--More--

  

                  #    grep   :

                                    作用   :根据我们指定的字符串去匹配内容并展示内容,要是没有匹配到则

                                                  不展示。所谓匹配就是查询,搜索,就是搜索你所指定的字符串,

                                                  看看有没有这个你想找的字符串,如果有的话则会把你要找的字符

                                                  串高亮显示,要是没有就什么都不显示。

                                    示例   : 

     grep 与 管道符一起使用   :          

                 

                       注  : grep 会把需要查找的 内容 给 高亮显示出来,如上示图中的 link_test。

注意事项

                      #  管道命令只处理前一个命令的正确输出,不处理错误输出。

                      #  管道符后边的命令,必须能够接收标准输入命令。

        tee : 

               命令功能 : 用于读取标准输入的数据,并将其内容输出成文件和标准输出(终端)上。

               命令格式 : tee  [ - a / - i ]  [ 文件.....]

                                   注 : 

                                             其中, -a 代表 : 附加到既有文件的后面,而不是覆盖既有文件

                                                        - i  代表 : 忽略中断信号。 

               管道符 中的使用  :

                                  格式  : 命令 | tee    [  文件  ]

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

                                 注

                                        #  上示图示即 表示了 tee 命令的用法, tee 命令会把从管道符传过来的

                                             命令便成文件 并且 输出在屏幕也即终端上。

              命令示例 :                               

[root@bogon ~]# echo "123" | tee tee_test.txt
123

                                    #  上示命令便是 tee 命令在管道符中的运用,命令执行后,便可以看到在终

                                        端上显示出 123 ,这便就是 tee 命令功能的一个体现,即将管道符传过

                                        来的命令显示在 终端上。           

[root@bogon ~]# more tee_test.txt
123

                                    #    上示命令便是 tee 命令功能的 第二个体现,即会将管道符传过来的命

                                          令保存至文件中,其文件名就是 tee_test.txt,我们使用 more 命令查

                                           看,确实如此,在 tee_test.txt 中确实含有 123 。   

[root@bogon ~]# echo "456" | tee tee_test.txt
456
[root@bogon ~]# more tee_test.txt
456

[root@bogon ~]# echo "123" | tee tee_test.txt
123
[root@bogon ~]# more tee_test.txt
123

[root@bogon ~]# echo "456" | tee -a tee_test.txt
456
[root@bogon ~]# more tee_test.txt
123
456

                                    #      上示命令,想表明的就是 关于 -a 选项的作用。 如命令所示,当 456 

                                             被执行后,tee_test.txt 里含有的自然是 456。 可是,当 再次执行命

                                             令,只是改了执行成 123 的命令时,在 tee_test .txt 的命令中显示的

                                              却只有 123,说明什么? 说明当再次执行 tee 命令时,会将原先保存

                                              的文件给覆盖掉,即 123 将 456 给覆盖掉了。 那么如何避免这种覆

                                              盖呢?  这时,就需要用到 tee 命令的 -a 选项, 其作用就是追加但不

                                              覆盖。因此,当我们使用 -a 选项后,在 tee_test.txt 文件中原先的

                                             123 并没有被 456 所覆盖掉,这就是 -a 选项的作用。

【文件内容浏览命令】

                

          cat  

                   命令功能  : 查看浏览文本文件内容

                   命令格式  : cat  [ 选项 ]  文件名列表( 意味着可以打开多个文件) 

                                         #  多个文件,将文件内容连接在一起输出。

                   常用选项 

                                        - n :  对输出内容中的所有行标注行号

                                        - b :  对输出内容中的非空行标注行号

                                        示例 :

                                                     #   - n  :效果显示, 对内容所有的行都进行了标注行号,所有的

                                                                    行意味着,无论这行是否有内容,都会进行标注行号。

                                                  

                                                       - b  :  效果显示, 可以看到 当内容中有空行时, - b 选项只对

                                                                   有内容的行,也即 非空行 进行了 标注行号。

                                                    

               

        less / more :           

                     命令功能  :  分页显示内容

                     命令格式  :  less / more   [  选项  ]  文件名

                     常用选项 

                                         - 数字  : 仅适用于 more 命令用来指定分页显示时每页的行数。                                               

                                                          注  :

                                                             #   所谓显示每页的行数,就是只显示几行,上示 more -5

                                                                  即代表只显示 5 行的内容。

                                        + 数字  :  从 数字行开始显示。                                    

[root@bogon ~]# cat data.txt | less  +3

                                                       

                                                           注  :

                                                               #      上示命令的结果即如图所示,仔细对比, dfsfas 就是

                                                                       第三行的内容,也即从第三行开始显示。

                                       

                                       -  N   :   仅适用于 less 命令,其作用是在每行前添加输出行号 。

                                       示例  :                      

[root@bogon ~]# less -N data.txt

                                                       

                                                   :  图示为命令显示结果。

                交互方法 

                                   #  按 enter 向下逐行滚动,按 空格 向下翻页,按 b 向上翻页。

                                   #  more 命令到文件结尾就自动退出, less 命令需要 输入 q 才可以退出。

        head  和 tail  :

                    head  : 头部, 查看文件头部指定行数 : 默认是 10 行

                    tail     :  尾部, 查看文件尾部指定行数 : 默认也是10 行

                    选项   : 

                                - num :  指定查看的行数 

                                             示例 :        

[root@bogon ~]# head -5 data.txt
dsad
sdaf
dfsfas
safsd
gfdfg

                                                #  查看 data.txt 的前五行                   

[root@bogon ~]# tail -5 data.txt
4645
654
687fgr
dfgdg
fgdg

                                                #   查看  data.txt 的后五行

                     

                 注 :强调  tail 命令有一个用法 :

                         tail  可以动态刷新的查看某些文件的内容,假设要查看一个日志文件,你再查看日

                         志文件的时候,其它一些程序还在往日志文件中写内容。

                         假设 :  14 :00 查看的文件, 14 : 10 还在往文件里写内容,普通查看,只能查

                                       看到  14 :00 ,看不到 14 :10 的内容。  因此就要使用 -f 选项

                          - f  :  是用来 动态刷新文件内容,并放在末尾。                        

               语法格式 : tail   -f  [ 文件 ]    ( 选项 f 前当然还可以 加数字来查看多少行)       

                          

                                                                            

【练习】

                  #  使用 ls  -l  查看当前目录的内容,使用管道符将 ls -l 的内容输出,作为 grep 命令的

                      输入查找test        

[root@bogon ~]# ls -l | grep test
-rw-r--r--. 1 root root   19 May  8 15:32 first_test.txt
drwxr-xr-x. 4 root root  129 May  2 09:48 link_test
-rw-r--r--. 1 root root    8 May 12 16:13 tee_test.txt

                      注  : 由于版本原因,其实,上示里,所有 test 的字样都是高亮突出现实的。

                  

                  #  tee 命令的使用 ls -l 查看当前目录的内容,然后使用管道,将 ls -l 的输出作为 tee

                       的输入,并保存到 result.txt 中。                

[root@bogon ~]# ls -l | tee result.txt
[root@bogon ~]# cat result.txt

                         : 具体命令操作即如上示表示。内容太长,不展示。

                                                

                                                

                                    

                                

                

                                

        

                        

                        

                                 

        ​​​​​​​        ​​​​​​​         

                        

                                                  

  

                                        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础三 * 下 【vim 编辑器】 【管道】【文件内容浏览命令】 的相关文章

  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • VIM:我如何知道关键字使用了哪个突出显示规则?

    colorscheme default 文件类型是php 谁能帮我找出突出显示规则 hi light 将列出所有定义的规则并进行预览 您还可以查询单个项目 hi Keyword 手动查找任何语法组在光标下 有选择 我的是一个绑定到键的函数
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • 如何使用 vim 作为寻呼机设置彩色 git diff

    我无法配置 git 来遵循我的请求 使用 vim 作为差异分页器 在交互模式下添加文件时保留差异颜色 My gitconfig setup color ui auto diff false pager diff vim 通过此配置 交互模式
  • 如何访问 mmaped /dev/mem 而不导致 Linux 内核崩溃?

    我有一个简单的程序 尝试访问用户空间中的物理内存 其中内核存储第一个结构页 在 64 位机器上 该地址是 内核虚拟地址 ffffea0000000000 物理地址 0000620000000000 我正在尝试通过用户空间中的 mmap 访问
  • 推荐用于小型站点的 IRC 服务器 (ircd)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 情况 我想使用 IRC 机器人作为我正在研究的其他代码的通用通信接口 服务器硬件陈旧且内存不足 但运行在相对最新的 Debian GNU
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • 用于编辑 /etc/sudoers 文件的正则表达式模式

    我想删除 etc sudoers 文件中的 uncommnet 轮组 那么我应该使用什么正则表达式模式 cat etc sudoers Allows members of the sys group to run networking so
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 如何将 elf 解释器(ld-linux.so.2/ld-2.17.so)构建为静态库?

    如果我的问题不准确 我深表歉意 因为我没有太多 Linux 相关经验 我目前正在构建一个 Linux 从头开始 主要遵循 linuxfromscratch org 版本的指南 7 3 我遇到了以下问题 当我构建可执行文件时 获取一个称为 E
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second

随机推荐