当前位置: 首页 > article >正文

Linux复习2——管理文件系统1

超级用户->普通用户:exit

普通用户->超级用户:su

Linux一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限

系统目录结构

/——根目录

/home、/root——用户的宿主目录

/usr——命令程序文件

/etc——配置文件

/boot——系统启动文件

/dev——设备文件

/tmp、/var/tmp——临时文件

/var——变量数据(日志、邮件、web内容等)

绝对路径和相对路径

#绝对路径

以“/”开始的路径表示形式

文件系统中每个文件都有一个唯一绝对路径

#相对路径

指从当前工作目录到达指定文件所需的路径,

可以是以“.”或者”..”开始的目录路径

. 代表当前目录

.. 代表上一层目录

命令

pwd

功能:pwd 命令主要用于显示或者查看当前所在的目录路径。

格式:“pwd [选项]”。

实际代码和结果:

cd

功能: cd 命令主要用于切换工作目录。

格式:“cd [目录名称]”。

-使用“cd -”命令返回到上一次所处的目录

-使用“cd ..”命令进入上级目录,

-使用“cd ~”或者“cd”命令切换到当前用户的家目录,

-使用“cd ~username”切换到其他用户的家目录。

ls

功能:ls 命令用于显示目录中的文件信息。

格式:ls [选项] [文件] ” 。

实际代码和结果:

-[root@ localhost ~]#ls #查看当前目录所有的文件和目录

-[root@localhost ~]# ls -l #查看当前目录所有的文件和目录的详细信息

-[root@localhost ~]# ls -a #查看当前目录所有的文件和目录,包括隐藏文件

-[root@localhost ~]# ls -ld /etc #查看/etc 目录本身的权限与属性信息

ls -l详解

第一行:总计(total):当前目录下所有文件所占用的空间总和。可以使用ls –lh查看,也可使用ls –alh查看。h代表文件大小以人类易读的形式给出。

第二行:

-第1字段: 文件类型和文件权限(-:普通文件、b:块设备文件,如硬盘、光盘等、 d:目录文件、c:字符设备文件,如键盘、鼠标等 、l:链接文件 )

-第2字段:文件硬链接数

-第3字段:文件拥有者

-第4字段:文件拥有者所在组

-第5字段:文件大小(以字节为单位)

-第6字段:文件最后更改时间

-第7字段:文件名(若为链接文件则追加显示其链接的原文件的路径)

ls -l可以简写为“ll”

文件的权限

在 Linux 系统中,每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限

文件的读、写、执行权限可以简写为 rwx,亦可分别用数字 4、 2、 1 来表示

#对于目录文件:

·可读:能够读取目录内文件列表

·可写:能在该目录内新增、删除、重命名文件

·可执行:能进入该目录

软链接与硬链接

硬链接(hard link): 可以将它理解为一个“指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和文件。 硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 inode 连接数就会增加 1;而且只有当该文件的 inode 连接数为 0 时,才算彻底将它删除。 需要注意的是,由于技术的局限性,不能跨分区对目录文件进行链接

软链接(也称为符号链接[symbolic link]): 仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与 Windows 系统中的“快捷方式”具有一样的性质。

命令

alias

运行alias ll命令

-显示别名,ll其实就是ls -l命令的别名。如果键入不带任何参数的alias 命令,将显示所有已定义的别名。

运行alias li='ls -li'命令

-定义li为ls -li命令的别名 ,在定义别名时,等号两边不能有空格。仅在命令中包含空格或特殊字符时才需要引号。

删除别名:unalias li

文本文件查看类命令

cat

功能: cat 命令用于查看纯文本文件(内容较少的)。

格式: cat [选项] [文件]。

实际代码和结果:

more

功能: more 命令用于分页查看纯文本文件(内容较多的)。

格式: more [选项] [文件]。

实际代码和结果:

注:空格键向下翻页,回车键向下翻行, 要退出more程序,应按q键

less

