文件管理

文件系统结构

Linux中,所有的文件与目录都由根目录/ 开始。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树状。因此,我们也称这种目录配置方式为:“目录树(directory tree)”。这个目录树主要特性有:
根目录是整个系统最重要的一个目录,因为所有的目录都是由它衍生出来,而且根目录也与开机,还原,系统修复等操作有关。
由于系统开机需要特定的开机软件、内核文件、开机所需要的程序、函数库等文件数据,若系统出现异常时,根目录也要有能够修复文件系统的程序。由此可见根目录的重要性,所以FHS建议,根目录不要放在非常大的分区内,因为越大防止的文件越多,出错的几率也越大,性能也越不好,所以,根目录应该越小越好,且应用程序所安装的软件最好不要与根目录放在一个分区内。
由此我们来说说下面的文件都是什么,又怎么放置才好。


/bin

/bin 基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。做为基础系统所需要的最基础的命令就是放在这里。

/boot

/boot Linux的内核及引导系统程序所需要的文件。

/dev

/dev 设备文件存储目录,比如声卡、磁盘... ...

/etc

/etc 系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;

/home

/home 普通用户家目录默认存放目录;

/lib

/lib 库文件存放目录

/lost+found

/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/media

/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有,比如Fedora Core 4.0 5.0 等。可以参看/etc/fstab的定义;

/mnt

/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom 。

/opt

/opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。

/proc

/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。

/root

/root Linux超级权限用户root的家目录;

/sbin

/sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。

/tmp

/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。

/usr

/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。

/var

/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;

/usr/bin

/usr/bin 这个目录是可执行程序的目录,普通用户就有权限执行; 当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。比如安装gaim软件包时。相似的目录是/usr/local/bin; 有时/usr/bin中的文件是/usr/local/bin的链接文件;

/usr/sbin

/usr/sbin 这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行;相似目录是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等;

/usr/local

/usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。

/usr/lib

/usr/lib 和/lib 目录相似,是库文件的存储目录;

/usr/share

/usr/share 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,是用户都共用的吧。

/usr/share/doc

/usr/share/doc和/usr/share/man帮助文件,也是共用的吧;

usr/src

usr/src 是内核源码存放的目录,比如下面有内核源码目录,比如 linux 、linux-2.xxx.xx 目录等。有的系统也会把源码软件包安装在这里。比如Fedora/Redhat,当我们安装file.src.rpm的时候,这些软件包会安装在/usr/src/redhat相应的目录中。另外Fedhat 4.0 5.0,他的内核源码包的目录位于/usr/src/kernels目录下的某个目录中(只有安装后才会生成相应目录);

/var/adm

/var/adm 比如软件包安装信息、日志、管理信息等,在Slackware操作系统中是有这个目录的。在Fedora中好象没有;自己看看吧。

/var/log

/var/log 系统日志存放,分析日志要看这个目录的东西;

/var/spool

/var/spool 打印机、邮件、代理服务器等假脱机目录;

Linux文件类型

Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。
Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等;现在我们进行一个简要的说明;
linux下ll命令列出的文件类型:

Linux下可以用ls –l 命令来判断文件类型,可以根据ll命令列出的前十个字母判断第一列中的10个字符来判断。
-rw-r—r—   "-"开头的都是普通文件;
[root@centos7 /app]#ll a
-rw-r--r--. 1 root root 0 Aug  6 11:07 a
drw-r—r—   "d"开头的是目录文件;
drwxr-xr-x.   2 root root        6 Aug  6 11:08 2
brw-r—r—   "b"开头的文件都是块设备文件;
[root@centos7 ~]#ll /dev/sda
brw-rw----. 1 root disk 8, 0 Aug  5 09:57 /dev/sda
crw-r—r—   "c"开头的文件都是字符设备文件;
[root@centos7 ~]#ll /dev/zero
crw-rw-rw-. 1 root root 1, 5 Aug  5 09:57 /dev/zero
srw-r—r—   "s"开头的文件都是socket文件;
[root@centos7 ~]#ll /dev/log
srw-rw-rw-. 1 root root 0 Aug  5 09:57 /dev/log
prw-r—r—   "p"开头的文件都是管道文件;
[root@centos7 /app]#ll /run/dmeventd-client
prw-------. 1 root root 0 Aug  5 09:57 /run/dmeventd-client
lrw-r—r—   "l"开头的文件都是软链接文件;
[root@centos7 ~]#ls /bin -dl
lrwxrwxrwx. 1 root root 7 Jul 15 09:42 /bin -> usr/bin
显示当前工作目录
当前路径
[root@centos7 /app]#pwd
/app
绝对路径   在app目录下进入dir2
[root@centos7 /app]#cd /app/dir1/dir2
[root@centos7 /app/dir1/dir2]#

