文件管理
Windows和Linux组织文件区别
操作系统 | 方式 |
---|---|
Windows: | 以多根的方式组织文件 C:\ D:\ E:\ |
Linux: | 以单根的方式组织文件 / |
目录 | 用处 |
---|---|
bin | 普通用户命令目录,如/bin/ls,RHEL7淘汰 |
sbin | 管理员命令目录,只有超级管理员可以执行 ,如/sbin/service,RHEL7淘汰 |
dev | 设备文件,如/dev/sda , /dev/sr0 光驱设备, /dev/null 。注意,该目录下的文件没有办法直接使用,必须先挂载 |
root | root用户的HOME,超级管理员登录后会自动切换到该目录 |
home | 普通用户家目录,用户登录后会自动切换到该目录 |
proc | 虚拟的文件系统,反应出来的是内核,进程信息或实时状态 |
sys | 虚拟的文件系统,类同proc,主要保存于内存相关的信息 |
usr | 系统文件,相当于C:\Windows /usr/local 软件安装的目录,相当于C:\Program Files /usr/bin 普通用户使用的应用程序 /usr/sbin 管理员使用的应用程序 /usr/lib 库文件Glibc /usr/lib64 库文件Glibc |
boot | 存放系统启动相关的文件,例如kernel,grub(引导转载程序) |
etc | 各个软件的配置文件 |
lib | 库文件Glibc ,RHEL7淘汰 |
lib64 | 库文件Glibc,RHEL7淘汰 |
tmp | 临时文件(所有用户都可以访问和写入,进程产生的临时文件) |
var | 存档的是一些变化文件,比如数据库,日志,邮件,网站文件… |
media | 挂载目录,早期Linux挂载目录,用于挂载光盘以及软盘媒体设备 |
mnt | 挂载目录,手工挂载设备的挂载点,用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
opt | 第三方软件目录,这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中,但也有人习惯把软件放到 /usr/local/ 目录中。 |
run | 正在运行的软件的程序目录 |
Linux下文件命名规则
①理论上除了字符“/”之外,所有的字符都可以使用,但是,在目录名或文件名中,不建议使用特殊字符
② linux严格区分大小写
③如果必须对文件名进行分割,建议使用"_"
④目录名或文件名的长度不能超过 255 个字符
⑤在Linux系统中,文件扩展名的用途为了使运维人员更好的区分不同的文件类型。
文件名称一定要见名知意,可以使用英文单词
文件定位 路径
绝对路径:从/开始的路径
相对路径:从当前路径开始
[root@server1 alice]# cd - # 返回上次目录
[root@server1 ~]# cd ~ # 直接回家
文件管理:增删改查
创建
mkdir创建目录
mkdir = make directory
- 用法
# mkdir dir1 #当前目录下创建目录dir1
# mkdir /home/dir2 /tmp/dir3 #不同路径下同时创建多个目录
# mkdir /home/{dir4,dir5} #同一路径下同时创建多个目录
# mkdir -v /home/{dir6,dir7} # 显示操作的消息
# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
# mkdir -pv /home/{abc/{dir1,111},efg}
选项说明:
-p:递归创建
-v:显示创建过程
- 常见报错
[root@server1 ~]# mkdir /usr/local/nginx/conf
mkdir: 无法创建目录"/usr/local/nginx/conf": 没有那个文件或目录
- 解决方案:如果我们想同时创建多级目录,必须使用-p选项,其会从左向右一级一级创建目录。
# mkdir -p /usr/local/nginx/conf
touch创建文件
- 用法
# touch file1 # 无则创建,有则修改时间
# touch file2 file3
# touch /home/file4
# touch file{a..d}
# touch file{e,f}
删除
rmdir删除空目录
rmdir = remove directory
- 用法
# rmdir dir1 #当前目录下删除空目录dir1
# rmdir /home/dir2 /tmp/dir3 #不同路径下同时删除多个空目录
# rmdir /home/{dir4,dir5} #同一路径下同时删除多个空目录
# rmdir -v /home/{dir6,dir7} # 显示操作的消息
# rmdir -pv /home/dir8/111/22 # 删除目录和其所有父层目录(常常失败,因为父级目录非空)
选项说明:
-p:递归创建
-v:显示创建过程
rm -rf删除
- 用法
# rm -rf file1 #删除文件file1
# rm -rf dir1 #删除目录dir1
# rm -rf file{a..d} #删除文件filea,fileb,filec,filed
# rm -rf *.cpp #删除以.cpp结尾的文件
# rm -rf file* #删除以file开头的文件
选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示
* :表示所有
cp复制
cp = copy复制
- 用法
# cp -v file01.txt /home/dir01/ #本目录下的file01.txt复制到/home/dir01/
# cp readme.txt /tmp/readme.txt.bak #复制后重命名
# cp -r /home/ /tmp/ 把home目录连通其内部的文件统一复制到/tmp目录下
选项说明:
-v:显示操作过程
-r:递归复制,主要针对文件夹
mv剪切(移动)
mv = move
- 用法:
# mv file1 /home/dir3 # 将file1移动到/home/dir3
# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且改名 file20
# mv file3 file30 # 将file3改名为file30
查看文件时间
时间戳:1970年1月1日0点0分0秒到现在的秒数
[root@server1 ~]# ll /etc/hostname
-rw-r--r--. 1 root root 8 3月 17 15:31 /etc/hostname
[root@server1 ~]# ll /etc/hostname --full-time#详细时间
-rw-r--r--. 1 root root 8 2021-03-17 15:31:36.593948071 +0800 /etc/hostname
Linux文件有三种时间状态:
[root@server1 ~]# stat /etc/hostname
文件:"/etc/hostname"
大小:8 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:17859762 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:hostname_etc_t:s0
最近访问:2021-07-11 11:46:14.265882764 +0800 atime查看内容
最近更改:2021-03-17 15:31:36.593948071 +0800 mtime修改内容
最近改动:2021-03-17 15:31:36.593948071 +0800 ctime文件属性,比如权限
创建时间:-
查看文件内容
cat:正序输出文件的内容
- 用法:
#cat file1
#cat -n file1
#cat file1 file2 > file3 #将file1,file2合并到file3中
选项说明:
-n:显示行号
tac:倒序输出文件的内容
- 用法:
# tac file1
head:查看一个文件的前n 行,默认显示前10 行
- 用法:
# head -2 /etc/passwd #查看前两行
tail:查看一个文件的后n 行,默认显示后10 行
- 用法:
# tail -1 /etc/passwd #查看最后一行
# tail -f /var/log/secure # 动态查看文件尾部
more:分屏显示文件内容(了解)
- 用法:
#more 文件名
交互操作 | 作用 |
---|---|
回车 | 向下移动一行 |
d | 向下移动半页 |
空格 | 向下移动一页 |
b | 向上移动一页,后期引入功能,早期more只能前进不能后退 |
q | 退出 |
more打开文件时会把文件的全部内容加载到内存中,如果文件较大,可能会出现卡顿情况。
less:分屏显示文件内容
- 用法:
# less 文件名
#less -N 文件名
选项说明:
-N:显示行号
less加载文件,是一点一点的进行加载的。相较more,读取大文件时,效率比较高。
另外:more阅读完后,会将阅读内容显示在终端,而less不会
交互操作 | 作用 |
---|---|
回车 | 向下移动一行 |
d | 向下移动半页 |
空格 | 向下移动一页 |
b | 向上移动一页 |
上下方向键 | 向上与向下移动,less命令特有功能键 |
/ 字符串 | 搜索 |
q | 退出 |
查看文件类型
ls -l
ls -l 文件名 //看第一个字符
- 普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 块设备文件(块设备)存储设备硬盘,U盘 /dev/sda,/dev/sda1
c 字符设备文件(字符设备)打印机,终端 /dev/tty1,/dev/zero
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
[root@server1 ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117608 8月 20 2019 /bin/ls
srw-rw-rw-. 1 root root 0 7月 12 11:45 /dev/log
brw-rw----. 1 root disk 8, 0 7月 12 11:45 /dev/sda
crw--w----. 1 root tty 4, 1 7月 12 11:45 /dev/tty1
lrwxrwxrwx. 1 root root 22 3月 16 17:49 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 7月 11 23:42 /etc/hosts
drwxr-xr-x. 20 root root 263 7月 11 20:35 /home
prw-------. 1 root root 0 7月 12 11:45 /run/dmeventd-client
file
[root@server1 ~]# file /dev/sda
/dev/sda: block special
[root@server1 ~]# file /dev/tty1
/dev/tty1: character special
root@server1 ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@server1 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped
stat
#stat 文件名 #显示文件类型
[root@server1 ~]# stat /etc/hostname
文件:"/etc/hostname"
大小:8 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:17859762 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:hostname_etc_t:s0
最近访问:2021-07-11 11:46:14.265882764 +0800 atime查看内容
最近更改:2021-03-17 15:31:36.593948071 +0800 mtime修改内容
最近改动:2021-03-17 15:31:36.593948071 +0800 ctime文件属性,比如权限
创建时间:-
压缩与解压
tar
打包
-
默认情况下,Linux一次只能压缩一个文件,无法压缩多个文件或文件夹。所以需要提前对多个文件或文件夹进行打包,然后压缩。
-
用法:
# tar -cvf abc.tar a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包到abc.tar文件中
# tar -tf abc.tar #查看tar包中的文件信息
# tar -cvf wechat.tar wechat #把wechat文件夹进行打包wechat.tar
选项说明:
-c :打包
-f :filename,打包后的文件名
-v :显示打包的进度
-t :查看打包的文件内容
压缩
- 用法:
# tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
cf :对文件或文件夹进行打包
-v :显示压缩进度
-z :使用gzip压缩工具把打包后的文件压缩为.gz
-j :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J :使用xz压缩工具把打包后的文件压缩为.xz
压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz
# tar -zcf abc.tar.gz a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包并压缩为abc.tar.gz
# tar -zcf wechat.tar.gz wechat #把wechat文件夹压缩为wechat.tar.gz格式的压缩包
解压
- 用法:
# tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
xf :对文件或文件夹进行解包
其他同压缩
# tar -zxf abc.tar.gz #把abc.tar.gz解压
zip&unzip
zip压缩
- 用法:
# zip abc.zip a.txt b.txt c.txt
# zip -r wechat.zip wechat
选项说明:
-r :递归压缩,主要针对的是文件夹
zip格式在Windows和Linux中可以通用
unzip解压缩
基本语法:
# unzip 压缩包名称 --> 解压到当前目录
# unzip 压缩包名称 -d 指定路径 --> 解压到指定路径下
解压
- 用法:
# tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
xf :对文件或文件夹进行解包
其他同压缩
# tar -zxf abc.tar.gz #把abc.tar.gz解压
zip&unzip
zip压缩
- 用法:
# zip abc.zip a.txt b.txt c.txt
# zip -r wechat.zip wechat
选项说明:
-r :递归压缩,主要针对的是文件夹
zip格式在Windows和Linux中可以通用
unzip解压缩
基本语法:
# unzip 压缩包名称 --> 解压到当前目录
# unzip 压缩包名称 -d 指定路径 --> 解压到指定路径下