Linux——文件目录管理

文章目录

  • Linux目录结构
    • 常见子目录的作用
      • 查看文件内容cat命令
      • 查看文件内容more命令
      • 查看文件内容less命令
      • 查看文件内容head、tail命令
      • wc命令 – 统计文件的字节数、字数、行数
      • grep命令 – 强大的文本搜索工具
      • gzip命令 – 压缩和解压文件
      • bzip2命令 – bz2文件的压缩程序
      • tar命令 – 打包和备份的归档工具
      • vi命令 – 文本编辑器

Linux目录结构

  • 树形目录结构
  • 根目录
    • 所有分区、目录、文件等的位置起点
    • 整个树形目录结构中,使用独立的一个"/"表示
  • 常见的子目录
    • /root /bin /boot /dev  /etc
    • /home  /var /usr  /sbin

常见子目录的作用

/root:系统管理员root的宿主目录
/home:普通用户的宿主目录
/boot:系统内核、启动文件
/dev:设备文件
/etc:配置文件
/bin:所有用户可执行的命令
/sbin:管理员可执行的管理命令
/usr:应用程序
/var:日志文件等

查看文件内容cat命令

  • Linux系统中有很多个用于查看文件内容的命令,每个命令又都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件的
  • 语法格式:cat [选项] [文件]
    • 示例
[root@localhost ~]# cat /etc/hosts
[root@localhost ~]# cat /etc/sysconfig/network
[root@localhost ~]# cat /etc/redhat-release /proc/version

查看文件内容more命令

  • more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字。而对于内容较少的文本文件内容则推荐使用cat命令查看
  • 语法格式:more [选项] [文件]
    • 命令内部操作:
    • Space键:显示文本的下一屏内容
    • Enter键:向下n行,需要定义,默认为1行
    • 斜线符\:接着输入一个模式,可以在文本中寻找下一个相匹配的模式
    • H键:显示帮助屏
    • B键:显示上一屏内容
    • Q键:退出more命令
    • Ctrl+F、空格键:向下滚动一屏
    • Ctrl+B:返回上一屏
    • =: 输出当前的行号
    • : f:输出文件名和当前的行号
    • V:调用vi编辑器
    • !:调用Shell,并执行命令

查看文件内容less命令

  • less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览 。
  • 语法格式:less [选项] [文件]
  • 命令内部操作:
    • b 向后翻一页
    • d 向后翻半页
    • h 显示帮助界面
    • Q 退出less 命令
    • u 向前滚动半页
    • y 向前滚动一行
    • 空格键 滚动一页
    • 回车键 滚动一行
    • Page Up向上翻页
    • Page Down向下翻页
    • 按"I”键查找内容
    • n 下一个内容
    • N 上一个内容

查看文件内容head、tail命令

  • head命令
    • head命令以行为单位,取文件的内容,后面不接参数时默认打印前10行。
    • 语法格式:head [选项] [文件]
-n	后面接数字,代表显示几行的意思
-c	指定显示头部内容的字符数
-v	总是显示文件名的头信息
-q	不显示文件名的头信息
  • 参考实例
    显示前3行文件内容:
[root@linuxcool ~]# head -n 3 install.log
Installing libgcc-4.4.7-23.el6.x86_64
warning: libgcc-4.4.7-23.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing setup-2.8.14-23.el6.noarch
  • tail命令
    • tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
    • 语法格式:tail [选项]
    • 参考实例

显示文件file的最后10行:

[root@linuxcool ~ ]  tail file

显示文件file的内容,从第20行至文件末尾:

[root@linuxcool ~ ]  tail +20 file 

显示文件file的最后10个字符:

[root@linuxcool ~ ]  tail -c 10 file 

一直变化的文件总是显示后10行:

[root@linuxcool ~ ]  tail -f 10 file

wc命令 – 统计文件的字节数、字数、行数

  • wc命令统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。
  • 语法格式:wc [选项] [文件]
  • 常用选项:
-w	统计字数,或--words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-c	统计字节数,或--bytes或--chars:只显示Bytes数
-l	统计行数,或--lines:只显示列数
-m	统计字符数
-L	打印最长行的长度
  • 参考实例
  • 统计字数:
[root@linuxcool ~]# cat test.txt 
 hello world
 hello world
 hello world 
 hello world
 hello world
[root@linuxcool ~]# wc -w test.txt 
 10 test.txt

统计字节数:

[root@linuxcool ~]# wc -c test.txt 
 60 test.txt

统计字符数:

[root@linuxcool ~]# wc -m test.txt 
 60 test.txt

统计行数:

[root@linuxcool ~]# wc -l test.txt 
 4 test.txt

打印最长行的长度:

[root@linuxcool ~]# wc -L test.txt 
 23 test.txt