功能: 与more 命令相似,用于分页查看纯文本文件(内容较多的)。

格式: less [选项] [文件]。

实际代码和结果:

PageUp向上翻页,PageDown或空格键向下翻页。上下键向上向下翻行。退出,应按q键

less与more命令区别:

less命令允许用户向前或向后浏览文件

more命令只能向前浏览

head

功能: head 命令用于查看纯文本文档的前面部分内容。

格式: head [选项] [文件]。

实际代码和结果(显示前五行的内容):

tail

功能: tail 命令用于查看纯文本文档的后面部分内容。

格式: tail [选项] [文件]。

实际代码和结果(显示后五行的内容):

tail 命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用

wc

功能: wc 命令用于统计指定文本的行数、字数、字节数。

格式: wc [参数] 文本。

实际代码和结果:

目录操作类命令

mkdir

功能: mkdir 命令用于创建空白的目录。

格式: mkdir [选项] 目录。

实际代码和结果:

rmdir

功能: rmdir 命令用于删除空白的目录。

格式: rmdir [选项] 目录。

实际代码和结果:

文件操作操作类命令

touch

功能: touch 命令用于创建空文件或设置文件的时间。

格式: touch [选项] [文件]。

用于创建空文件,如创建一个名为new的空白文本文件

[root@localhost b]# touch new

如果该文件已存在,则修改文件的属性时间为当前系统时间

同时创建多个空文件

[root@localhost b]# touch file1 file2 file3

[root@localhost b]# touch file{1..3}(上面可以这样写)

cp

功能: cp 命令用于复制文件或目录。

格式: cp [选项] 源文件 目标文件。

在 Linux 系统中,复制操作具体分为 3 种情况:

➢如果目标文件是目录,则会把源文件复制到该目录中;

➢如果目标文件是存在的普通文件,则会询问是否要覆盖它;

➢如果目标文件不存在,则执行正常的复制操作。

实际代码和结果:

➢如果目标文件是目录,则会把源文件复制到该目录中

[root@localhost~]# touch file1

[root@localhost~]# mkdir cptest1

[root@localhost~]# cp file1 cptest1

[root@localhost~]# ls cptest1

file1

➢如果目标文件不存在,则会新建目标文件,并将源内容填充至目标文件中

[root@localhost~]# mkdir cptest2

[root@localhost~]# cp file1 cptest2/file2

[root@localhost~]# ls cptest2

file2

➢如果目标文件是已存在文件,则会询问是否要覆盖它,输入y会将源内容覆盖至目标文件中

[root@localhost~]# touch file3

[root@localhost~]# cp file1 file3cp:是否覆盖'file3'? y

➢如果源是目录:需使用-r选项,表示递归

[root@localhost~]# mkdiraa

[root@localhost~]# cp -r aa bb   #aa目录复制到bb下,当前目录下没有bb文件夹但是会创建

➢使用-p选项,保留原始文件的属性

[root@localhost ~]# touch install.log

[root@localhost ~]# cp install.log x.log

[root@localhost ~]# ll install.log x.log

-rw-r--r--. 1 root root 0 9月   9 09:11 install.log

-rw-r--r--. 1 root root 0 9月   9 09:12 x.log

[root@localhost ~]# cp -p install.log x1.log

[root@localhost ~]# ll install.log x1.log

-rw-r--r--. 1 root root 0 9月   9 09:11 install.log-rw-r--r--. 1 root root 0 9月   9 09:11 x1.log

mv

功能: mv命令用于剪切文件或将文件重命名。

格式: mv [选项] 源文件 [目标路径|目标文件名]。

剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。

如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:

实际代码和结果:

[root@localhost ~]# mv x.log linux.log

[root@localhost ~]# ls

linux.log

rm

功能: rm 命令用于删除文件或目录。

格式: rm [选项] 文件。

在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm 命令后跟上-f 参数来强制删除。

另外,想要删除一个目录,需要在 rm命令后面一个-r参数才可以,否则删除不掉

