Linux文件管理

一、文件系统及Shell的基本概念

1.文件系统的含义

文件系统是用来管理和组织保存在磁盘驱动器上数据的系统软件

 

2Linux的文件系统

Linux系统采用虚拟文件系统技术(VFS)、结构采用倒立树型、VFS使Linux支持以下文件系统:

EXT2                       二次扩展

EXT3                       三次扩展

SWAP                       交换文件系统

FATFAT32

NTFS                  (默认不支持,需要特定的模块)

VFAT                        虚拟FAT

SYSV                        Unix的文件系统

HPFS                        OS/2的文件系统

ISO9660                      光盘文件系统

NFS                          网络文件系统

 

3Linux中的文件分类

     1)普通文件

           文本文件:采用ASCII编码方式,可编辑,可修改

           二进制:不可查看,不可修改

     2)目录文件

                存放的内容是目录中的文件名和子目录名

     3)设备文件(/dev

               用于用户访问物理设备所用,分为块设备和字符设备文件

     4)链接文件

                软链接文件:目标文件和链接文件可以跨越索引点,相当于文件的快捷方式

                         删除原文件,则符号链接文件失去意义

                         删除符号链接文件,不影响原文件

                硬链接文件:链接同一索引点中的文件,相当文件的副本

                         两个文件指向同一存储区,内容、长度相同

                         删除一个文件不影响,其它文件

      5)管道文件

             FIFO缓存队列

 

4Shell的主要功能

命令行解释

交互模式

后台运行

命令的多种执行顺序

命令替换 ``

