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 文件和文件夹都可以

  1. 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_文件操作的主要内容,如果未能解决你的问题,请参考以下文章

linux学习:Nginx--常见功能配置片段与优化-06

用片段替换时操作栏向下移动

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

LINUX06_MYSQL5.7.24如何安装

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程