相对路径  返回app目录下    
[root@centos7 /app]#cd /app/dir1/dir2
[root@centos7 /app/dir1/dir2]#cd ../../
[root@centos7 /app]#

基名:basename
目录名:dirname

dir2是基名,cd /app/dir1/是目录名
[root@centos7 /app]#cd /app/dir1/dir2
列出目录内容

列出当前目录的内容或指定目录
用法: ls [options] [files_or_dirs]
示例:
ls -a 包含隐藏文件 前面带 "." 都是隐藏文件

[root@centos7 ~]#ls -a
.                .bash_profile.swn  Desktop               .local          .tcshrc
..               .bash_profile.swo  Documents             Music           Templates

ls -l 显示额外的信息

ls -R 目录递归通过 显示目录下所有文件
[root@centos7 ~]#ls -R /app/dir1
/app/dir1:
dir2
/app/dir1/dir2:
12345

ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序

文件通配符

  • 匹配零个或多个字符
[root@centos7 /app]#cat 22.txt
nihao
[root@centos7 /app]#cat *2.txt
nihao

? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录

[0-9] 匹配数字范围
[root@centos7 /app]#ls
2             bin      erdong.sh  f3            nihaoliu.sh  somefile2.tar      z1
a1            |cut     f1         hello.sh      Rescue.asd   somefile3.tar.xz2
bianliang.sh  dir1     f2         liuerdong.sh  scp70.sh     tmp
[root@centos7 /app]#ls f[0-9]
f1  f2  f3

[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一个字符

[^wang] 匹配列表中的所有字符以外的字符
[root@centos7 /app/2]#ls
fa.txt  fb.txt  fc.txt  fd.txt  fe.txt  ff.txt  fg.txt
fA.txt  fB.txt  fC.txt  fD.txt  fE.txt  fF.txt  fG.txt
[root@centos7 /app/2]#ls f[^A].txt
fa.txt  fB.txt  fC.txt  fD.txt  fE.txt  fF.txt  fG.txt
fb.txt  fc.txt  fd.txt  fe.txt  ff.txt  fg.txt

文件通配符

预定义的字符类: #man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母

[:upper:]: 任意大写字母
[root@centos7 /app/2]#ls f[[:upper:]].txt
fA.txt  fB.txt  fC.txt  fD.txt  fE.txt  fF.txt  fG.txt

[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

创建空文件和刷新时间

touch命令:

touch [OPTION]... FILE...

-a 仅改变 atime和ctime
[root@centos7 /app/dir1]#touch f1                 创建f1文件
[root@centos7 /app/dir1]#ll
total 0
drwxr-xr-x. 2 root root 36 Aug  6 11:48 dir2
-rw-r--r--. 1 root root  0 Aug  6 14:50 f1         原始时间
[root@centos7 /app/dir1]#touch -a f1            -a  修改时间
[root@centos7 /app/dir1]#ll
total 0
drwxr-xr-x. 2 root root 36 Aug  6 11:48 dir2
-rw-r--r--. 1 root root  0 Aug  6 14:50 f1
[root@centos7 /app/dir1]#stat f1
  File: ‘f1’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 100678878   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2017-08-06 14:51:18.781898364 +0800     a时间改变
Modify: 2017-08-06 14:50:37.535899292 +0800
Change: 2017-08-06 14:51:18.781898364 +0800    c 时间改变
 Birth: -
-m 仅改变 mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]

[root@centos7 /app/dir1]#touch -t 202012011830.30 f1
[root@centos7 /app/dir1]#stat f1
  File: ‘f1’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 100678878   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-12-01 18:30:30.000000000 +0800             a时间改变
Modify: 2020-12-01 18:30:30.000000000 +0800             m时间改变
Change: 2017-08-06 15:00:49.629885517 +0800
 Birth: -

指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建

cp常用选项

-i:覆盖前提示 –n:不覆盖,注意两者顺序
[root@centos7 /app/dir1]#ll                                              root管理员 cp=cp- i 
total 0
drwxr-xr-x. 2 root root 36 Aug  6 11:48 dir2 -i
-rw-r--r--. 1 root root  0 Dec  1  2020 f1                                源文件f1
[root@centos7 /app/dir1]#cp /app/f2 /app/dir1/f1
cp: overwrite ‘/app/dir1/f1’? y                                           普通用户不提醒覆盖
[root@centos7 /app/dir1]#ll
total 4
drwxr-xr-x. 2 root root   36 Aug  6 11:48 dir2
-rw-r--r--. 1 root root 2586 Aug  6 15:13 f1                             文件大小发生改变
-r, -R: 递归复制目录及内部的所有内容

将etc内容全部复制并改名成zzz

[root@centos7 /app/dir1]#cp -r /etc /app/dir1/zzz                  
[root@centos7 /app/dir1]#rm -rf dev
[root@centos7 /app/dir1]#ll
total 16
drwxr-xr-x.   2 root root   36 Aug  6 11:48 dir2
-rw-r--r--.   1 root root 2586 Aug  6 15:13 f1
drwxr-xr-x. 136 root root 8192 Aug  6 15:38 zzz

-a: 归档,相当于-dR --preserv=all
-d: --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同--preserv=mode,ownership,timestamp -v: --verbose

-f: --force

zzz文件中已经有issue, 是否覆盖 -f 效果跟i相反

root@centos7 /app/dir1/zzz]#cp /etc/issue /app/dir1/zzz -f
cp: overwrite ‘/app/dir1/zzz/issue’? y
[root@centos7 /app/dir1/zzz]#ll
drwxr-xr-x.   2 root root     52 Aug  6 15:38 iscsi
-rw-r--r--.   1 root root     23 Aug  6 15:51 issue
-rw-r--r--.   1 root root     22 Aug  6 15:38 issue.net

