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

ops/2024/12/28 14:53:57/

超级用户->普通用户: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.ppmy.cn/ops/145680.html

相关文章

Selenium实践总结

1.使用显示等待而不是隐式等待 隐式等待可能会导致不可预测的测试行为,尤其是在动态 Web 应用程序中。显式等待,它允许您 等待特定条件发生后再继续测试,这种方法提供了更多的控制和可靠性。 WebDriverWait wait new WebDriverWait(drive…

Adversarial Machine Learning(对抗机器学习)

之前把机器学习(Machine Learning)的安全问题简单记录了一下,这里有深入研究了一些具体的概念,这里记录一下方便以后查阅。 Adversarial Machine Learning(对抗机器学习) Adversarial Examples 相关内容Eva…

全局webSocket 单个页面进行监听并移除单页面监听

之前全局封装的 webSocket 在某些特定的页面中使用会直接去调用 webSocket 的 onMessage 方法 已进入页面就会调,如果退出页面移除整个监听的话全局监听就会被移除 这是修改后的 全局封装 let token uni.getStorageSync(token) const HEARTBEAT_INTERVAL 1 *…

低代码配置式组态软件-BY组态

随着物联网、大数据等技术高速发展,我们逐步向数字化、可视化的人工智能(AI)时代的方向不断迈进。智能时代是工业 4.0 时代,我国工业领域正努力从“制造”迈向“智造”的新跨越。 什么是组态软件? 组态软件&#xff…

前端真实面试题自用

一、写在前面 笔者,经过计算机学硕考研的失败后,想谋求一份前端工作实在是太难了。一方面,确实曾经学习过的东西很久没有拾起,另一方面,对于前端面经还是记忆不深刻,特地写此贴记录笔者在真实前端面试中遇…

OpenHarmony开发板环境搭建

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! 0.OpenHarmony 0.1 OpenHarmony OpenHarmony是一款面向全场景、全连接、全智能的…

Xdebug

1、开启xdebug扩展 2、修改一下php.ini文件 xdebug.remote_enable 1 xdebug.remote_autostart 13、vscode安装插件php debug 4、生成launch.json文件,好像啥都不用改 5、vscode没有配置php路径的,需要去配置: 6、发起请求 8、代码断…

CSES-1687 Company Queries I(倍增法)

题目传送门https://vjudge.net/problem/CSES-1687#authorGPT_zh 解题思路 其实和倍增法求 LCA 是一样的…… 首先设 表示 号点的上面的第 个祖先是谁。 同倍增法: 然后,题目要求我们向上跳 个点。 枚举 (从大到小,想想为…