4章 文件和目录的管理

linux下,一切皆文件,文件就要有一定的组织方式,linux是以树形结构组织文件,FHS标准规定了每个目录下面应该放哪些内容,这样做的好处是便于系统管理,因为linux系统有很多发布版本,比如:redhatubuntufedorasuse等等,如果每个发行版本都自己设计一套文件组织方式,这将造成用户切换发行版本带来不便。

4.1 目录结构

既然linux是以树形结构组织文件,树就有一个根,在linux系统中所有其它目录都属于根下的一个分支

 

[root@server ~]# ls /

bin   dev  home  lib64  mnt  proc  run   srv  tmp  var

boot  etc  lib   media  opt  root  sbin  sys  usr

 

1)/

#根目录,所有的文件和目录,皆是由根目录延伸。

 

2)/boot

#开机启动过程所需的文件,比如:内核文件,引导文件,驱动文件,boot目录一般在200M左右

 

3)/usr

#编辑安装的第三方软件、共享的库,包括文件和静态只读程序数据,重要的子目录:/usr/bin,用户命令;/usr/sbin,系统管理命令;/usr/local,本地自定义软件。

 

4)/etc

#主要是服务的配置文件

 

5)/var

#动态变化的文件,如:数据库、缓存目录、日志文件、打印机后台处理文档和网站内容

 

6)/run

#自本次系统启动以来启动的进程的运行时数据。包括进程ID文件和锁定文件等。此目录中的内容在重启时会重新创建。

 

7)/root

#root用户的家目录

 

8)/home

#普通用户的个人数据和配置文件的主目录,每切换用户时,首先就是切换到用户的家目录,每个用户的家目录里面有这个用户特有的环境变量,可以用ls -a查看有四个.bash开头的文件,就是这个用户的环境变量。比如:在root家目录下.bash_profile定义一个环境变量,export dd=test,在其它用户echo $dd,是不能输出的。工作中有可能需要为某些用户设置独有的环境变量。

 

9)/proc

#放置的是内存数据,不会占用磁盘空间,内存里有什么:1.系统开机时的硬件信息,比如;CPU的信息:/proc/cpuinfo,内存信息:/pro/meminfo。2进程信息,数字命名的文件都是进程的信息,数字代表这个进程的PID。

 

10)/sys

#对proc的归纳、结合、整理,。这是历史原因,为了兼容以前的版本。

 

11)/tmp

#临时文件使用的全局可写目录。10天内未访问、未修改的文件将自动删除。还有一个临时目录,/var/tmp,该目录下的文件如果30天内未访问、修改,将自动删除

 

12)/dev

#设备文件目录,供系统用于访问硬件

 

13)/mnt

#一般会把外设设备挂载目录

 

14)/bin、/sbin

#存放二进制可执行文件。比如系统命令

 

15)/lib、/lib64

#系统或服务运行中,所需的库文件

 

4.2 目录的管理

对于目录而言,它所管理的仅仅是该目录下的文件或子目录的名字而已

 

4.2.1 查看目录

查看一个目录或该目录下的子目录和文件,我们使用ls命令

 

Ls命令选项

-l  查看目录下子目录和文件的权限、拥有者、拥有组、大小等详细信息

-d 查看指定目录本身的属性

-h 以人类可读的方式显示大小,按大小排序:-Sh

-a  包含隐藏文件在内的所有文件,以点(.)开头的都是隐藏文件。

-R  递归,包含子目录的内容

-t  按时间排序,时间越近的越靠前,如果想反过,时间越久的越靠前,-tr

 

1

[root@server ~]# ls /root

anaconda-ks.cfg

#查看/root目录下所有子目录和文件的名字

 

[root@server ~]# ls -l /root

total 4

-rw-------. 1 root root 1200 Mar  1 14:15 anaconda-ks.cfg

#查看/root目录下所有子目录和文件的属性

 

[root@server ~]# ls -d /root

/root

#查看/root目录本身的名字

 

[root@server ~]# ls -ld /root

dr-xr-x---. 2 root root 4096 Mar  1 17:12 /root

#查看/root目录下的所有子目录和文件的属性

 

4.2.2 创建目录

创建目录,使用mkdir命令

 

mkdir命令选项

-p 同时创建多级目录

-m 创建目录同时,给予权限,比如:mkdir -m 777 /tmp/tt

 

2

[root@server ~]# mkdir /root/doc1

#在/root目录下创建一个子目录,叫doc1

 

[root@server ~]# mkdir -p /root/doc2/test

#在/root目录下创建一个子目录,叫doc2,并且在doc2目录下再创建一个子目录,叫test

 

4.2.3 目录的复制

目录的复制,使用cp命令

 

3

[root@server ~]# cp -r /root/doc2 /tmp/

#复制/root/doc2目录到/tmp/目录下

#-r,表示递归,将目录及目录下的文件和子目录一同复制,cp的本意是复制一个文件。

[root@server ~]# cp -r /root/doc1 /tmp/d1

#复制/root/doc1目录到/tmp目录下,并且改个名字,叫d1

 

4.2.4 目录的移动

目录的移动,使用mv命令

 

4

[root@server ~]# mv /root/doc1 /mnt/

#将/root/doc1目录移动到/mnt目录下.

 

[root@server ~]# mv /root/doc2/ /mnt/d2

#将/root/doc2目录,及子目录移动到/mnt/目录下,并且改名叫d2

 

4.2.5 删除目录

删除目录操作,使用rmdirrm命令,不过要注意,执行删除操作之前,一定要先确认好想要删除的东西,否则没有后悔的机会

 

