第4章 文件和目录的管理
在linux下,一切皆文件,文件就要有一定的组织方式,linux是以树形结构组织文件,FHS标准规定了每个目录下面应该放哪些内容,这样做的好处是便于系统管理,因为linux系统有很多发布版本,比如:redhat、ubuntu、fedora、suse等等,如果每个发行版本都自己设计一套文件组织方式,这将造成用户切换发行版本带来不便。
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 删除目录
删除目录操作,使用rmdir和rm命令,不过要注意,执行删除操作之前,一定要先确认好想要删除的东西,否则没有后悔的机会
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中,查看文件的命令有很多,如cat、more、less、head、tail等
例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 |
上一个关键字 |