文件管理

文件名命名规则

  1. 文件名大小写敏感
  2. 文件名可以使用除/以外的任意字符
  3. 文件名长度不能超过255字符
  4. 以.开头的文件为隐藏文件

常见目录的作用

/boot:启动相关的内核和grub文件
/bin:可执行的二进制文件
/sbin:只有root才能执行的二进制文件
/lib:库文件
/lib64:64位库文件
/home/username:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统的挂载点
/etc:目录存放着各种系统配置文件
/dev:设备文件存放目录
/srv:系统上运行的服务用到的数据
/tmp:临时目录
/usr:存放软件的执行程序、库文件及文档
/var:存放软件可变的数据
/proc:内核与存放进程信息的虚拟文件系统
/sys:存放硬件信息的虚拟文件系统

/usr

/usr/bin:保证系统拥有完整功能而提供的程序,在centos7中,/bin就是指向这里
/usr/sbin:管理员能够用的程序
usr/lib:32位程序用到的库
/usr/lib64:64位程序用到的库
/usr/include:C程序的头文件
/usr/share:结构化独立的数据,列入doc和man
/usr/local:第三方程序的安装位置

/var

/var/cache:应用程序缓存数据的目录
/var/lib:应用程序状态信息数据
/var/local:专用于/usr/local的程序存储可变的数据
/var/lock:锁文件
/var/log:日志文件
/var/opt:专用户/opt下的应用程序存储可变的数据
/var/run:运行中的进程相关数据,通常用户存储进程PID文件
/var/spool:应用程序数据池
/var/tmp:保存系统两次重启之间产生的临时数据

Linux下的文件类型

-:普通文件
d:目录文件
b:块设备
c:字符设备
l:符号链接文件
p:管道文件pipe
s:套接字文件socket

pwd

显示当前位置的绝对路径,常用选项:

  • -P:如果当前位置为软连接目录,则显示源路径
  • -L:和pwd一样,默认显示当前位置绝对路径

basename

取出基名

[root@centos7 ~]# basename '/etc/sysconfig/network-scripts/ifcfg-eth0'
ifcfg-eth0

dirname

取出目录名

[root@centos7 ~]# dirname '/etc/sysconfig/network-scripts/ifcfg-eth0'
/etc/sysconfig/network-scripts

cd

进入指定目录,常用选项:

  • ..:进入当前所在位置的上一级目录
  • -:进入上一次的目录,重复调用会在两个目录中来回切换

ls

列出目录内容,常用选项:

  • -a:显示所有的文件,包括隐藏的文件
  • -A:显示所有的文件,包括隐藏的文件,但是不包括.和..
  • -l:长列出,显示属性信息
  • -d:不显示子文件和子目录的信息
  • -R:递归显示
  • -1:以一列的方式显示
  • -S:按文件大小从大到小排序
  • -t:默认以修改时间从新到旧排列,而如果使用–time=atime或者–time=ctime,则以指定的时间显示,–time=atime可以使用-utl来替代
  • -rS:按文件大小从小到大排序
  • -rt:按时间从旧到新排序
  • -X:按文件的后缀名排序
  • -i:显示文件的inode号
  • -Z:显示文件的context标签

查看文件状态

stat filename

查看文件的三个时间戳,还可以通过ls --time=atime/--time=ctime来查看