rmdir命令,只能删除空目录,如果要删除的目录下还存在子目录或文件,必须先把子目录和文件删除,才能删除该目录

 

rm命令,本意是删除一个文件,如果要删除一个目录,需要加上选项-r,表示递归删除,先删除该目录下的子文件和子目录,再删除指定目录。

 

3

[root@server ~]# rm -r /root/doc1

rm: remove directory ‘/root/doc1’? y

#删除/root/doc1目录,要求输入y确认

 

[root@server ~]# rm -rf /root/doc2

#强制递归删除目录/root/doc2,并且不需要确认

 

 

4.3 文件的管理

4.3.1 创建文件

创建文件,使用touch命令

 

1

[root@server ~]# touch /root/file1

#在/root目录下创建一个空文件,叫file1

注意:如果文件已经存在,不会改变文件内容,只会改变文件的修改时间

 

4.3.2 复制文件

文件的复制使用cp命令

 

2

[root@server ~]# cp /root/file1 /tmp/

#复制文件/root/file1到/tmp目录下

 

4.3.3 移动文件

文件的移动使用mv命令

 

3

[root@server ~]# mv /root/file1 /mnt/

#移动/root/file1文件到/mnt目录

 

 

4.3.4 删除文件

文件的删除使用rm命令

 

4

[root@server ~]# rm -f /mnt/file1

#删除文件/mnt/file1

 

4.3.2 查看文件

linux中,查看文件的命令有很多,如catmorelessheadtail

 

5

[root@server ~]# cat /etc/passwd

#/etc/passwd文件的内容全部输出到当前shell

 

[root@server ~]# more /etc/passwd

#同样将/etc/passwd文件内容输出到当前shell,但是,它是分页显示

#使用空格键往下翻页

#使用enter键往下翻一行

#使用q键退出

 

[root@server ~]# less /etc/passwd

#同样以分页的形式将/etc/passwd文件内容输出到当前shell,但是

#使用空格键往下翻页

#使用enter键往下翻一行

#使用PgUp键往上翻页

#使用q键退出

 

注意:more命令和less命令的区别,more命令只能往下翻页,并且所有内容完成就结束了,而less命令是可以循环查看的

 

[root@server ~]# head /etc/passwd

#只查看/etc/passwd文件的头10行内容

 

[root@server ~]# head -n 20 /etc/passwd

#查看/etc/passwd文件的头20

#-n,指定想查看的行数

 

[root@server ~]# tail /etc/passwd

#查看/etc/passwd文件的最后10

 

[root@server ~]# tail -n 20 /etc/passwd

#查看/etc/passwd文件的最后20

#-n,指定想查看的行数

 

 

 

 

 

4.4 VIM的使用

vim是linux系统下标准的文本编辑器,相当于windows系统中的记事本一样,但vim的功能却要强大的多。vim是我们使用linux系统不能缺少的工具。

 

1

[root@server ~]# cp /etc/passwd /tmp/

#拷贝/etc/passwd文件到到/tmp/目录下

 

[root@server ~]# vim /tmp/passwd

#使用vim,打开/tmp/passwd文件

 

 

当我们使用vim打开一个文件后,默认处于命令行模式,此时,只能使用命令对文件内容进行简单的修改。也可以输入相应命令进入其它模式,对文件进行操作,下面我们就来讲讲vim的几种模式。

注意:在不同模式之间切换,必须先回到命令行模式,再输入相应的命令进入另一个模式。返回到命令行模式,使用esc键。

 

4.4.1命令行模式

yy

复制一行,复制10行:10yy

p

粘贴到光标所在的下一行,10p就是把复制的内容粘贴10次

P

粘贴到光标所在的上一行

dd

剪切光标所在行,100dd,剪切光标以下100行

d1G

从光标所在行,删除到第一行

dG

从光标所在行,删除到最后一行

D

从光标处剪切到行尾,这时,p,会在光标后面粘贴

gg

光标回到第一行行首

G

光标到最后一行行首

$

移动光标到当前行尾

0

数字零,移动光标到当前行首

x

删除光标所在字符,2x,从光标往后删除2个字符

X

往前删

r

替换光标处单个字符,r2,把光标处字符替换成2

R

进入替换模式,一直替换,除非按esc,回到命令行模式

u

撤消上一次操作

ctrl+r

恢复上一次的撤消操作

.

重复上一次操作

h

向左移动

j

向下移动

k

向上移动

l

向右移动

ctrl+f

向下一页

ctrl+b

向上一页

 

4.4.2编辑模式

从命令行模式进入编辑模式的方式:

i

在光标当前位置的前面插入字符

I

光标移动当前行的行首

a

光标往后退一个字符

A

光标移动到行尾

o

光标所在行的下一行新起一行

O

光标所在行的上一行新起一行

 

4.4.3末行模式

:wq

保存并退出,或:x

:wq!

强制保存退出,对一个只读文件。不过到底能不能写入,还是跟权限有关

:w f1

另存到f1这个文件

:q

退出

:q!

强制不保存退出

:set nu

显示行号

:set nonu

取消行号

:9

光标移动到第9行行首

:1,$s/root/togogo/g

从第一行到最后一行,把root替换成togogo

:! ls /boot

叹号,表示会暂时离开vim,然后去执行叹号后面的命令

:r /etc/passwd

r后面的文件,读取到当前vim编辑器

:r ! ls /boot

ls /boot命令的输出,读取到当前vim编辑器

/

往光标所在行之下搜索关键字

?

往光标所在行之上搜索关键字

n

下一个关键字

N

上一个关键字