文件管理

2018-06-05  本文已影响0人  毛利卷卷发

文件名命名规则

  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

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

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

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

查看文件状态

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

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

文件通配符

*:零个或多个字符
?:任意单个字符
~:当前用户家目录
~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

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

练习

  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

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

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

删除文件,常用选项:

[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

目录操作,常用选项:

[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

创建目录,常用选项:

[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

删除空目录,常用选项:

练习

  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来判断文件的类型,常用选项:

上一篇 下一篇

猜你喜欢

热点阅读