[root@localhost~]# rm install.log # 删除install.log文件

rm:是否删除普通空文件'install.log'?y

[root@localhost~]# rm -f x1.log  # 强制删除x1.log文件

[root@localhost~]# mkdir aa

[root@localhost~]# rm -rf aa  # 强制删除目录aa]

diff

功能: diff 命令用于比较多个文本文件的差异,可以用来查篡改。

格式: diff [参数] 文件。

实际代码和结果:

[root@localhost diff_test]# diff -c file1 file2

*** file1  2021-09-0709:26:00.794949966 +0800

--- file2  2021-09-0709:27:58.540956911 +0800

***************

*** 1,5 ****

! welcome to hejin

 Centos

! free Linux

 Linux is not Unix

 Linux Course

--- 1,6 ----

! welcome toooo hejin

 Centos

! Free Linux

!

 Linux is not Unix  Linux Course

dd

功能: dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件。

格式: dd [参数] 。

实际代码和结果:

例如:我们用dd 命令从/dev/zero 设备文件中取出一个大小为360MB 的数据块,然后保存成名为360_file的文件

[root@localhost ~]# dd if=/dev/zero of=360_file count=1bs=360M

记录了1+0 的读入

记录了1+0 的写出377487360字节(377MB)已复制,3.20527 秒,118MB/秒

ln

功能: ln命令用于创建链接文件。

格式: ln [选项] 目标。

实际代码和结果:

创建一个硬链接,并查看一下当前目录:

$ ln myfile hard

$ ls -li

25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard

25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile

然后我们修改一下刚才创建的hard 链接文件:

$echo "New line" >> hard

$cat myfile

Thisis a plain text file.

Newline

可以看到,这两个文件实际就是一个文件。

再建一个软链接文件:

$ ln -s myfile soft

$ ls -li

25869085 -rw-r--r-- 2 unixzii staff 36 78 17:45 hard

25869085 -rw-r--r-- 2 unixzii staff 36 78 17:45 myfile

25869216 lrwxr-xr-x1 unixzii staff 6 7 8 17:47 soft -> myfile

删除 myfile 文件,然后分别输出软硬链接的文件内容:

$ rm myfile

$ cat hard

This is a plain text file.

New line

$ cat soft

cat: soft: No such file or directory

再向这个软链接写点东西:

$echo "Something" >> soft

$ls

hardmyfile soft

刚才删除的myfile 文件竟然又出现了!当我们写入访问软链接时,系统自动将其路径替换为其所代表的绝对路径,并直接访问那个路径了。

硬链接:与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块

软链接:保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。

压缩解压类命令

tar

功能: tar命令用于对文件进行打包压缩或解压。

格式: tar [选项...] [FILE]...。

例:

tar -cvf etc.tar /etc 将/etc目录打包放在当前目录

tar -tvf etc.tar 查看打包文件etc.tar中的文件内容参数

tar -xvf etc.tar 将打包后的文件解包到当前目录

tar -xvf etc.tar -C /root 将打包后的文件指定解包到/root目录下

tar -czvf etc.tar.gz /etc 将/etc目录通过gzip格式进行打包压缩

tar -xzvf etc.tar.gz 将压缩文件解压到当前目录

gzip

功能:gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件,使用gzip压缩默认会在文件后加上.gz后缀并将源文件删除。

格式:gzip [参数] [文件]。

gzip命令使用参数-c能够指定输出并保留源文件。

例:使用gzip将文件/root/anaconda-ks.cfg压缩为anaconda-ks.cfg.gz并保留源文件