[root@centos6 ~]# stat /etc/sysconfig/network-scripts/ifcfg-eth0
  File: `/etc/sysconfig/network-scripts/ifcfg-eth0'
  Size: 231         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 393227      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-05-18 14:11:53.672274700 +0800
Modify: 2018-05-16 05:35:31.131999975 +0800
Change: 2018-05-16 06:15:15.794999624 +0800

时间戳

access time(atime):访问时间
modify time(mtime):数据修改时间
change time(ctime) :元数据修改时间

touch

若文件不存在,则创建一个空文件;若文件存在,则更新三个时间戳,常用选项:

  • -a:更新atime和ctime
  • -m:更新mtime和ctime
  • -c:若文件存在,则更新三个时间戳,若不存在,则不做任何操作

文件通配符

*:零个或多个字符
?:任意单个字符
~:当前用户家目录
~J :用户J家目录
~+:当前工作目录
~- :前一个工作目录
0-9:任意数字
a-Z:任意大小写字母
^:取反
[:digit:]:任意数字
[:lower:] :任意小写字母
[:upper:]:任意大写字母
[:alpha:]:任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:] :标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:] :图形字符
[:xdigit:]:十六进制字符

# 只显示/etc下的非隐藏目录
[root@centos6 ~]# ls -d /etc/*/
/etc/abrt/               /etc/oddjob/
/etc/acpi/               /etc/oddjobd.conf.d/
/etc/alsa/               /etc/openldap/
/etc/alternatives/       /etc/opt/
/etc/audisp/             /etc/PackageKit/
/etc/audit/              /etc/pam.d/

练习

  1. 显示/etc目录下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

    [root@centos6 ~]# ls /etc/k*[[:digit:]]*[[:lower:]]
    
  2. 显示/proc目录下名字由任意三位数字组成的文件或目录

    [root@centos6 ~]# ls -d /proc/[[:digit:]][[:digit:]][[:digit:]]
    
  3. 显示/var/log目录下文件名包含符号及数字的文件或目录

    [root@centos6 ~]# ls /var/log/*[[:punct:][:digit:]]*
    
  4. 显示/usr/share/man目录下所有以m开头,以一个数字和x结尾的文件或目录

    [root@centos6 ~]# ls -d /usr/share/man/m*[[:digit:]x]
    
  5. 显示/etc目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录

    [root@centos6 ~]# ls -d /etc/[[:upper:]]*[[:digit:]][[:digit:]]
    
  6. 显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录

    [root@centos6 ~]# ls /etc/*[[:lower:]]*[[:digit:]]*.conf
    
  7. 只显示用户家目录下的非隐藏目录

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

复制文件和目录

源\目标 不存在 存在且为文件 存在且为目录
一个文件 新建同名文件并填充内容 覆盖内容 在目录下新建同名文件并填充内容
多个文件 提示错误 提示错误 在目录下新建同名文件并填充内容
目录(配合-r选项) 新建同名目录和目录下的文件并填充内容 提示错误 在目录下新建同名文件并填充内容

cp

复制文件或目录,常用选项:

  • -i:覆盖时提示
  • -r:递归复制,可以复制目录
  • -d:默认不加-d时,cp复制软连接时会将源复制过去,加上-d保留链接属性,把软连接复制过去
  • --preserv=
    • mode:权限不变
    • owner[skip]:权限及owner,group不变
    • time:三个时间戳不变
    • xattr:acl权限不变
    • links:链接不变
    • context:文件的selinux上下文关系不变
    • all:所有不变
  • -p:相当于--preserv=mode,owner,time
  • -a:cp -dr --preserv=all
  • -v:显示复制过程
  • -f:强制覆盖
  • -u:只覆盖比目标文件新的文件,相当于更新文件
  • –backup=numbered:覆盖前,将旧文件名的后缀改为.n这种格式

练习

  1. 定义别名命令baketc,将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见

    [root@centos7 ~]# alias baketc='cp -av /etc/* /testdir/backup$(date '+%F')/'
    
  2. 创建/testdir/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限

    [root@centos7 ~]# cp -a /root/* /testdir/rootdir/
    

mv

移动和重命名文件,常用选项:

  • -i:覆盖时提示
  • -f:强制覆盖,不提示

rename

重命名文件,可以批量重命名

[root@centos7 app]$ ls
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt
[root@centos7 app]$ rename txt mp3 *.txt
[root@centos7 app]$ ls
1.mp3  2.mp3  3.mp3  4.mp3  5.mp3  6.mp3  7.mp3  8.mp3

rm

删除文件,常用选项:

  • -i:删除时提示
  • -f:强制删除,不提示
  • -r:递归删除,用来删除目录,通常配合-f来直接删除目录及目录下的所有文件和目录
[root@centos7 ~]# ls /testdir/rootdir/
anaconda-ks.cfg  initial-setup-ks.cfg
[root@centos7 ~]# rm -rf /testdir/rootdir/
[root@centos7 ~]# ls /testdir/rootdir/
ls: cannot access /testdir/rootdir/: No such file or directory

tree

目录操作,常用选项:

  • -d:只显示目录
  • -L level:显示指定目录的级数
  • -P pattern:只显示由指定pattern匹配到的路径
[root@centos7 boot]# tree -d
.
├── efi
│   └── EFI
│       └── centos
├── grub
└── grub2
    ├── fonts
    ├── i386-pc
    └── locale

8 directories
[root@centos7 boot]# tree -L
tree: Missing argument to -L option.
[root@centos7 boot]# tree -L 1
.
├── config-3.10.0-862.el7.x86_64
├── efi
├── grub
├── grub2
├── initramfs-0-rescue-93cbf5565a95463486f2d96ceb77d275.img
├── initramfs-3.10.0-862.el7.x86_64.img
├── symvers-3.10.0-862.el7.x86_64.gz
├── System.map-3.10.0-862.el7.x86_64
├── vmlinuz-0-rescue-93cbf5565a95463486f2d96ceb77d275
└── vmlinuz-3.10.0-862.el7.x86_64

3 directories, 7 files
[root@centos7 boot]# tree -Ld 1
.
├── efi
├── grub
└── grub2

3 directories

mkdir

创建目录,常用选项:

  • -p:可以同时创建多级目录
  • -v:显示创建的信息
  • -m:创建同时指定目录的权限
[root@centos7 testdir]# mkdir a/b
mkdir: cannot create directory ‘a/b’: No such file or directory
[root@centos7 testdir]# mkdir -p a/b
[root@centos7 testdir]# tree
.
└── a
    └── b

2 directories, 0 files

rmdir

删除空目录,常用选项:

  • -p:递归删除空目录

练习

  1. 如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

    [root@centos7 testdir]# mkdir -p /testdir/dir2/{x/{a,b},y}
    [root@centos7 testdir]# tree dir2/
    dir2/
    ├── x
    │   ├── a
    │   └── b
    └── y
    

硬链接和软链接

硬链接

ln source destination

指向同一个inode的多个文件路径,目录不支持硬链接,硬链接不支持跨文件系统,创建硬链接会增加inode引用计数,其实硬链接就是在目录inode中添加一个路径和inode的对应关系

[root@centos7 app]# echo "hello" > test1/a
[root@centos7 app]# cat test1/a
hello
[root@centos7 app]# ln test1/a test2/b
[root@centos7 app]# cat test2/b 
hello
[root@centos7 app]# ll test2/b 
-rw-r--r--. 2 root root 6 May 19 19:12 test2/b

软链接

ln -s source destination

指向文件路径的另一个文件路径,软链接与原文件时两个独立的文件,各自有自己的inode号,对文件创建软链接不会增加引用计数,可以跨文件系统,删除原文件,软链接的路径就不存在了,就会失效

file

因为在linux中,不会通过后缀名来区分文件的类型,因为有文件名后缀,仅仅用来方便用户和管理员管理,所以可以使用file来判断文件的类型,常用选项:

  • -b:显示文件类型,但是不显示文件名
  • -f filelist:列出filelist中的文件名的文件类型
  • -F:使用指定分隔符替换输出文件名后默认的”;”分隔符
  • -L:查看软链接对应文件的文件类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 文件系统结构 Linux中,所有的文件与目录都由根目录/ 开始。那是所有目录与文件的源头。然后再一个一个分支下来,...
    不知岁月惜阅读 494评论 0 0
  • 前言: linux文件系统是一个倒置树结构,从"/"开始,文件命名区分大小写,遵循FHS(Filesystem H...
    哈喽别样阅读 208评论 0 0
  • 文件有两类数据:元数据【metadata】,数据【data】。 以下为元数据第一个字符的标识: - 普通文件 实...
    xue2007阅读 855评论 0 0
  • 一.文件系统与目录结构 image.png 文件系统的一些性质 文件系统以从根开始, 以“/”来表示。-----/...
    楠人帮阅读 1,224评论 0 0
  • 20170911星期一天气晴 今晚值班。跟孩子们又要短暂小别,希望能努力吧。 昨天一天的考试,感受到知识更新换代太...
    璇戎爸爸阅读 160评论 0 0