文件系统file system 对文件操作(查看,修改,增加,删除,新建,执行等---读,写)的管理系统--->把数据从内存写到磁盘,从磁盘读取数据到内存 如:1.一个文件可以多大 2.一个文件夹里可以创建多少个文件或文件夹 3.一个磁盘分区可以多大 4.文件的命名 5.文件的查找 Linux系统的内核来完成: 内核:是Linux系统内部最核心的软件 git:linus 内核功能:1.对cpu进行调度管理 2.对内存进行分配管理 3.对进程进行管理 4.对文件系统进行管理---磁盘 5.其他硬件---网卡,声卡等
文件目录结构: Windows:一个盘就是一颗树结构 Linux:只有一颗树结构
绝对路径(absolutely path)-----绝对不会搞错的路径 不考虑当前位置,从“/”到达目标文件需要经过的文件系统目录树的所有分支-----以“/”开头一层层往下走,不能跳跃,与你在哪个文件夹没关系
[root@localhost hefei]# mkdir china/{hunan/changsha,hubei/wuhan,henan/zhengzhou,anhui/hefei} -p
[root@localhost /]# cd /china/hunan/changsha
[root@localhost changsha]# cd /china/anhui/hefei
[root@localhost hefei]#
[root@localhost hefei]# mkdir /china/hunan/changde
第一个'/'读根,后面的'/'都是文件夹之间的分隔符
[root@localhost hefei]# tree /china
/china
├── anhui
│ └── hefei
├── henan
│ └── zhengzhou
├── hubei
│ └── wuhan
└── hunan
├── changde
└── changsha
相对路径:参照当前位置,到达目标文件需要经过的文件系统目录树的所有分支---不以“/”开头 1.参照物:当前目录 . 当前目录 .. 绝对目录
路径是配合命令使用的,很多命令+路径: 如cd /china mkdir /china/zhejiang touch /china/tianjin
Linux里查看目录结构的命令: 1.tree ----首选 2.ls -R
ll -----ls -l的别名 ls -R递归显示每个文件夹里的内容
du命令(estimate file space usage):统计目录及文件的空间占用情况---- Summarize disk usage of the set of FILEs----disk usage磁盘空间的使用 格式:du [选项]...[目录或文件名] 常用命令选项 -a:统计时包括所有的文件,而不仅仅只统计目录 -h:以更易读的字节单位(K、M等)显示信息 -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) -s:只统计每个参数所占用空间总的大小 -s, --summarize display only a total for each argument
[root@localhost /]# du -sh /
du: 无法访问'/proc/9239/task/9239/fd/3': 没有那个文件或目录
du: 无法访问'/proc/9239/task/9239/fdinfo/3': 没有那个文件或目录
du: 无法访问'/proc/9239/fd/4': 没有那个文件或目录
du: 无法访问'/proc/9239/fdinfo/4': 没有那个文件或目录
du: 无法访问'/run/user/1000/gvfs': 权限不够
12G /
[root@localhost /]# du -sh 2>/dev/null
12G .
[root@localhost /]#
[root@localhost ~]# du -sh 144K . 显示的是当前路径的文件大小
2>代表错误的输出重定向,命令执行时出错的信息 重定向:本来输出应该往屏幕上输出,现在改变了输出的方向,往一个文件里输出----重新决定输出的方向 标准的输出方向:输出到屏幕上
/dev/null黑洞文件:任何内容存放到这个文件里,都不保存,直接删除 /dev目录是存放设备文件的 device Linux里一切皆文件,任何一个硬件都对应一个文件----硬件对应的文件就是设备文件
文件类型:
- 代表普通文件 d 代表目录 c 代表字符设备文件 character ----与输入输出字符相关的文件,键盘,鼠标,显示器相关的设备文件 b 代表块设备文件 block----磁盘 是存储数据的设备---磁盘在格式化的时候会划分出很多块,来存放文件 l 代表链接文件 link ---相当于windows里的快捷方式
格式化:对磁盘重新进行划分出很多很多块的过程,会把原来的
ln 创建链接文件的命令 -s 创建符号链接(相当于windows里的快捷方式)
[root@localhost /]# ln -s china zhong
源 链接文件
[root@localhost /]# ll
lrwxrwxrwx. 1 root root 5 6月 19 15:20 zhong -> china
[root@localhost /]# cd zhong
[root@localhost zhong]# pwd
/zhong
[root@localhost zhong]# pwd -P 显示真正的物理路径
/china
PS:不要删除链接文件的源文件,不然会导致链接文件不可用
[root@localhost boot]# du -sh /var
110M /var
[root@localhost boot]# du -sh /usr
1.1G /usr
[root@localhost boot]#
[root@localhost lianxi]# du -sh gus.py
4.0K gus.py
[root@localhost lianxi]# ll -h gus.py
-rwxr-xr-x. 1 root root 62 6月 17 17:06 gus.py
[root@localhost lianxi]#
ll 是看这个文件里有多少字符,然后统计大小 一个英文字符 占1个字节 一个汉字3个字节 du 是看这个文件占多少个块的数量,一个块大概是4k ,没有使用完,也算4k
统计文件大小的命令: 1.du -sh 文件和文件夹都可以 2. ll -h -->只能统计文件的大小
touch 创建空文件--->前提是文件不存在---->如果文件存在就是修改文件的时间(atime,mtime,ctime都会改)
cp命令:复制文件或目录 格式:cp [选项]... 源文件或目录... 目标文件或目录 -r 递归复制整个目录树 -a 复制时保留链接,文件属性并递归地复制目录 1.复制单个文件到文件夹
[root@localhost /]# mkdir lianxi
[root@localhost /]# cd lianxi
[root@localhost lianxi]# mkdir sanchuang
[root@localhost lianxi]# ls
sanchuang
[root@localhost lianxi]# touch cali.txt
[root@localhost lianxi]# ls
cali.txt sanchuang
[root@localhost lianxi]# cp cali.txt sanchuang/
源文件 目的地
[root@localhost lianxi]# ls
cali.txt sanchuang
[root@localhost lianxi]# tree
.
├── cali.txt
└── sanchuang
└── cali.txt
1 directory, 2 files
[root@localhost lianxi]# cp cali.txt sanchuang/
cp:是否覆盖'sanchuang/cali.txt'? y
[root@localhost lianxi]#
2.复制多个文件到文件夹 在Windows按ctrl键,单个鼠标左键点击,就是选中多个文件,这些文件可以不连接,就能复制 在Windows按shift键,点第一个,然后点最后一个,这些文件可以连续选中 shift键---上档键 CTRL+A 全选
在Linux里:
[root@localhost lianxi]# cp cali.txt hosts passwd changsha
前面的多个文件都是源文件 最后是目的地(目录)
[root@localhost lianxi]# tree
.
├── cali.txt
├── changsha
│ ├── cali.txt
│ ├── hosts
│ └── passwd
├── hosts
├── passwd
└── sanchuang
├── cali.txt
└── hostname
2 directories, 8 files
[root@localhost lianxi]#
或者:
[root@localhost lianxi]# touch feng{1..10}.txt
[root@localhost lianxi]# ls
cali.txt feng1.txt feng3.txt feng5.txt feng7.txt feng9.txt
feng10.txt feng2.txt feng4.txt feng6.txt feng8.txt sanchuang
[root@localhost lianxi]# cp feng*.txt sanchuang---复制所有feng开头地文件到sanchuang文件夹里
3.复制文件夹到文件夹
[root@localhost lianxi]# mkdir jiangxi
[root@localhost lianxi]# cp sanchuang jiangxi
cp: 未指定 -r;略过目录'sanchuang'
[root@localhost lianxi]# ls jiangxi
[root@localhost lianxi]# cp sanchuang jiangxi -r------递归复制---主要用在复制文件夹
[root@localhost lianxi]# ls jiangxi
sanchuang
4.复制粘贴重命名一步到位
[root@localhost lianxi]# cp /lianxi/sanchuang/ /lianxi/jiangxi/xin -r 将sanchuang复制到jiangxi下并改名为xin
[root@localhost lianxi]# cp /etc/passwd sc_passwd 将/etc/passwd 文件复制粘贴到当前目录下改名叫sc_passwd
5.复制过去不予提醒
[root@localhost min]# alias
alias cp='cp -i'
-i, --interactive 交互
prompt before overwrite (overrides a previous -n option)
在覆盖之前给予提示
5.1 取消别名----------不建议
别名在shell解释人输入的命令的时候,会优先使用
[root@localhost min]# unalias cp
[root@localhost min]# cp feng*.txt panjinghao/
[root@localhost min]# cp feng*.txt panjinghao/
[root@localhost min]# cp feng*.txt panjinghao/
[root@localhost min]#
5.2 使用命令的绝对路径 -->别名在shell解释人输入命令时优先使用----->推荐使用的
[root@localhost min]# which cp 查看cp命令的路径
alias cp='cp -i'
/usr/bin/cp
[root@localhost min]# /usr/bin/cp feng*.txt panjinghao/
[root@localhost min]# /usr/bin/cp feng*.txt panjinghao/
[root@localhost min]# /usr/bin/cp feng*.txt panjinghao/
[root@localhost min]#
usr----unix system resource----命令就是资源,程序就是资源----此目录下存放大量的Linux命令
mv move命令( mv - move (rename) files) 1.移动(剪切) 当后面接的文件夹存在的时候,就是移动 移动1个文件或者文件夹 [root@localhost lianxi]# mv changsha zhejiang
移动多个文件
[root@localhost lianxi]# mv jiangxi/ shenzhen/ zhe fujian
[root@localhost lianxi]# mv feng*.txt sanchuang/ fujian
2.重命名 当后面接的文件夹不存在的时候,就是重命名 [root@localhost lianxi]# mv fujian/ min 剪切、粘贴、重命名一步到位 [root@localhost lianxi]# mv passwd min/xyq_passwd
PS:接选项时注意:不要把另外命令的选项套用到别的命令