grep命令 – 强大的文本搜索工具

  • grep是“global search regular expression and print out the
    line”的简称,意思是全面搜索正则表达式,并将其打印出来。这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令。
  • grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。需要注意的是:一当模式中包含了空格,务必要用双引号将其引起来。
  • linux系统支持三种形式的grep命令,大儿子就是grep,标准,模仿的代表。二儿子兴趣爱好多-egrep,简称扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式。小儿子跑的最快-fgrep,简称快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。
  • 语法格式: grep [选项]
-i	搜索时,忽略大小写
-c	只输出匹配行的数量
-l	只列出符合匹配的文件名,不列出具体的匹配行
-n	列出所有的匹配行,显示行号
-h	查询多文件时不显示文件名
-s	不显示不存在、没有匹配文本的错误信息
-v	显示不包含匹配文本的所有行
-w	匹配整词
-x	匹配整行
-r	递归搜索
-q	禁止输出任何结果,已退出状态表示搜索是否成功
-b	打印匹配行距文件头部的偏移量,以字节为单位
-o	与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

参考实例

支持多文件查询并支持使用通配符:

[root@linuxcool ~]# grep zwx file_* /etc/hosts
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj

输出匹配字符串行的数量:

[root@linuxcool ~]$ grep -c zwx file_*
 file_1:2
 file_2:1
 file_3:0

列出所有的匹配行,并显示行号:

[root@linuxcool ~]# grep -n zwx file_*
 file_1:1:zwx
 file_1:4:zwx
 file_1:10:zwxddkjflkdjfdlkfjlsdkj
 file_2:2:zwx
 file_4:3:dkfjlzwxejfkje
 file_4:4:zwx djfkdjf
 file_4:5:zwxedkfgj

显示不包含模式的所有行:

[root@linuxcool ~]# grep -vc zwx file_*
 file_1:7                                
 file_2:4
 file_3:5
 file_4:2

不再显示文件名:

[root@linuxcool ~]# grep -h zwx file_*
 zwx
 zwx
 zwxddkjflkdjfdlkfjlsdkj
 zwx
 dkfjlzwxejfkje
 zwx djfkdjf
 zwxedkfgj

只列出符合匹配的文件名,不列出具体匹配的行:

[root@linuxcool ~]# grep -l zwx file_*
 file_1
 file_2
 file_4
不显示

不存在或无匹配的文本信息:

[root@linuxcool ~]# grep  -s zwx file1 file_1
 file_1:zwx       
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj
 [root@linuxcool ~]# grep zwx file1 file_1
 grep: file1: No such file or directory  
 file_1:zwx
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj

递归搜索,不仅搜索当前目录,还搜索子目录:

[root@linuxcool ~]# grep -r zwx file_2 *
 file_2:zwx
 anaconda-ks.cfg:user --name=zwx --gecos="zwx"
 file_1:zwx
 file_1:zwx
 file_1:zwxddkjflkdjfdlkfjlsdkj
 file_2:zwx
 file_4:dkfjlzwxejfkje
 file_4:zwx djfkdjf
 file_4:zwxedkfgj
 initial-setup-ks.cfg:user --name=zwx --gecos="zwx"

匹配整词,以字面意思去解释他,相当于精确匹配:

[root@linuxcool ~]# grep zw* file_1
 zwx                       
 zwx
 zdkfjeld
 zw
 ze
 zwxddkjflkdjfdlkfjlsdkj
 [root@linuxcool ~]# grep -w zw* file_1
 zw                         

匹配整行,文件中的整行与模式匹配时,才打印出来:

[root@linuxcool ~]# grep -x zwx file_*
 file_1:zwx
 file_1:zwx
 file_2:zwx

不输出任何结果,已退出状态表示结果:

 [root@linuxcool ~]# grep -q zwx file_1
 [root@linuxcool ~]# echo $?
 0               
 [root@linuxcool ~]# grep -q zwx file_5
 [root@linuxcool ~]# echo $?
 1               
 [root@linuxcool ~]# grep -q zwx file5
 grep: file5: No such file or directory
 [root@linuxcool ~]# echo $?
 2              

查找一个文件中的空行和非空行:

[root@linuxcool ~]# grep -c ^$ file_1
 4              
 [root@linuxcool ~]# grep -c ^[^$] file_1
 15               

匹配任意或重复字符用“.”或“*”符号来实现:

[root@linuxcool ~]# grep ^z.x file_1
 zwx
 zwx
 zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep ^z* file_6
 zwx
 dfkjd
                      
 zzdfjkd
 zz dfdww
 haha

gzip命令 – 压缩和解压文件

  • gzip命令的英文是“GNUzip”,是常用来压缩文件的工具,gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
  • gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
  • 语法格式:gzip [选项]
  • 常用选项:
-a	使用ASCII文字模式
-d	解开压缩文件
-f	强行压缩文件
-l	列出压缩文件的相关信息
-c	把压缩后的文件输出到标准输出设备,不去更动原始文件
-r	递归处理,将指定目录下的所有文件及子目录一并处理
-q	不显示警告信息
  • 参考实例
    把rancher-v2.2.0目录下的每个文件压缩成.gz文件:
