zoukankan      html  css  js  c++  java
  • 9.文件管理

    ------------恢复内容开始------------

    学习目标

    • 能够熟练编写文件相关命令

    • 能够熟练编写文件解压缩命令

    • 能够熟练编写网络查看简单命令

    • 能够熟练编写查看磁盘命令、挂载命令

    • 能够知道如何使用命令进行分区、格式化

    • 能够熟练使用yum进行查找、安装、卸载软件

    • 能够熟练使用rpm进行查找、安装、卸载软件

    • 能够熟练编写常用的shell脚本

    1 Linux文件管理

    1.1 touch命令

    在Windows系统中,我们如果想创建一个文本文档或者word文件的时候,通常的做法是
    鼠标右键---新建---文本文档,这样的话,我们就成功的创建了一个文件,而在Linux中,我们可以通过字符命令的形式进行创建

    touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。如果存在就修改时间属性

    ls -l 可以显示档案的时间记录

    使用者权限:所有权限用户

    语法

    touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
    • 参数说明

    • a 改变档案的读取时间记录。

    • m 改变档案的修改时间记录。

    • c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

    • f 不使用,是为了与其他 unix 系统的相容性而保留。

    • r 使用参考档的时间记录,与 --file 的效果一样。

    • d 设定时间与日期,可以使用各种不同的格式。

    • t 设定档案的时间记录,格式与 date 指令相同。

    • --no-create 不会建立新档案。

    • --help 列出指令格式。

    • --version 列出版本讯息。

    使用 touch 创建一个空文件

    在 Linux 系统上使用 touch 命令创建空文件,键入 touch,然后输入文件名。如下所示

    touch czbk-devops.txt

    查看

    ls -l czbk-devops.txt

    执行效果如下图

    使用 touch 创建批量空文件

    在实际的开发过程中可能会出现一些情况,我们必须为某些测试创建大量空文件,这可以使用 touch 命令轻松实现

    touch czbk-{1..10}.txt

    在上面的例子中,我们创建了 10 个名为 czbk-1.txtczbk-10.txt` 的空文件,你可以根据需要更改名称和数字

    执行查看命令

    ls -l

    执行效果如下

     

    由上图我们发现,我们通过批量命令创建了10个txt文件

    改变/更新文件访问时间

    假设我们想要改变名为 czbk-devops.txt 文件的访问时间,在 touch 命令中使用 -a 选项,然后输入文件名。如下所示:

    1、我们先 查看下czbk-devops.txt的时间属性

    ls -l czbk-devops.txt 

    执行效果如下

    我们发现,最后的访问时间是12月 18 11:34

    更新时间属性,如下

    touch czbk-devops.txt 

    执行ls命令查看,如下

    ls -l czbk-devops.txt 

     

    我们发现,访问时间变成了 12月 18 13:50

    我们也可以使用stat命令进行查看,如下:

    stat czbk-devops.txt 

    执行效果如下图

    由上图可知:czbk-devops.txt的文件属性、包含访问时间、更改时间、最近改动时间都显示出来了。

    关于stat命令:

    stat命令用于显示inode内容。

    stat以文字的格式来显示inode的内容。

    语法

    stat [文件或目录]

    touch a.txt       不存在就创建,存在就修改时间属性

    touch a{1..10}.txt      批量创建空文件

    stat a.txt        查看文件的详细信息

    1.2 vi与vim命令

    1.2.1 vi/vim介绍

    使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作

    1、vi介绍

    vi是 visual interface的简称, 是linux中最经典的文本编辑器。

    • vi的特点

      • 只能是编辑 文本内容, 不能对 字体 段落进行排版

      • 不支持鼠标操作

      • 没有菜单

      • 只有命令

    • vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的

    2、vim介绍

    vim:是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。

    vim 则可以说是程序开发者的一项很好用的工具。

    1.2.2 vi/vim模式

    vi/vim模式主要分为以下三种:

    命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。 编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。 末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。

    下面是三种模式的简单分析图:

    上图总结

    上面的三种模式简单总结下就是:

    1、vim 开始进入时是命令模式

    2、按下I的时候会进入编辑模式

    3、按下ESC然后在按下:的时候是末行模式

     

    1.2.3 打开和新建文件

    使用vim不但可以打开一个现存的文件;也可以生成(vim后的文件不存在的情况下)一个文件;有点类似于我们在Windows中输入notepad命令一样,我们输入notepad后就会打开一个文本文档,然后进行编辑--另存为。

    使用者权限:当前文件的权限用户

    • 在终端中输入vim在后面跟上 文件名 即可

    vim txtfile.txt
    • 如果文件已经存在, 会直接打开该文件

    • 如果文件不存在, 保存且退出时 就会新建一个文件

    注意

    我们通过下面的三种模式切换详细阐述vim的用法

    1.2.4 三种模式切换

    1、进入命令模式

    上接上面的例子,我们执行下面的命令其实就是进入了命令模式

    vim txtfile.txt

    执行效果如下图

    2、进入编辑模式

    上接上面的例子,按i进入插入模式

    • 在 vi 中除了常用 i 进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式

    命令英文功能常用
    i insert 在当前字符前插入文本 常用
    I insert 在行首插入文本 较常用
    a append 在当前字符后添加文本  
    A append 在行末添加文本 较常用
    o   在当前行后面插入一空行 常用
    O   在当前行前面插入一空行 常用

    上图可以表现为以下形式,如下图

     

     执行效果如下图

     

    由上图左下角我们看到【插入】(英文版为INSERT),说明我们进入了编辑模式

    我们在里面插入数据,如下图

    因为我们是一个空文件,所以使用【I】或者【i】都可以

    如果里面的文本很多,要使用【A】进入编辑模式,即在行末添加文本

     

    3、进入末行模式

    编辑模式不能保存文件 必须先推到命令模式 先按Esc键退出到命令模式 然后按小写的:wq 正常保存退出

    进入末行模式—》按符号: 鼠标跑到屏幕的最后一行,执行效果如下图

     

     然后按小写的:wq 正常保存退出

     

     退出后显示【已写入】

     

    以下为其他的退出模式:

    :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出

    :q! 当vim进入文件对文件内容有操作但不想保存退出

    :wq 正常保存退出

    :wq! 强行保存退出,只针对与root用户或文件所有人生

    总结

    三种模式的切换,其实就完成了文件创建、编辑、保存、退出四个步骤

    那么接下来,我们学习下一个命令

    查看刚才新创建的文件

     三种模式切换

    vim 文件名                          如果文件已经存在,会直接打开该文件

    i                                           进入编辑模式

    :wq!                                强制保存退出

     

    1.2.5 文件查看

    比如查看一个txt文档,在windows中,我们通常是打开一个文件,通过鼠标滚动查看文件不同节选的内容,而在Linux中,通过下面的命令,可以减少在Windows中手工查找的步骤,在Linux中通过命令+参数的形式进行定位查看、搜索查看

    以下5个为文件查看命令,我们只讲4个常用的命令,head不在赘述

    序号命令对应英文作用
    01 cat 文件名 concatenate 查看小文件内容
    02 less -N 文件名 less 分频 显示大文件内容
    03 head -n 文件名   查看文件的前一部分
    04 tail -n 文件名   查看文件的最后部分
    05 grep 关键字 文件名 grep 根据关键词, 搜索文本文件内容

    总结:

    以上5个命令都可以查询文件的内容,他们的功能如下

    通过 cat 会一次显示所有的内容, 适合 查看内容较少 的文本文件

    less 命令适合查看 内容较多 的文本文件

    通过 head 命令查看文档的前几行内容

    通过 tail -10f 文件 命令 查看文档(日志)的后几行内容

    通过 grep 命令 搜索存在 关键字 的行

    1) cat命令

    使用cat命令类似于我们在Windows中查看小型(太大的时候打开会卡死)的文件,cat常用的功能其实就等价于Windows中的
    txt---打开--查看

    cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名,如cat txtFiles.txt

    使用者权限:当前文件的权限用户

    语法格式

    cat [-AbeEnstTuv] [--help] [--version] fileName

    查看文件名为txtfile.txt的内容

    cat txtfile.txt

    执行效果如下图

     

    查看文件名为txtfile.txt的内容(加入行号)

    cat -n txtfile.txt

    执行效果如下图

    2) grep命令

    grep命令在使用的时候类似于我们的程序中的查询,或者在txt文档中通过ctr+f查找
    grep除了能对文件操作为还可以查看我们的进程信息,类似于我们在Windows系统的任务管理器(任务栏--右键---启动任务管理器--进程)下的进程

    grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

    grep 命令用于查找文件里符合条件的字符串,语法如下:

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    使用者权限:当前文件的权限用户

    我们还是使用上面的txtfile.txt文件,如下图

    为了测试效果,我们新增了其他数据

    增加过程不在赘述

    1、搜索 存在关键字【eeee】 的行的文件

    grep eeee txtfile.txt 

    执行效果如下

    2、搜索 存在关键字【eeee】 的行 且 显示行号

    grep -n eeee txtfile.txt 

     

    3、忽略大小写 搜索 存在关键字 的行

    grep -i EEEE txtfile.txt 

    执行效果如下

    4、搜索 不存在关键字 的行

    grep -v 中国 txtfile.txt 

    执行效果如下

    5、查找指定的进程信息(包含grep进程)

    ps -ef | grep  sshd

    执行效果如下

    说明

    除最后一条记录外,其他的都是查找出的进程;最后一条记录结果是grep进程本身,并非真正要找的进程

    6、查找指定的进程信息(不包含grep进程)

    ps aux | grep sshd | grep -v "grep"

    执行效果如下

    7、查找进程个数

     ps -ef|grep -c sshd

    执行效果如下

    由上图可知sshd的进程个数为4(包含grep进程本身)

    grep 命令

      grep 关键字 small.txt            把包含关键字的行展示出来

      grep -n 关键字 small.txt         把包含关键字的行展示出来且加上行号

      grep -i关键字 small.txt           把包含关键字的行展示出来,搜索时忽略大小写

      grep -v关键字 small.txt          把包含关键字的行展示出来

      ps -ef | grep 关键字               查找指定的进程信息,包含grep进程

      ps -ef | grep 关键字 | grep -v “grep”                查找只当的进程信息,不包含grep进程

      ps -ef | grep -c sshd               查找进程个数

     

    3) tail命令

    tail命令类似于我们在windows中通过鼠标手工查找,比如查看文件最后10行,从第2行一直查看到文件末尾,或者只查看文件末尾的一些信息,这些windows中都是通过人为干预的方式进行查找,在Linux中我们可以通过tail命令实现

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

    使用者权限:当前文件的权限用户

    命令格式:

    tail [参数] [文件]  

    1、要显示 txtfile.txt 文件的最后 3 行,请输入以下命令:

    tail -3 txtfile.txt 

    原始文件内容如下

     最后3行内容如下

    2、动态显示文档的最后内容,一般用来查看日志,请输入以下命令:

    tail -f txtfile.txt

    执行效果如下:

    此命令显示 txtfile.txt 文件的最后 10 行。当将某些行添加至 txtfile.txt 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

    如果要显示最后4行,命令如下:

    tail -4f txtfile.txt

    执行效果如下

    3、显示文件txtfile.txt 的内容,从第 2 行至文件末尾

    tail  -n +2  txtfile.txt

    执行效果如下

    4、显示文件 txtfile.txt的最后 10 个字符:

    tail -c 45 txtfile.txt

    执行效果如下

     

    总结

    在tail使用的过程中,我们使用最多的就是查看文件末尾多多少行

    使用tail -nf txtfile.txt

    通常都是在查看日志信息(报错调试时使用)

    tail -3 big.txt            显示文件最后三行

    tail -f big.txt             显示文件最后10 行

    tail -4f big.txt             动态显示最后4行

    tail -n+2 big.txt          显示文件a.txt的内容,从第二行至文件末尾

    tail -c 45 big.txt          显示最后一些字符

    4)less命令

    less命令也是查看文件的,只不过它适合查看 内容较多的文本文件,它也可以用于分屏显示文件内容,  每次只显示一页内容,有点类似我们做分页查询

    less用于查看文件,但是less 在查看之前不会加载整个文件。

    使用者权限:当前文件的权限用户

    语法

    less [参数] 文件 

    1、查看txtfile.txt文件

    less txtfile.txt

    执行效果如下

    2、查看命令历史使用记录并通过less分页显示

    [itcast@localhost ~]$  history | less
       1 ifconfig
       2 reboot
       3 ifconfig
       4 reboot
       5 ifconfig
       6  su root
       7 ifconfig
       8  ping www.baidu.com
       9
      10 ifconfig
      11 date
      12 hwclock --systohc
      13  su root
     
      ......略

    我们输入【j】可以前进行

    输入【k】可以后退行

    输入【G】可以 移动到最后一行

    输入【g】可以移动到第一行

    输入【ctrl + F】 向前移动一屏(类似于我们在浏览器中的数据分页的下一页)

    输入【ctrl + B】 向后移动一屏(类似于我们在浏览器中的数据分页的上一页)

    其他命令

    1.全屏导航

    • ctrl + F - 向前移动一屏

    • ctrl + B - 向后移动一屏

    • ctrl + D - 向前移动半屏

    • ctrl + U - 向后移动半屏

    2.单行导航

    • j - 向前移动一行

    • k - 向后移动一行

    3.其它导航

    • G - 移动到最后一行

    • g - 移动到第一行

    • q / ZZ - 退出 less 命令

    less a.txt         查看大文件a.txt的内容

    less -N a.txt     查看大文件a.txt的内容(加入行号)

    1.2.6 vim定位行

    在日常工作中,有可能会遇到打开一个文件,并定位到指定行的情况
    例如: 在开发时, 知道某一行代码有错误,可以快速定位到出错误代码的位置
    这个时候,可以使用以下命令打开文件

    由于我们这里还没有学到上传文件的命令,所以我们这里还是使用上面的txtfile.txt例子,我们打开文件定位到第6行,如下:

    vim txtfile.txt +6

    执行效果如下图

    1.2.7 异常处理

    • 如果 vim异常退出, 在磁盘上可能会保存有 交换文件

    • 下次再使用 vim 编辑文件时, 会看到以下屏幕信息,

    解决方案:

    将后缀名为.swp的文件删除即可恢复

     再次编辑文件不在出现提示警告!

    1.2.8 操作扩展

    要熟练使用vi/vim, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用

    命令功能手指
    h 向左 食指
    j 向下 食指
    k 向上 中指
    l 向右 无名指

    也可以使用键盘上的上下左右箭头,这个更有方向感。

    2) 行内移动

    命令英文功能
    w word 向后移动一个单词
    b back 向前移动一个单词
    0   行首
    ^   行首, 第一个不是空白字符的位置
    $   行尾

    3) 行数移动

    命令英文功能
    gg go 文件顶部
    G go 文件末尾
    数字gg go 移动到 数字 对应行数
    数字G go 移动到 数字 对应行数
    : 数字   移动到数字对应的 行数

    4) 屏幕移动

    命令英文功能
    Ctrl + b back 向上翻页
    Ctrl + f forward 向下翻页
    H Head 屏幕顶部
    M Middle 屏幕中间
    L Low 屏幕底部

    5) 选中文本(可视模式)

    • 学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码

    • 在 vi/vim 中要选择文本, 需要显示 visual 命令切换到 可视模式

    • vi/vim 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式

    • 按 ESC 可以放弃选中, 返回到 命令模式

    命令模式功能
    v 可视模式 从光标位置开始按照正常模式选择文本
    V 可视化模式 选中光标经过的完整行
    Ctrl + v 可是块模式 垂直方向选中文本

    6) 撤销和恢复撤销(保命指令)

    在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作

    命令英文功能
    u undo 撤销上次的命令(ctrl + z)
    Ctrl + r uredo 恢复撤销的命令

    7) 删除文本

    命令英文功能
    x cut 删除光标所在的字符,或者选中的文字
    d(移动命令) delete 删除移动命令对应的内容
    dd delete 删除光标所在行, 可以删除多行
    D delete 删除至行尾

    提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本

    删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):

    命令作用
    dw 从光标位置删除到单词末尾
    d} 从光标位置删除到段落末尾
    ndd 从光标位置向下连续删除 n 行

    8) 复制和剪切

    • vi/vim 中提供有一个 被复制文本的缓冲区

      • 复制 命令会将选中的文字保存在缓冲区

      • 删除 命令删除的文字会被保存在缓冲区

      • 在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置

    命令英文功能
    yy copy 复制行
    d(剪切命令) delete 剪切
    dd(剪切) delete 剪切一行, 可以 ndd 剪切n行
    p paste 粘贴

    提示:

    • 命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x

    • 命令 y 类似于 图形界面的 复制操作 -- Ctrl +

    • 命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v

    • vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.

    注意

    • vi中的 文本缓冲区 和 系统的 剪切板 不是同一个

    • 所以在其他软件中使用 Ctrl + C 复制的内容, 不能再 vi 中通过 p 命令粘贴

    • 可以在 编辑模式 下使用 鼠标右键粘贴

    9) 替换

    命令英文功能工作模式
    r replace 替换当前字符 命令模式
    R replace 替换当前行光标后的字符 替换模式
    • R 命令可以进入 替换模式, 替换完成后, 按下ESC , 按下 ESC 可以回到 命令模式

    • 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改

    10) 缩排和重复执行

    命令功能
    >> 向右增加缩进
    << 向左减少缩进
    . 重复上次命令
    • 缩进命令 在开发程序时, 统一增加代码的缩进 比较有用!

      • 一次性 在选中代码前增加 4 个空格, 就叫做 增加缩进

      • 一次性 在选中代码前删除 4 个空格, 就叫做 较少缩进

    • 可视模式 下, 缩排命令 主需要使用 一个 > 或者 <

    在程序中, 缩进 通常用来表示代码的归属关系

    • 前面空格越少, 代码的级别越高

    • 前面空格越多, 代码的级别越低

    11) 查找

    常规查找

    命令功能
    /str 查找str
    • 查找到指定内容之后, 使用 Next 查找下一个出现的位置

      • n : 查找下一个

      • N : 查找上一个

    • 如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可

    • 单词快速匹配

    命令功能
    * 向后查找当前光标所在单词
    # 向前查找当前光标所在单词
    • 在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过

    12) 查找并替换

    • vi/vim 中查找和替换命令需要在 末行模式 下执行

    • 记忆命令格式

    :%s///g

    1) 全局替换

    • 一次向 替换文件中的 所有出现的旧文本

    • 命令格式如下

      :%s/旧文本/新文本/g

    2) 可视区域替换

    • 先选中 要替换文字的 范围

    • 命令格式如下

    :s/旧文本/新文本/g

    3) 确认替换:

    c confirm 确认

    • 如果把末尾的 g 改成 gc 在替换的时候, 会有提示! 推荐使用

    • 命令格式如下

      :%s/旧文本/新文本/gc
    1. y - yes 替换

    2. n - no 不替换

    3. a - all 替换所有

    4. q -quit 退出替换

    5. l - last 最后一个, 并把光标移动到行首

    6. ^E 向下滚屏

    7. ^Y 向上滚屏

    ------------恢复内容结束------------

  • 相关阅读:
    XCode4 App Store提交小结
    Android Fragment完全解析,关于碎片你所需知道的一切
    [iOS开发系列]根据Debug和Release状态的变化来屏蔽日志输出
    iOS5可能会删除本地文件储存
    iOS5可能会删除本地文件储存
    应用中弹出 WiFi 提示框的方法
    cannot be translated into a null value due to being declared as a primitive type. Consid
    在pom.xml文件中自定义JDK版本+阿里maven镜像修改
    Docker化tomcat 并且使用maven热部署
    使用wget下载JDK8
  • 原文地址:https://www.cnblogs.com/faded8679/p/13955077.html
Copyright © 2011-2022 走看看