Linux06_文件操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux06_文件操作相关的知识,希望对你有一定的参考价值。
文件系统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 文件和文件夹都可以
- 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:接选项时注意:不要把另外命令的选项套用到别的命令
以上是关于Linux06_文件操作的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段