[root@linuxcool ~]# gzip *

把上例中每个压缩的文件解压,并列出详细的信息:

[root@linuxcool ~]# gzip -dv *

递归地解压目录:

[root@linuxcool ~]# gzip -dr rancher.gz

bzip2命令 – bz2文件的压缩程序

  • Linux系统中bzip2命令的英文是“bunzip2”,即.bz2文件格式的压缩程序;bzip2命令系统默认是没有安装的,需要安装bzip2库才可以使用此命令。
  • bzip2命令采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
  • 语法格式:bzip2 [选项] 文件系统
  • 常用选项:
-c	将压缩与解压缩的结果送到标准输出
-d	执行解压缩
-f	bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数
-k	bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数
-s	降低程序执行时内存的使用量
-t	测试.bz2压缩文件的完整性
-v	压缩或解压缩文件时,显示详细的信息
-z	强制执行压缩
  • 参考实例

压缩文件:

[root@linuxcool ~]# bzip2 a.txt

检查文件完整性:

[root@linuxcool ~]# bzip2 -t a.txt.bz2

tar命令 – 打包和备份的归档工具

  • tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。
  • tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
  • 语法格式:tar [选项] [文件或目录]
  • 常用选项:
-A	新增文件到以存在的备份文件
-B	设置区块大小
-c	建立新的备份文件
-C <目录>	切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于仅压缩特定目录里的内容或解压缩到特定目录
-d	记录文件的差别
-x	从归档文件中提取文件
-t	列出备份文件的内容
-z	通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-Z	通过compress指令处理备份文件
-f<备份文件>	指定备份文件
-v	显示指令执行过程
-r	添加文件到已经压缩的文件
-u	添加改变了和现有的文件到已经存在的压缩文件
-j	通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-v	显示操作过程
-l	文件系统边界设置
-k	保留原有文件不覆盖
-m	保留文件不被覆盖
-w	确认压缩文件的正确性
-p	保留原来的文件权限与属性
-P	使用文件名的绝对路径,不移除文件名称前的“/”号

参考实例

将所有.jpg的文件打成一个名为all.tar的包:

[root@linuxcool ~]# tar -cf all.tar *.jpg

打包文件之后删除源文件:

[root@linuxcool ~]# tar -cvf linuxcool.tar linuxcool --remove-files

打包文件以后,以 gzip 压缩:

[root@linuxcool ~]# tar -zcvf log.tar.gz linuxcool.log

vi命令 – 文本编辑器

  • vi命令是linux系统字符界面下的最常用的文本编辑器。

  • vi编辑器是所有linux的标准编辑器,用于编辑任何ASCⅡ文本,对于编辑源程序尤其有用。iv编辑器功能非常强大,可以对文本进行创建,查找,替换,删除,复制和粘贴等操作。

  • 在linux系统shell提示符中输入vi和文件名后,就进入vi编辑界面。如果系统内还不存在该文件,就等于新建文件,如果系统内存在给文件,就意味着编辑该文件。

  • vi编辑器的三种工作模式

    • 命令模式、输入模式、末行模式
  • 命令模式(vi 文件名,就进入了命令模式。退出命令模式,可以在未行模式中输入q)

命令模式可以使用以下命令:
dd:删除一行
u:撤回
yy:复制- -行
P:小写的p,将复制的行粘贴在光标所在行的下一行
P:大写的p,将复制的行粘贴在光标所在行的上一行
x:删除光标所在处字符(按着不动,先删光标后面,在删前面) #常用
r:替换光标所在处字符
ZZ:保存退出
  • 输入模式 (编辑模式)(i、 I、 a、A,就进入了编辑模式。退出编辑模式,按ESC退到命令模式)
在此模式下可像在记事本中- -,修改文件内容。
a:将在光标所在位置之后插入文本(append)
A:将在光标所在行未插入文本
i:将在光标所在位置之前插入文本(insert)
|:将在光标所在行的第一个非空字符前插入文本
o:将在光标所在行的下-行开始插入文本(open)
0:将在光标所在行的上一行开始插入文本
g:按2次,光标移动到文本首行
G:按1次,光标移动到文本末行
  • 末行模式(在命令模式中输入shift+:就进入了末行模式。 )
可以使用以下命令:
:q退出命令模式.
:w保存修改内容
:wq保存退出
:q!不保存退出
:set nu显示行号
:/abc查找abc这个字符,按n查找下一个,按N查找上一个
  • 末行模式的文件内容替换
文件内容替换
:S /old/new将当前行中查找到的第一个字符"old" 串替换为"new"
:s /old/new/g将当前行中查找到的所有字符串"old" 替换为"new"
:#,# s/old/new/g在行号"#,#"范围内替换所有的字符串"old" 为"new" 
:% s/old/new/g在整个文件范围内替换所有的字符串"old""new"
:s /old/new/c在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

你可能感兴趣的:(Linux)