rm命令

选项 -r 递归,删除目录 ;-f 不提示,直接删除;-i 提示
rm命令删除一个大文件技巧
rm删除一个大文件时,如果文件正在使用,即使删除了这个大文件,磁盘空间也无法释放,为了让磁盘空间尽快释放,可以先用> 清空这个文件,再用rm删除这个文件,就可以马上释放磁盘空间。

如何安全的删除一个文件,可以使用如下命令
[root@centos6 app]#shred -zuvn5 f3  #shred相当于碎纸机,z清理;v过程可见;n5重复五次;u最后把文件删除
shred: f3: pass 1/6 (random)...
shred: f3: pass 2/6 (ffffff)...
shred: f3: pass 3/6 (random)...
shred: f3: pass 4/6 (000000)...
shred: f3: pass 5/6 (random)...
shred: f3: pass 6/6 (000000)...
shred: f3: removing
shred: f3: renamed to 00
shred: 00: renamed to 0
shred: f3: removed
rm删除点打头的文件
[root@centos6 app]#touch .a
[root@centos6 app]#ls -a
.  ..  .a  f1  f1.txt.bak  f2  f2.txt.bak  f3.txt.bak  sda1  xxx  zero
[root@centos6 app]#rm -f *   #不能删除点打头的文件
[root@centos6 app]#ls -a
.  ..  .a  #点打头的文件还在
[root@centos6 app]#rm -f .*  #执行这条命令才能删除点打头的文件
[root@centos6 app]#ls -a
rm删除目录
[root@centos6 app]#mkdir f1
[root@centos6 app]#ls
f1
[root@centos6 app]#rm -rf /app #提示要把目录也删除,但/app是个分区挂载点,
无法删除,只把目录里的内容删除
rm: cannot remove `/app': Device or resource busy
[root@centos6 app]#ls
[root@centos6 app]#mkdir f1
[root@centos6 app]#ls
f1
[root@centos6 app]#rm -rf /app/* #不提示删除/app
[root@centos6 app]#ls
总结:分区挂载点无法删除,要想删除一个目录下的文件而不删除目录
的写法为rm -rf /D/* ,如果rm-rf /D 则会连目录也删除。

软连接和硬链接、inode

ln 创建硬链接 ln-s 创建软连接
软连接和硬链接的区别

本质:硬链接本质上是同一个文件,只是一个文件具有两个名字,彼此之间是平等的关系,节点号相同;
软连接本质上不是同一个文件,节点号不同,相当于windows里面的快捷方式。
区别:

硬链接不允许对目录创建,软连接可以,如果要想使目录的链接数增加,可以在当前目录内创建多个子目录来实现;
硬链接不允许跨分区,软链接可以;
创建硬链接后连接数加1,软链接链接数不增长;
删除硬链接后互相不影响,删除软连接源文件后,软连接就失效了;
硬链接文件的大小和属性完全相同,软链接大小、属性和源文件不同,软链接的大小由源文件的名的字符多少决定;
软链接的相对路径不是相对于当前工作目录,而是相对于软连接的当前工作目录,硬链接相对于当前工作目录和相对于硬链接的工作目录都可以。

[root@centos6 app]#ln -s f1 f2 #创建f1文件的软连接
[root@centos6 app]#ll
total 0
-rw-r--r--. 1 root root 0 Jul 19 22:06 f1
lrwxrwxrwx. 1 root root 2 Jul 19 22:06 f2 -> f1   #f2大小为f1的字符数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容