美文网首页
shell命令3------文件管理与编辑

shell命令3------文件管理与编辑

作者: 我弟是个程序员 | 来源:发表于2017-09-13 17:31 被阅读0次

    Linux下进行操作,与文件打交道是常用的操作,这一节要学习的是Linux下的文件操作

    1.mkdir 命令

    用于创建一个目录。是make directory的缩写。其命令格式:

    mkdir [选项] 目录名
    
    选 项 说 明
    -m 对新建目录设置存取权限
    -p 可以指定一个路径名,此时,若路径中的某些目录尚不存在,用此选项后,系统会自动创建那些尚不存在的目录,也就说,一次可以创建多个目录
    2.more 命令

    如果一个文本文件太长,一屏不能显示完全,就需要使用more命令。more命令读取文本文件时,每次显示一屏,并且在每屏后暂停,同时在屏幕底部显示单词“more”。如果此时按ENTER键,会接着显示文本的另一行,如果按空格键,就会显示文本文件的下一屏信息。格式如下:

    more [选项] 文件名 
    
    选 项 说 明
    -d 在屏幕底部more提示符后显示友好信息,此信息是显示有关哪些键继续,哪些键退出,哪些键帮助等
    -s 将输出文件的多个空行减少为一个空行输出。以文件的第一行为准
    -p 清楚屏幕以前的信息,再显示文本信息
    -c 显示问件时,没屏显示都清楚屏幕先前的信息然后从最顶端显示出来
    > more tomcat.log  //以分屏展示信息
    > more -c -10 tomcat.log  //显示tomcat.log文件内容,每10行显示一屏,同时清除屏幕。
    
    3.cat 命令

    可以用来将文件的内容输出到标准输出,同时cat还可以用于连接合并文件。格式如下:

    cat [选项] 文件名
    

    或者

    cat file1 file2 >file
    
    选 项 说 明
    -A 将文件的制表符显示问“^I”,同时在每行的末尾显示“$”符号
    -b 将文件所有非空行按顺序编号,编号从1开始
    4.diff 命令

    用来比较文件的差异。diff以逐行的形式比较文件的异同,如果指定比较的是目录,则只会比较目录下相同文件名的文件,不会比较其子目录。格式如下:

    diff [选项] file1 file2
    
    选 项 说 明
    -c 显示全部内容,并标出不同之处
    -b 忽略行尾空格,同时字符串中的一个或多个空格都将视为相同
    -r 当file1、file2为目录时,比较子目录中的文件
    -s 两个文件相同时,显示文件的相同信息
    5.grep 命令

    文本过滤工具,根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。格式如下:

    grep [选项] 需要查找的字符串文件名
    
    选 项 说 明
    -c 只显示符合条件的行数,不显示每行的具体信息
    -i 搜索时,忽略大小写
    -n 搜索结果中显示行号
    -f file 事先将要搜索的样式写进一个文件,每行一个样式,然后以这个文件作为条件进行搜索
    > grep -ni rpm install.log  //列出 install.log文件中含有rmp字符串的所有行,忽略大小写,并标识具体行号
    
    6. rm 命令

    用来删除某个目录及其下的所有文件及子目录。对于链接文件,只是断开了链接,原文件保持不变。格式如下:

    rm [选项] 文件或目录
    
    选 项 说 明
    -r 告诉rm命令将选项中列出的全部目录以及子目录还有文件进行递归删除,如果选项中不加入“-r”选项,rm命令将不能删除目录
    -f 忽略不存在的问题,也不给提示
    -i 交互式删除,在删除前进行确认

    注意,rm -rf 组合要慎用,多用 rm -i 进行交互式删除。

    7.touch 命令

    用来修改指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。格式如下:

    touch [选项] 设定的时间文件
    
    选 项 说 明
    -a 改变文件的访问时间为系统时间,无需设置时间选项
    -m 改变文件的修改时间为系统时间,无需设置时间选项
    -c 如果文件不存在,不创建也不提示
    -d 或 -t 使用指定的日期或时间
    8.ln 命令

    用来在文件或目录间创建链接。

    Linux下,链接有两种方式,一种是硬链接,另一种是符号链接。默认情况下,ln命令产生的是硬链接。

    • 硬链接 :是指通过文件的inode来进行链接。在Linux文件系统中,保存在内存中的所有类型文件都会分配一个编号,这个编号被称为inode号(Inode Index)。多个文件指向同一个Inode在Linux系统中是允许的,这就是所谓的硬链接。硬链接的作用是允许一个文件拥有多个有效的路径名,这样用户就可以对一些重要文件进行硬链接,以防止误删操作。因为对应该文件的inode有一个以上的链接,所以删除一个链接并不影响inode本身和其他链接,只有当最后一个链接被删除后,该文件数据块和目录的链接才会被释放,也就是此文件才真正被删除。
    • 符号链接:也叫软链接,类似于windows下的快捷方式,因此软连接是指向真正文件或者目录位置的符号链接。
      格式如下:
    ln [选项] 源文件目标链接名
    
    选 项 说 明
    -f 如果在目标位置存在与链接名相同的文件,这个文件将被删除
    -s 进行软链接
    -d 允许系统管理员硬链接自己的目录
    -b 对将在链接时会被覆盖或删除的文件进行备份
    ln命令

    上面的命令首先切换到 /home目录下,新建了一个目录test,然后进行ln操作,将/home/personal/目录下的test.txt文件,硬链接到刚才创建的/home/test目录下,此时,该目录下也产生了一个test.txt文件,并且文件内容一样。如果你修改任意一个文件,另外一个文件也会变。

    9.file 命令

    用来显示文件的类型。对于长度为0的文件,将被识别为空文件;对于符号链接文件,默认情况下将显示符号链接引用的真是文件路径。格式如下:

    file [选项] 文件名
    
    选 项 说 明
    -b 显示文件类型结果,不显示对应文件名称
    -L 直接显示符号链接所指向文件的类型
    -z 显示压缩文件的信息
    -i 如果文件不是常规文件,则不进一步对文件类型进行分类
    file命令
    10. cp 命令

    将给出的文件或 目录复制到另一个文件或是目录中。格式如下;

    cp [选项] 源文件或目录 目标文件或目录
    
    选 项 说 明
    -a 在复制目录时使用。它保留所有的信息,包括文件链接、文件属性,并递归的复制目录
    -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件,此时目标文件必须是一个目录名
    -d 复制时保留链接,这样不会失去链接文件
    -p 保留文件的修改时间和存储权限
    -i 如果已经有相同的文件名或目标文件,则提示用户是否覆盖
    > cp -r ./* /tmp //将当前目录下的所有文件复制到tmp目录下,“./*”表示当前目录下的所有文件及目录
    
    > cp -r /home/oracle /home/ixdba //将 /home/oracle 目录下及其子目录下的所有内容复制到 /home/ixdba 下
    
    11.find 命令

    用来在指定路径下查找指定文件。格式如下:

    find path-name[-options] [-print -exec -ok命令 {} \;]
    
    • path-name:find命令查找的目录路径,例如,可以用“.”表示当前目录,“/”表示系统根目录
    • -options:用来控制搜索的方式。

    “-options”常见的几个格式:

    选 项 说 明
    -name '字符串' 查找文件匹配所给字符串的所有文件,字符串可以使用通配符 ?、 []、 *
    -lname '字符串' 查找文件匹配所给字符串的所有符号链接文件,字符串可以使用通配符 ?、 []、 *
    -path '字符串' 查找路径名匹配所给字符串的所有文件,字符串可以使用通配符 ?、 []、 *
    -user '字符串' 查找用户名为所给字符串的所有文件
    -group '字符串' 查找用户组名为所给字符串的所有文件
    • -print:将搜索结果输出到标准输出
    • -exex:将所搜符合条件的文件执行所给出的Linux命令,而不许问用户是否执行该命令。{}表示shell命令的选项即为所查找的文件,命令的末尾必须以“;”结束。
      注意:格式要正确,“-exec 命令 {} ;”,“}”与“\”之间一定要有空格。
    • -ok:对搜符合条件的文件执行所给出的Linux命令,与“-exex”不同的是,它会询问用户是否执行该命令。
    12.split 命令

    用来分割文档,将一个文件分割成数个。格式如下:

    split [选项] [input_file] [output_file]
    
    选 项 说 明
    -b size 制定分割出来的文件大小,size可以加入单位,b代表512字节,k代表1KB,m代表1MB
    -n 分割的每个文件的长度,默认为1000行
    -d 生成的文件序列以数字形式命名
    -a 生成的文件序列的长度,默认长度为2
    • input_file:要分割的文件
    • output_file:分割出来的文件序列,生产的文件序列名依次是“output_fileaa”、“output_fileab”、“output_fileac”等,如果没有制定output_file,系统默认以“x”作为输出文件名。
    > split -b 10m access_log access_log_bak //设定每个分割文件的大小为10M,执行完毕后,生成的文件一次是access_log_bakaa,access_log_bakab等,每个文件大小是10M
    
    >split -b 2M -d -a 3 /opt/etc.zip /opt/etc_zip_bak //执行完毕后,在/opt目录下生产etc_zip_bak001、etc_zip_bak002、etc_zip_bak3等文件
    
    13.mv 命令

    将文件或是目录改名,或是讲文件从一个目录移到另一个目录下。源文件和目标文件,都是文件或是目录,表示改名。源文件是文件,目标文件是目录,很显然时移动文件。格式如下:

    mv [选项] 源文件或目录 目标文件或目录
    
    选 项 说 明
    -i 交互式操作,在对已存在的文件或目录覆盖时,系统会询问是否覆盖,y/n
    -f 禁止交互操作,mv指令将要覆盖文件或目录时,不给任何提示,默认覆盖

    相关文章

      网友评论

          本文标题:shell命令3------文件管理与编辑

          本文链接:https://www.haomeiwen.com/subject/rfuksxtx.html