文章目录
- 1. 文件管理概述
- 2. 系统的目录结构
- 3. 路径的定位
- 4. 文件管理基础命令
1. 文件管理概述
创建 复制 移动 删除 查看 编辑 压缩
2. 系统的目录结构
Windows
D:\Linux脱产10期视频\基础阶段 反斜线
Linux
所有的文件或者目录的起点或者顶点都是以根开始的 / 斜线
Linux的目录结构就像是一个倒挂的树形结构
必知必会的目录及文件
[root@qls ~]# ls -1 /
软连接文件
/bin #存放系统命令的目录 普通用户可以执行的命令
/sbin #存放系统命令的目录 需要管理员权限才可以执行的命令
/lib #库文件目录 32位库文件
/lib64 #库文件目录 64位库文件
====
/usr/bin
/usr/sbin
/usr/lib
/usr/lib64
/boot #系统引导目录 存放的是系统内核和grub的配置
/dev #系统设备目录
/dev/cdrom -> sr0 #光盘镜像
/dev/null #黑洞设备 将一些不用的数据导入到黑洞设备
/dev/zero #字符设备 源源不断的产生数据 字符
/dev/random #产生随机数的设备
/dev/stderr -> /proc/self/fd/2 #错误输出 2>
/dev/stdin -> /proc/self/fd/0 #标准输入 <
/dev/stdout -> /proc/self/fd/1 #标准输出 >
/dev/pts/ #存放的是虚拟终端信息
#磁盘设备及分区
/dev/sda
/dev/sda1 /
/dev/sda2
/dev/sda3 /boot
/etc #系统的主配置文件存放目录 程序配置文件存放目录
/etc/sysconfig/network-scripts/ifcfg-* #系统网卡配置文件
/etc/hosts #本地域名解析文件 记录 IP地址与主机名的对应的映射关系
/etc/resolv.conf #本地DNS配置文件
/etc/fstab #设备挂载目录配置文件 开机自启动挂载列表
/etc/hostname #主机名配置文件
/home #普通用户的家目录 /home/test
/media #挂载一些可移动的设备 CD 相机
/mnt #临时挂载目录
/opt #早期第三方软件安装目录
/proc #虚拟可变的目录 记录了系统的实时状态
/root #超级用户管理员root的家目录
/run #进程运行时产生的一些pid文件
/srv #物理设备所产生的一些文件
/sys #物理设备的驱动信息文件
/tmp #公共临时目录 公共场所 系统会定时的删除这个目录下长时间没有访问的文件
/usr #系统目录 系统文件目录 跟Windows目录一样
/usr/local #软件安装目录
/var #可变的目录 系统日志信息
/var/log #系统日志存放目录
/var/log/messages #系统级别日志
/var/log/secure #用户登录日志
/var/tmp #程序运行时所产生的一些进程文件
/var/run #程序运行时所产生的进程的pid文件目录
3. 路径的定位
. #表示的是当前所在的目录
.. #当前目录的上一级目录
[root@qls usr]# ./local/ #当前目录下的local目录 == /usr/local
[root@qls usr]# ../ #当前目录的上一级目录 / 根
./ #表示当前的目录
. #表示当前的目录
../ #从当前目录的上一级目录开始
.. #上一级目录
什么是绝对路径 什么又是相对路径
绝对路径: 凡是以根开始的路径就是绝对路径 或者以~开头的路径也是绝对路径 ~ === /root ~ == /home/xxx
/usr/local/ #绝对路径
4. 文件管理基础命令
1. pwd #显示当前工作目录的绝对路径 告诉我,你在哪里
[root@qls usr]# pwd
/usr
[root@qls usr]# cd local/
[root@qls local]# pwd
/usr/local
2. cd #切换工作目录 切换路径
[root@qls local]# cd #直接切换到当前用户的家目录
[root@qls ~]#
[root@qls ~]# cd ~ #切换当前用户的家目录 ==== cd /root
[root@qls ~]# cd . #保持当前目录不变
[root@qls ~]# cd ./ #保持当前目录不变
[root@qls ~]# cd .. #切换当前目录的上一级目录
[root@qls /]# cd
[root@qls ~]# cd ../ #切换当前目录的上一级目录
[root@qls /]#
[root@qls usr]# cd ./local/
[root@qls local]# pwd
/usr/local
[root@qls local]# cd ../etc #进入当前目录的上一级目录/usr下的etc目录
[root@qls etc]# pwd
/usr/etc
[root@qls usr]# cd ../etc #不同目录下。执行的相对路径操作,得到的结果是不同的
[root@qls etc]# pwd
/etc
[root@qls etc]# cd / #切换到根目录 根本身也是一个目录
[root@qls /]# cd - #切换到你上一次所在的目录 快速的到达上一次所在的路径
/etc
[root@qls etc]#
3. ls #显示文件或者目录列表信息 打开目录 显示目录里面的内容
常用选项:
-l #以长格式形式显示文件或者目录的详细属性信息
-i #显示文件或者目录的inode信息 索引节点信息
-h #以字节大小的形式显示文件大小 B KB MB GB
-a #显示所有的文件,隐藏文件 所有以点开头的文件就是隐藏文件
-S #以文件大小进行排序 从大到小显示
-t #根据时间进行排序 最新的时间在最上面
-r #倒叙排序
-F #给不同的文件加上不同的标识符
-d #显示目录本身信息
/ #目录
* #可执行文件
= #套接字文件 socker文件
| #管道文件
[root@qls ~]# ls #如果不加目录信息,默认针对的是当前目录操作
anaconda-ks.cfg
[root@qls ~]# ls /root
anaconda-ks.cfg
[root@qls ~]# ls -l
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
=== 系统自带的别名 ll === ls -l
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
[root@qls ~]# ls -li
total 4
134317667 -rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
[root@qls ~]# ll -h
total 4.0K
-rw-------. 1 root root 1.4K Jul 6 02:17 anaconda-ks.cfg
10月24日 程序员日
[root@qls ~]# ll -a
total 28
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
[root@qls ~]# ll -aS
total 28
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
[root@qls ~]# ll -at
total 28
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
[root@qls ~]# ll -atr
total 28
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
[root@qls ~]# ll -aSr
total 28
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
[root@qls ~]# ll -aF
total 28
dr-xr-x---. 2 root root 135 Jul 6 09:06 ./
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ../
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
[root@qls ~]# ll -d /root
dr-xr-x---. 2 root root 135 Jul 6 09:06 /root
[root@qls ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@qls ~]# ls -1 / #以行的形式显示文件名称
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
4. tree #以树状形式显示目录列表
[root@qls ~]# yum install -y tree
选项:
-a #显示所有文件或者目录 隐藏文件
-d #只显示目录及目录的数量
-h #显示文件的大小
-F #给不同类型的文件加上不同的标识符
/ #目录
* #可执行文件
= #套接字文件 socker文件
| #管道文件
-L #根据目录的基本显示
[root@qls ~]# tree
.
└── anaconda-ks.cfg
0 directories, 1 file
[root@qls ~]# tree -a
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
└── .tcshrc
0 directories, 7 files
[root@qls ~]# tree -d /var/log/
/var/log/
├── anaconda
├── audit
├── rhsm
└── tuned
4 directories
[root@qls ~]# tree -h /var/log/
/var/log/
├── [ 176] anaconda
│ ├── [ 26K] anaconda.log
│ ├── [3.9K] ifcfg.log
│ ├── [1.5M] journal.log
│ ├── [ 0] ks-script-3PCKae.log
│ ├── [108K] packaging.log
│ ├── [ 29K] program.log
│ ├── [121K] storage.log
│ ├── [275K] syslog
│ └── [ 21K] X.log
[root@qls ~]# tree -L 2 /
5. mkdir #创建目录
选项:
-p #创建多级目录 递归创建 当目录已经存在时,再次创建不会提示报错
-v #显示创建的过程
-m #创建的时候,给目录设置一个权限
{} #生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割
* #通配符 所有的意思
在相同的路径下,不能存在相同的文件名称
在不同的路径下,可以存在相同的文件名称
[root@qls ~]# mkdir /data #使用绝对路径进行创建
[root@qls ~]# mkdir data #使用相对路径进行创建
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
[root@qls ~]# ll /
total 20
lrwxrwxrwx. 1 root root 7 Jul 6 02:13 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 6 02:17 boot
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
[root@qls ~]# mkdir /root/data
mkdir: cannot create directory ‘/root/data’: File exists
File exists #文件已经存在
解决:
1. 你要创建的目录已经存在,无需再次进行创建
2. 你要创建的目录路径书写错误
[root@qls ~]# mkdir -p /root/data
[root@qls ~]# mkdir test/oldboy
mkdir: cannot create directory ‘test/oldboy’: No such file or directory
[root@qls ~]# mkdir -p test/oldboy
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test
[root@qls ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul 8 19:57 oldboy
[root@qls ~]# mkdir oldboy
[root@qls ~]# mkdir 'oldboy '
[root@qls ~]#
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test
[root@qls ~]# ll -F
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data/
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy/
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy /
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test/
[root@qls ~]# root 6 Jul 8 20:00 oldboy/
[root@qls ~]# mkdir -v data01
mkdir: created directory ‘data01’
[root@qls ~]# mkdir -m 700 data02
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:02 data01
drwx------. 2 root root 6 Jul 8 20:04 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test
[root@qls ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@qls ~]# mkdir test/data{01..10} #批量创建10个目录
[root@qls ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data01
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data03
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data04
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data05
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data06
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data07
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data08
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data09
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data10
[root@qls ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@qls ~]# echo {a..g}
a b c d e f g
[root@qls ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@qls ~]# mkdir test/oldboy-{a..g}
[root@qls ~]# ll -d test/oldboy-*
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-a
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-b
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-c
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-d
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-e
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-f
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-g
[root@qls ~]# mkdir data-{a,c,d,h}
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:02 data01
drwx------. 2 root root 6 Jul 8 20:04 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-a
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-c
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-d
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-h
[root@qls ~]# mkdir -p oldboy/{01..10}/data{01..10}/test{01..10}
#在Linux系统中,是区分大小写的
[root@qls ~]# mkdir a
[root@qls ~]# mkdir A
[root@qls ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jul 8 12:25 a
drwxr-xr-x. 2 root root 6 Jul 8 12:25 A
6. touch #创建文件 创建空文件 当文件已经存在时,创建的时候不会报错,但是会改变文件的时间戳
{} #生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割
[root@qls ~]# touch test.txt
[root@qls ~]# touch data.{txt,sh,log,xml,tar,py,js}
[root@qls ~]# ll
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.js
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.log
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.py
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.sh
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.tar
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.txt
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.xml
[root@qls ~]# touch data{01..10}.txt
[root@qls ~]# ll