[root@localhost ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz gzip命令使用参数-c能够指定输出并保留源文件。

[root@localhost ~]# ls

anaconda-ks.cfg anaconda-ks.cfg.gz

gunzip

功能: gunzip命令用于解压缩gzip格式文件。

格式: gunzip [参数] [文件]。

zip

功能: zip命令用来压缩文件,适用于压缩多个文件的格式。

格式: zip [参数] [打包后的文件名] [打包的目录路径]。

unzip

功能: unzip命令用于解压缩zip文件。

格式: unzip [参数] file[.zip] 。

查找类命令

which

功能: which命令用来查找系统PATH目录下的可执行文件命令所在的位置。

格式: which [参数] 命令名称。

示例:查找命令cd所在的位置

[root@localhost ~]# which cd

/usr/bin/cd

whereis

功能: 寻找二进制文件、man手册页和源代码文件等相关文件的路径。

格式: whereis [-bms] 命令名称。

示例:

[root@localhost ~]# whereis cd

cd:/usr/bin/cd /usr/share/man/man1/cd.1.gz/usr/share/man/man1p/cd.1p.gz

从左向右依次为查询到的二进制程序、源文件、cd命令的man手册页路径

locate

功能: locate命令用于按照名称快速搜索文件所对应的位置。

格式: locate [参数]... [PATTERN]。

实例:

示例1:搜索etc目录下所有以m开头的文件

[root@localhost ~]# locate /etc/m

示例2:新增的文件在locate前先使用updatedb命令更新数据库,否则查找不到

[root@localhost~]# touch new.txt

[root@localhost~]# locate new.txt

[root@localhost~]# updatedb

[root@localhost~]# locate new.txt

/root/new.txt

find

功能: find 命令用于按照指定条件来查找文件。

格式: find [查找路径] 寻找条件 [操作]。

➢ 使用-name选项:按文件名称查找

例1:在当/etc目录中查找passwd文件

[root@localhost~]# find /etc -name passwd

例2:在当前目录及子目录中查找所有的*.log文件

[root@localhost~]# find . -name "*.log"

例3:在当前目录及子目录中查找文件名以一个大写字母开头的文件

[root@localhost~]# find . -name "[A-Z]*"

例4:查看HOME目录中的文件

[root@localhost~]# find ~ -name "*"

例5:在/etc目录中查找文件名以host开头的文件

[root@localhost~]# find /etc -name "host*"

例6:在当前目录查找文件名以一个个小写字母开头,最后是4到9加上.log结束的文件

[root@localhost~]# find . -name "[a-z]*[4-9].log"

➢ 使用-perm选项(表示权限,permission)

-perm  444      #查找文件权限

-perm  -444     # -表示并且;查找文件权限中u位有r权限,并且g位有r权限,并且o位有r权限的文件

-perm  /444     # /表示或者;查找文件权限中u位有r权限,或者g位有r权限,或者o位有r权限的文件

例1:在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件

[root@localhost~]# find . -perm 755

例2:查看当前目录下文件权限中u位有r权限,或者o位有r权限的文件

[root@localhost~]# find . -perm /404

例3:查看当前目录下文件权限中u位有r权限,并且o位有r权限的文件

[root@localhost~]# find . -perm -404

➢ 按文件所有人和文件所有组查找

find /test-user student    #查找/test目录下文件的所有者为student的文件

find/test -group student  #按照文件的所有组查找

find/test -user root -group student  #默认表示并且

find/test -user root -a -group student #-a表示并且

find/test -user root -o-group student#-o表示或者find /test -not -user student # -not表示非,反向选择

➢ 按更改时间和访问时间查找

atime最后一次访问时间, 如cat, more 等

ctime最后一次状态修改时间, 如 chmod, chown 等状态

mtime最后一次内容修改时间

-mtime 10         #查找文件更新距离现在10天的文件

-mtime  +10       #查找文件更新距离现在超过10天的文件

-mtime  -10       #查找文件更新距离现在10天以内的文件

-ctime  +/-10    #查找文件更新距离现在超过10天/10天以内的文件

例1:在系统根目录下查找更改时间在5日以内的文件

find / -mtime -5

例2:在/var/adm目录下查找更改时间在3日以前的文件

find/var/adm -mtime +3

例3:查找根目录下过去3天前的24小时以内有改动的文件

find/ -mtime 3

➢ 查找比某个文件新或旧的文件

-newer newest_file_name !oldest_file_name

默认:当前目录

例1:查找更改时间比文件log2012.log新但比文件log2017.log旧的文件

find . -newer log2012.log !  log2017.log

例2:查找更改时间在比log2012.log文件新的文件

find. -newer log2012.log

➢ 按类型type查找

-type         #文件类型

主要的文件类型:

    f        #普通文件

    d        #目录                    l       #链接

    b        #块设备               c       #字符设备

    s        #套接字                 p       #管道

例1:在/etc目录下查找所有的目录

find /etc -type d

例2:在当前目录下查找除目录以外的所有类型的文件find . ! -type d

搜索最近七天内被访问过的所有文件

[root@localhost ~]# find / -type f -atime-7

搜索恰好在七天前被访问过的所有目录

[root@localhost ~]# find / -type d -atime7

搜索超过七天前被访问过的所有文件

[root@localhost ~]# find / -type f -atime+7

➢ 按大小size查找

-size        #文件大小

    -size  20K      # 查找大小为20K的文件

    -size  -20K     # -表示小于;查找比20K小的文件

    -size  +20k     # +表示大于;查看比20K大的文件

例1:在test目录下查找大小比20K小的文件

find /test -size 20k

例2:搜索大于10KB的类型为普通文件:

find . -type f -size +10k

➢ 按文件所在的层次查找

-maxdepth       #最大深度

-mindepth       #最小深度

find/etc/ -maxdepth 1 -name passwd

find/etc/ -maxdepth 2 -name passwd

find/etc/ -mindepth 1 -maxdepth 2 -name *.conf   # 查找/etc目录下最少层次为1最多层次为2的以.conf结尾的文件

➢ 对查找到的文件执行某些操作

-exec   命令 {}   \;      #对查找到的文件执行某命令;-exec表示开始执行动作;{}表示用find命令查找出的所有文件;\;表示命令的结尾。

例1:将系统中属于mail组的文件备份到/mnt下

find/ -group mail -exec cp {} /mnt \;

例2:查找当前目录下当天修改过的文件,列出其详细信息find  ./ -mtime  -1  -type f  -exec  ls -l  {} \;


http://www.kler.cn/a/452740.html

相关文章:

  • 美国站群服务器如何帮助实现有效的多域名管理?
  • springboot使用自定义的线程池 完成 多线程执行网络请求,返回数据后,统一返回给前段
  • YOLOv9-0.1部分代码阅读笔记-lion.py
  • 【ES6复习笔记】Class类(15)
  • RPA系列-uipath 学习笔记3
  • 分布式协同 - 分布式事务_2PC 3PC解决方案
  • 数据可视化期末复习-简答题
  • golang,多个proxy拉包的处理逻辑
  • MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发
  • 结构化Prompt:让大模型更智能的秘诀
  • 保姆级教程Docker部署RabbitMQ镜像
  • 【Linux】如何对比两个文件数据不同的地方
  • python+reportlab创建PDF文件
  • Vulnhub之Cengbox 2靶机详细测试过程(利用不同的方法提权)
  • 数据结构之栈,队列,树
  • 从想法到实践:Excel 转 PPT 应用的诞生之旅
  • vscode+编程AI配置、使用说明
  • 【Spring 全家桶】 Spring IOC DI 保姆式教学, 教你不用new也能获取到对象的依赖注入方式, 建议收藏 . . .
  • BP分类-反向传播神经网络(Backpropagation Neural Network)
  • qt实现socketCAN
  • hive常用函数有哪些
  • HCIE-day9-OSPF
  • 亚远景-ISO 21434标准涵盖了哪些方面?
  • 基于深度学习(HyperLPR3框架)的中文车牌识别系统-搭建开发环境
  • 01.HTTPS的实现原理-HTTPS的概念
  • 【华为OD-E卷-MVP争夺战 100分(python、java、c++、js、c)】