I/O重定向(>,>>,<,<<

管道(|

通配符(*,?,[],[!]

系统环境维护 

Shell编程

历史记录(history

自动补齐(TAB

 

5Shell的命令解释过程

Linux用户管理(三)Linux文件管理_第1张图片

 

二.文件操作命令

1pwd

功能:显示当前目录

实例:

#pwd

 

2cd

功能:改变当前目录

实例:

# cd  /usr/sbin (进入/usr/sbin

# cd   ../u1 (进入父目录下面的u1目录)

# cd   ..(返回父目录)

#cd    (进入用户主目录)

#cd  ~ (进入用户主目录)

3mkdir

功能:建立目录

格式:mkdir  [参数] <目录名>

参数:-m 属性值:指定目录的属性 (rwx421)

-p :循环建立目录

实例:

#mkdir   d1                 (在当前目录下建立d1子目录)

#mkdir   /d1/d2  /d1/d3 /d1/d4(同时在/d1目录中建立d2,d3,d4子目录)

# mkdir  –p  /d1/d2           (在/d1目录中建立d2子目录,先建d1

 

4rmdir

功能:删除空目录

格式:rmdir  [参数]  <目录名>

参数:-p:循环删除

实例:

#rmdir  a1        (删除当前目录下的a1子目录)

#rmdir  /etc/a2     (删除/etca2子目录)

#rmdir  -p /a1/a2

 

5ls

功能:显示目录中的文件及子目录的名称

格式:ls     [参数]  [文件名]

参数:-a:显示所有文件(包括隐含文件,以“.”开头的文件为隐含文件)

      -l 以长格式显示文件名及目录名(显示文件的详细信息)

-F:显示文件名,同时显示类型

      -R:显示目录中所有文件及子目录中的文件结构

      -t 按照修改时间排序显示

      -s:显示文件的大小,以block为单位

      -S:按照文件大小排序显示 

      -m:分列显示文件名

实例:

# ls                 

# ls/bin/            

# lsgrub.conf         查找当目录下是否存在grub.conf

# ls   -l            

# ls  --help         显示ls的详细的帮助信息

# ls  -a

 

6cp

功能:复制文件

格式:cp  [参数]   <源路径>  <目标路径

参数:-f:文件在目标路径中存在时,则直接覆盖

       -i:文件在目标路径中存在时, 提示是否覆盖

         -r:复制指定中所有内容和结构

         -b:生成覆盖文件的备份

         -a:保持文件原有属性

实例:

# cp  /etc/*  /a1/      /etc下的所有文件复制到a1目录中

#cp  /bin/ls  /dir1      /bin/ls文件到/目录取名为dir1

#cp  -f /sbin/*  /exe/   直接将/sbin下的所有文件到/exe目录中

#cp  -r  /soft /abc/

 

7rm

功能:删除文件

格式:rm  [参数]   <文件名>

参数:-f   不提示确认删除

      -i    提示确认删除

      -r    递归删除

  实例:

# rm  /m1/f1         删除/m1目录下的f1

# rm  –f  /m1/*       删除m1目录下的所有文件

#rm  -rf  /m1       强制删除一个目录(不确定、慎用)

 

8mv

功能:移动文件、重命名文件

格式:mv [参数] <源路径>  <目标路径>

参数:-i     如果存在文件重名则提示是否覆盖

-b     建立覆盖文件的备份

      -f     如果存在文件重名则直接覆盖

   

实例:

# mv   /m1/f1    /m2/   移动/m1目录下f1文件到/m2目录下

#mv    f1   f2          将当前目录下的f1文件改名f2

# mv   -f  /d1/* /d2/    移动/d1中的所有文件到/d2目录中

 

9file

功能:检测文件类型

格式:file  [参数]  <文件名>

参数: -z:检测压缩包文件

          -L:跟随符号链接

实例:

#file    /etc/lilo.conf

#file    -z 1.gz

 

10.显示文本文件内容

1) cat

格式:cat  [参数] <文件名>

参数:-n   显示行号

      -b  显示行号,但空白行不显示行号

实例:

#cat   /etc/inittab

#cat  -n  /d1/f1  /d1/f2 >txt1

 

2more

格式:more   [参数]<文件名>

实例:

# ls|more                 ls的显示结果输入到more

#more   /etc/rc.d/rc   显示/etc/rc.d/rc文件的内容

说明:可以用回车键向下换行,空格键向下换页,按Q键退出more

 

3less

实例:

ls|less                   

#less  /var/named/localhost.zone

说明:Page up /Page Down键上下滚动、Q键退出

 

4headtail

实例:

#head  -20     /a1    显示a1中前20行

# tail   -20    /a1  显示中a1后20行

 

5cut

功能:显示文件中指定数目的字符、字节或字段

格式:#cut  参数  数字  文件

参数:-c   以字符为单位

      -b 以字节为单位

      -f  以字段为单位

      -d 指定分隔符

实例:#cut  -c 3 /etc/passwd

      #cut -f  1-6  -d /etc/passwd

      #cut -b  -8  /etc/passwd

 

11.搜索文件

1 find

格式:find   查找路径   查找条件

条件:-name “文件名”:查找指定名称文件

       -lname “文件名”:查找指定文件所有的接文件

       -user 用户名:查找指定用户拥有的文件

       -group 组名:查找指定组拥有的文件

       -links n:查找拥有n个链接的文件

       -mtime n:查找在N天前被修改过的文件

          -atime n:查找在N天前被访问过的文件

          -type d/f/b/l/p:查找指定类型的文件

          -s n[bcwkMG]:查找指定大小的文件

          -empty:查找为空的文件

          -perm mode:查找指定属性的文件

          -exec  command {}\; 查找指定的文件并执行指定的命令

          -newer 文件名  查找比指定文件新的文件

实例:

#find   /  -name   “named*”

#find   /  -user   root

#find   ./  -type  d -exec  chmod 755 {} \;

#find .  –empty

#find .  –perm  644

#find .  –newer  oldfile  !  -newer newfile

 

2 whereis

功能:查找二进制可执行、手册及源文件

实例:# whereis   umount

 

3 locate

功能:在资料库中查找指定的文件

格式:#locate [参数] 文件名

参数:

-u/-U  建立资料库,-u 会由根目录开始,-U 则可以指定开始位置

-e  <目录1…>  排除指定目录在寻找范围之外

-l  <0/1>    设置安全级别,1启用安全模式,0关闭安全模式

-f  <文件类型> 在资料库中排除特定类型文件排除在外

-n 至多显示n个输出

-r 使用正规运算式做寻找的条件

-o 指定资料库存的名称。

-d 指定资料库的路径

实例:

#locate-u

#locatechdrv

#locate -n100 a.out

 

4 which

功能:查找指定命令文件

格式:#which  文件名

实例:#which  mount

 

12grep

功能:在文本文件中查找匹配的字符串

格式:#grep  [参数]“字符串” 文件

           参数: -?   同时显示匹配行上下的?行

-b   在匹配行前面打印该行所在的块号

-c   只打印匹配的行数,不显示匹配的内容

-f File 从文件中提取模板,空文件中包含0个模板,所以什么都不匹配

-h   当搜索多个文件时,不显示匹配文件名前缀

-I   忽略大小写差别

-q   取消显示,只返回退出状态。0则表示找到了匹配的行

-l   打印匹配模板的文件清单

-L   打印不匹配模板的文件清单

-n   在匹配的行前面打印行号

-s   不显示关于不存在或者无法读取文件的错误信息

-v   反检索,只显示不匹配的行

-w   如果被\<\>引用,就把表达式做为一个单词搜索

正则表达式元字符:

^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行

$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行

. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p

* 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。.*一起用代表任意字符

[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grepgrep

[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-RT-Z的一个字母开头,紧跟rep的行

\(..\) 标记匹配字符,如'\(love\)'love被标记为1

\< 锚定单词的开始,如:'\匹配包含以grep开头的单词的行

\> 锚定单词的结束,如:'grep\>'匹配包含以grep结尾的单词的行

x\{m\} 重复字符xm次,如:'0\{5\}'匹配包含5o的行

x\{m,\} 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5o的行

x\{m,n\} 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10o的行

\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p

\W

\w的反置形式,匹配一个或多个非单词字符,如点号句号等

\b 单词锁定符,如: '\bgrepb\'只匹配grep

+ 匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

? 匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c 匹配abc。如:grep|sed匹配grepsed

() 分组符号,如:love(able|rs)ov+匹配loveablelovers,匹配一个或多个ov

x{m},x{m,},x{m,n}作用同x\{m\},x\{m,\},x\{m,n\}

 

实例:

# ls -l |grep '^a'

通过管道过滤ls -l输出的内容,只显示以a开头的行。

# grep'test' d*

显示所有以d开头的文件中包含test的行。

# grep'test' aa bb cc

显示在aabbcc文件中匹配test的行。

# grep'[a-z]\{5\}' aa

显示所有包含每个字符串有5个连续小写字符的字符串的行。

# grep'w\(es\)t.*\1' aa

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es\1),找到就显示该行。如果用egrepgrep-E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。

 

13.文件压缩操作

1gzip*.gz

功能:对单个文件压缩

格式:gzip  [参数压缩(解压缩)文件名

参数: -d:用于解压缩

        -t:检验压缩文件是否损坏

        -l:显示压缩文件压缩比例

-r :递归式地查找指定目录并压缩其中的所有文件或者是解压缩

-num 用指定的数字 num 调整压缩的速度,-1 --fast 表示最快压缩方法(低压缩比)

实例:

#gzip    /a1

#gzip    -d  /a1.gz

#gzip    -dv   /*.gz

#gzip     -r /www

 

2zip

功能:压缩文件

格式:#zip  [参数文件或目录名

 -d   从压缩文件内删除指定的文件。
 -F   尝试修复已损坏的压缩文件。
 -t   把压缩文件的日期设成指定的日期。
 -u   更换较新的文件到压缩文件内。
 -v   显示指令执行过程或显示版本信息。
 -z   替压缩文件加上注释。
 -<压缩效率>   压缩效率是一个介于1-9的数值。
 -P 口令    利用指定口令加密压缩包
 -m      添加文件到ZIP压缩包中

实例:#zip  abc.zip f1   f2   f3

      #zip  -r –P 123 soft.zip  /soft/

      #zip -d  soft.zip  soft/wb

      #zip –u  soft.zip   abc.log

      #zip -m  soft.zip   install.log

 

3unzip

功能: 解压缩zip文件

格式: #unzip [.zip文件]
  -l  显示压缩文件内所包含的文件。
   -P   <密码>   
   -d   <目录>指定文件解压缩后所要存储的目录。

实例:

#unzip   f1.zip  -d   /f1

#unzip   –l   f1.zip

 

4tar(*.tar)

功能:为文件或目录创建备份

格式:tar  [参数]   文件/目录名

参数:-t:列出压缩包中的文件(*.tar

-x:解压缩(*.tar

-z:使用gzip的压缩文件

-c:创建压缩包

-f:指定文件名

-j:使用bzip的压缩文件

-v:显示操作信息

-C:指定解压路径(默认路径为当前路径)

-r 向压缩包添加文件

-u:更新压缩包中的文件

-k:还原文件过程中,遇到相同文件不覆盖

-m:还原文件过程中,修改文件的时间为当前时间

                实例:

# tar -cvf all.tar *.jpg

# tar -uvfall.tar logo.gif

# tar -rfall.tar *.gif

#tar  -czvf   etc.tar.gz  /etc

#tar  -xvf all.tar 

#tar  -xzvf    etc.tar.gz -C /soft

注:除以上的压缩工具外,还有compress(uncompress)bzip2(unbzip2)

 

14ln

功能:建立链接文件

格式:ln [参数]  <源文件>  <链接文件>

参数:-s:建立软链接文件

      -i:提示是否覆盖目标文件

      -f:直接覆盖已存在的目标文件

               实例:

# ln  /etc/abc /abc

# ln  -s /a1     /etc/a1

 

15. touch

功能:创建空文件或修改文件的时间

格式:#touch  [参数文件名

参数:-r 修改文件的时间为指定文件的日期时间

      -d  指定文件日期时间为yymmdd

      -t 指定文件日期时间为yymmddhhmm

      -c 不创建指定的文件

实例:#touch   /f1 /f2

      #touch -r  /f1  /f2

      #touch -d "6:03pm 05/06/2000"file

 

16. sort

功能:对文本文件进行排序

格式:sort  [参数]  [文件]

参数:-o 文件名 将排序结果保存到指定文件中

      -u   去除重复行

实例:

#sort  /etc/passwd

#sort  –o /etc/oldpass  /etc/passwd

 

17. paste

功能:合并文本文件

实例:#paste  f1  f2>f3

 

18. cmp

功能:比较两个文件是否有差异

格式:#cmp  [参数文件1文件2

参数:-l   显示不同的字节位置

      -s  不显示不同之处,只显示返回状态

实例:#cmp  f1  f2

      #cmp -l  f1  f2

 

18. diff

功能:显示文件的不同之处

格式:#diff  [参数]  文件1  文件2

参数:-c   显示全文,并标出不同之处

      -u   合并显示,并标出不同之处

实例:#diff  f1   f2

      #diff -c  f1  f2

 

19. wc

功能:统计文件中的行数、单词数、字符数

格式:#wc  [参数]  文件名

参数:-c 统计字符数

      -w 统计单词数

      -l 统计行数

实例:#wc  /etc/passwd

      #wc -c  /etc/passwd

 

三.vi编辑器的使用

1vi 定义

   Vi Unix/Linux系统中的一种文本编辑软件

2vi三种模式

命令模式:删除字符、排版

插入模式:插入字符、删除、修改字符

最后行模式:通过命令操作vi软件

 

 Linux用户管理(三)Linux文件管理_第2张图片

3vi的使用

1)启动VI

# vi [参数]   [文件名]

2VI常用命令

移动光标

左移一个字符:按h

右移一个字符:按l

下移一行:   j

上移一行:   k

移至行首:   ^

移至行尾:   $

移至文件顶部:按H

移至文件尾部:按L

移至文件中部:按M

前翻一屏:   ctrl+f

后翻一屏:   ctrl+b

前翻半屏:   ctrl+d

后翻半屏:   ctrl+u

移动光标到指定行:输入:数字

插入文本

在光标右边插入文本:          a

在一行的结尾处添加文本:      A

光标左边插入文本:            i

在行首插入文本:              I

在光标所在行的下一行插入新行:按o

在光标所在行的上一行插入新行:按O

撤消和重复操作

撤消上一个操作:按u

撤消光标所在行的更改:按U

重复操作:输入

删除文本

删除当前字符:   x

删除一词:        dw

删除一行:        dd(剪切)

删除行的部分内容:按D(删除光标右的内容)或按d0(删除光标左的内容)

删除到文件的结尾:按dG

dL :删除直到屏幕上最后一行的内容

dH :删除直到屏幕上第一行的内容

dG :删除直到工作缓存区结尾的内容(文尾)

d1G :删除直到工作缓存区开始的内容(文头

:n,md  从第n行开始删除m

复制和粘贴

复制一行内容:按yy

粘贴:  p

查找和替换命令

/string:向前查找字符串

?string:向后查找字符串

n:继续上一次查找

shift+n:以与上一次相反的方向查找

:s/字符串1/字符串2/g:在全文中替换字符串1为字符串2

n,ms/字符串1/字符串2/g:替换nm行中的字符串1为字符串2

保存和退出命令

:w:写缓冲区

:w 文件名:把缓冲区写入指定文件

:wq:保存退出

:q!:不保存退出

:wq!:保存退出,对拥有者忽略只读权限

E!:取消自上次保存以来所做的修改

ZZ:保存退出

修改文本命令

cl :更改当前字符

cw :修改到某个单词的结尾位置

c3w :修改到第三个单词的结尾位置

cb :修改到某个单词的开始位置

c0 :修改到某行的结尾位置

c):修改到某个语句的结尾位置

c4):修改到第四个语句的结尾位置

c} :修改到某个段落的结尾位置

c2{ :修改到当前段落起始位置之前的第2个段落位置

ctc :修改当前行直到下一个字符c所出现位置之间的内容

:修改到某一行的结尾

cc :修改当前行

会话定制命令

:set 显示vi变量

:set all:显示所有可能的vi变量和它们当前的值

:set nu:显示行号

:set nonu:隐藏行号

:setshowmode:显示当前操作模式

:setnoshowmode:隐藏当前操作模式

:set ai:自动对齐

:set dir=目录:设置缓冲区的位置

注:-可以vi设置信息保存在用户主目录的.exrc文件中

 

4VI的高级应用

1)编辑多个文件

#vi  -o]文件文件2 ………

-o:同一窗口打开多个文件

:next:编辑下一个文件

:prev:编辑上一个文件

:args:显示所有打开的文件名称

Ctrl+ww :切换窗口

:e  文件名:读入另一文件

 

2)高级复制

:start,end  cp dest:将startend行的内容复制到dest行以下

:start,end  m  dest:将startend行的内容移动到dest行以下

nY:将从光标所在行开始的n行内容暂存

:[m],[n]w<文件名>:把mn内容另存到指定文件中

 

3)其它高级应用

:X 输入口令:以口令加密保存

:ctrl+s:锁定VIctrl+q解锁)

:r !<命令>:执行指定命令,并将命令结果插入到当前文件中

:J:合并上下两行

 

四.软件包的管理

1Linux软件包主要类型

1RPM

由于RedHat公司开发的一种软件封包方式,可以用于多种Linux系统

RPM包名称格式为:软件名-版本号.运行平台.rpmfoo-1.2.0-3.i386.rpm

Linux系统会使用专用的数据库记录RPM包的安装情况

2TAR

TAR包封装的通常是软件源代码,并且利用了gzip或其它方式进行二次压缩

 

2RPM包的管理

1)安装RPM

#rpm  -ivh  [详细选项]  RPM包名称

详细选项:

--nodeps     忽略依赖关系

--rplacepkgs   强制覆盖已存在的RPM

实例:

#rpm –ivh  grub-0.93-7.i386.rpm      

 

2)升级RPM

#rpm  -Uvh [--nodeps/--replacepkgs]  软件包名称

实例:

#rpm –Uvh  bind-9.2.20-8.i385.rpm

 

3)查询RPM

#rpm  -q[a/f 文件名/l/]   [软件名称]

实例:#rpm –q  bind(查询软件名为bind的软件包)

      #rpm –qa(查询系统中所有已安装的RPM包)

      #rpm –qf  /boot/grub/grub.conf (查询grub.conf文件所属的RPM包)

      #rpm -ql  bind (查询软件名为bind软件包并显示软件包的内容)

 

4)卸载RPM

#rpm  -e  软件名称

实例:#rpm  -e  bind

 

5)检验RPM

#rpm –V 软件名称

实例:#rpm  -V  bind

 

3TAR软件包的管理

(1)安装TAR

解压缩

配置安装参数

编译和安装

实例:

#tar –xzvf   bind-9.2.0.tar.gz

#cd bind-9.2.0

#./configure  --prefix=/usr/named

#make

#makeinstall

 

2)卸载TAR

直接删除安装

实例:

#rm  -rf /usr/named

微信扫一扫 、关注公众号

   不定时分享资料视频

Linux用户管理(三)Linux文件管理_第3张图片