2024年Linux 学习笔记 04 —— 文件管理和磁盘管理相关命(1)

└── [ 64] html5

11 directories, 1 file

-L n 指定级别

jisongyang@jisongyangdeMacBook-Air ~ % tree -L 1

.

├── CLionProjects

├── Desktop

├── Documents

……………………

21 directories, 2 files

tree命令也可以不进入到某个目录下使用,使用绝对路径也是可以的。

tree -d /home

ls


ls 命令是Linux下最常用的指令之一。ls命令为英文单词 list 的缩写,正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。通过 ls 命令,不仅可以查看 Linux 文件夹包含的文件,而且可以查看文件的权限(包括:目录、文件权限)、查看目录信息等。

补:命令l基本类似于 ls,但是在显示目录的时候,会加上/以示区分。

  • 命令

ls [option] [filename]

-a 列出目录下所有文件,包括以 . 开头的隐藏文件

-b 把文件名中不可输出的字符用反斜杠加字符编号(就像 C 语言一样)的形式列出

-c 输出文件的 i 节点的修改时间,并以此排序

-d 将目录像文件一样显示,而不是显示其下的文件

-e 输出时间的全部信息,而不是输出简略信息

-f -U 对输出的文件不排序

-i 输出文件的 i 节点的索引信息

-k 以 k 字节的形式表示文件的大小

-l 列出文件的详细信息

-m 横向输出文件名,并以 , 作为分隔符

-n 用数字 UID、GID 代替名称

-o 显示文件除组信息外的详细信息

-r 对目录反向排序

-s 对每个文件名后输出该文件的大小

-t 以时间排序

-u 以文件上次被访问的时间排序

-v 根据版本进行排序

-x 按列排序,横向排序

-A 显示除 . 和 … 外的所有文件

-B 不输出以 ~ 结尾的备份文件

-C 按列输出,纵向排序

-G 列出文件的组的信息

-L 列出链接文件名,而不是链接到的文件

-N 不限制文件长度

-Q 把输出的文件名用双引号扩起来

-R 列出所有子目录下的文件

-S 以文件大小排序

-X 以文件的扩展名(最后一个 . 后的字符)排序

-1 一行只输出一个文件

-color=no 不显示彩色文件名

–help 在标准输出上显示帮助信息并退出

–version 在标准输出上显示版本信息并退出

举例(会几个最常用的即可)

  1. 只查看目录

jisongyang@jisongyangdeMacBook-Air testdir % ls

html1 html2 html3 html4 html5

  1. 查看当前目录下文件以及其属性信息

jisongyang@jisongyangdeMacBook-Air testdir % ls -l

total 0

drwxr-xr-x 3 jisongyang staff 96 2 14 22:02 html1

drwxr-xr-x 3 jisongyang staff 96 2 14 22:07 html2

drwxr-xr-x 2 jisongyang staff 64 2 14 22:02 html3

drwxr-xr-x 2 jisongyang staff 64 2 14 22:02 html4

drwxr-xr-x 2 jisongyang staff 64 2 14 22:02 html5

  1. 显示包括隐藏文件

ls -a

  1. 递归显示子目录

jisongyang@jisongyangdeMacBook-Air testdir % ls -R

html1 html2 html3 html4 html5

./html1:

a

./html1/a:

b b1

./html1/a/b:

c

./html1/a/b/c:

./html1/a/b1:

c1

./html1/a/b1/c1:

d1

./html1/a/b1/c1/d1:

./html2:

hello.txt

./html3:

./html4:

./html5:

  1. 按文件大小降序排序

jisongyang@jisongyangdeMacBook-Air ~ % ls -lS

total 16

drwx------@ 71 jisongyang staff 2272 2 10 17:12 Library

drwx------@ 45 jisongyang staff 1440 2 12 00:47 Downloads

drwxr-xr-x 17 jisongyang staff 544 2 9 19:38 IdeaProjects

drwxr-xr-x 15 jisongyang staff 480 2 1 02:12 CLionProjects

……………………

songyangji@10.211.55.7

mv


  • 格式

mv [-f | -i | -n] [-v] source target

-f 表示强制覆盖(默认情况下)

-i 表示询问之后操作

-n 表示不覆盖已存在文件

-v 表示显示详细信息

举例

  1. 重命名文件

jisongyang@jisongyangdeMacBook-Air testdir % ls

html1 html2 html3 html4 html5 test

jisongyang@jisongyangdeMacBook-Air testdir % mv test text

jisongyang@jisongyangdeMacBook-Air testdir % ls

html1 html2 html3 html4 html5 text

  1. 移动文件

jisongyang@jisongyangdeMacBook-Air testdir % mv text html1

jisongyang@jisongyangdeMacBook-Air html1 % ls

a test

  1. 批量移动文件到指定目录中

mv a b c d dir/

  1. 覆盖前询问 (默认是直接覆盖,比较危险)

这是一种比较安全的做法,以防关键的东西被覆盖。

jisongyang@jisongyangdeMacBook-Air testdir % mv -i text html1

overwrite html1/text? (y/n [n]) y

  1. 移动目录

mv dir_src dir_dist

如果目录dir_dist不存在,将目录dir_src改名为dirdir_dist。

  1. 移动当前文件夹下的所有文件到上一级目录(移动完,这个文件夹就是空的了)

mv * …

  1. 同时使用绝对路径和相对路径也是可以的。

下面的功能也就是将用户主目录下的html2文件夹移动到 当前目录。

mv ~/html2 .

cp


  • 概述

cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录。

cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。

  • 格式

用法:cp [选项]… [-T] 源文件 目标文件

或:cp [选项]… 源文件… 目录

或:cp [选项]… -t 目录 源文件…

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

长选项必须使用的参数对于短选项时也是必需使用的。

-a, --archive 等于-dR --preserve=all

–attributes-only 只拷贝文件属性,不拷贝文件内容

–backup[=CONTROL 为每个已存在的目标文件创建备份

-b 类似–backup 但不接受参数

–copy-contents 在递归处理是复制特殊文件内容

-d 等于–no-dereference --preserve=links

-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项

存在时则不需再选此项)

-i, --interactive 覆盖前询问(使前面的 -n 选项失效)

-H 跟随源文件中的命令行符号链接

-l, --link 链接文件而不复制

-L, --dereference 总是跟随符号链接

-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)

-P, --no-dereference 不跟随源文件中的符号链接

-p 等于–preserve=模式,所有权,时间戳

–preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果

可能保持附加属性:环境、链接、xattr 等

-c same as --preserve=context

–sno-preserve=属性列表 不保留指定的文件属性

–parents 复制前在目标目录创建来源文件路径中的所有目录

-R, -r, --recursive 递归复制目录及其子目录内的所有内容

–reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。

–remove-destination 尝试打开目标文件前先删除已存在的目的地

文件 (相对于 --force 选项)

–sparse=WHEN 控制创建稀疏文件的方式

–strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠

-s, --symbolic-link 只创建符号链接而不复制文件

-S, --suffix=后缀 自行指定备份文件的后缀

-t, --target-directory=目录 将所有参数指定的源文件/目录

复制至目标目录

-T, --no-target-directory 将目标目录视作普通文件

-u, --update copy only when the SOURCE file is newer

than the destination file or when the

destination file is missing

-v, --verbose explain what is being done

-x, --one-file-system stay on this file system

-Z, --context=CONTEXT set security context of copy to CONTEXT

–help 显示此帮助信息并退出

–version 显示版本信息并退出

默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也

被为稀疏。这是因为默认情况下使用了–sparse=auto 参数。如果明确使用

–sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文

建为稀疏件。

使用–sparse=never 参数禁止创建稀疏文件。

当指定了–reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的

情况下才复制。如果复制失败或者同时指定了–reflink=auto,则返回标准复制模式。

备份文件的后缀为"~",除非以–suffix 选项或是SIMPLE_BACKUP_SUFFIX

环境变量指定。版本控制的方式可通过–backup 选项或VERSION_CONTROL 环境

变量来选择。以下是可用的变量值:

none, off 不进行备份(即使使用了–backup 选项)

numbered, t 备份文件加上数字进行排序

existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份

simple, never 永远使用普通方式备份

有一个特别情况:如果同时指定–force 和–backup 选项,而源文件和目标文件

是同一个已存在的一般文件的话,cp 会将源文件备份。

明显第二种用法和第三种是有重复的,所以在mac的zsh里,干脆去掉了参数t

举例

  • 文件到文件

jisongyang@jisongyangdeMacBook-Air ~ % cp testdir/a/test.txt testdir/b/test1.txt

jisongyang@jisongyangdeMacBook-Air ~ % cd testdir/b

jisongyang@jisongyangdeMacBook-Air b % ls

test1.txt

  • 文件到目录

jisongyang@jisongyangdeMacBook-Air a % cp test.txt …/b/

jisongyang@jisongyangdeMacBook-Air a % cd …/b

jisongyang@jisongyangdeMacBook-Air b % ls

test.txt test1.txt

多个文件也是一样的。

  • 目录到目录(-r)

// 目录不能直接copy

jisongyang@jisongyangdeMacBook-Air testdir % cp a b

cp: a is a directory (not copied).

// 加上 -r 参数

jisongyang@jisongyangdeMacBook-Air testdir % cp -r a b

jisongyang@jisongyangdeMacBook-Air testdir % cd b

jisongyang@jisongyangdeMacBook-Air b % ls

a test.txt test1.txt

  • 创建文件的硬链接

拷贝文件意味着必须使用同一存储空间来储存拷贝的文件。有时候出于某种原因,可能想要创建“快捷方式”或者链接到文件,而不是拷贝。要做到这一点,可以使用 -l 选项。

ls -i test.txt b/

rm


  • 概述

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

注意:**使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。**所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用 -i 选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

  • 格式

rm [options…] file…

-f, --force 强制删除。忽略不存在的文件,不提示确认

-i 在删除前需要确认

-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提

示内容更少,但同样可以阻止大多数错误发生

–interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),

或者always (-i)。如果此参数不加WHEN 则总是提示

–one-file-system 递归删除一个层级时,跳过所有不符合命令行参

数的文件系统上的文件

–no-preserve-roo 不特殊对待"/"

–preserve-root 不允许删除"/"(默认)

-d, --dir 删除空目录

-r, -R, --recursive 递归删除目录及其内容

-v, --verbose 详细显示进行的步骤

–help 显示此帮助信息并退出

–version 显示版本信息并退出

默认时,rm 不会删除目录。使用–recursive(-r 或-R)选项可删除每个给定

的目录,以及其下所有的内容。

要删除第一个字符为"-“的文件 (例如”-foo"),请使用以下方法之一:

rm – -foo

rm ./-foo

请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证

该文件的内容无法还原,请考虑使用shred。

举例

  • 直接删除某个文件

rm test.txt

  • 删除文件夹

rm -r a/

  • 强迫删除

rm -f a/*

  • 交互式删除(删除前依次询问确认是否删除)

rm -i a/*

  • 删除多个文件

rm afile bfile cfile

最后介绍一下一个很恐怖的命令rm -rf /*,就是要强制删除根目录下的所有内容!

stat


命令 stat 用于查看文件的相关信息,包含以下三个时间。

最近访问:表示文件访问时间,当文件被读取时会更新这个时间,但是使用 more、less、tail 和 ls 等命令查看时,访问时间不会变。

最近更改:表示文件的修改时间,这指的是文件内容的修改

最近改动:表示文件属性改变时间,比如通过 chmod 命令更改文件属性时,会更新最近改动时间。

touch


  • 概述

touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。

touch命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在,将会创建新的空文件,除非指定了”-c”或”-h”选项。

  • 格式

touch [options]… file…

长选项必须使用的参数对于短选项时也是必需使用的。

-a 只更改访问时间

-c, --no-create 不创建任何文件

-d, --date=字符串 使用指定字符串表示时间替代当前时间

-f (忽略)

-h, --no-dereference 会影响符号链接本身,替代符号链接所指示的目的地

(当系统支持更改符号链接的所有者时,此选项才有用)

-m 只更改修改时间

-r, --reference=文件 使用指定文件的时间属性替代当前时间

-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间

–time=WORD 使用WORD 指定的时间:access、atime、use 都等于-a

选项的效果,而modify、mtime 等于-m 选项的效果

–help 显示此帮助信息并退出

–version 显示版本信息并退出

请注意,-d 和-t 选项可接受不同的时间/日期格式。

举例

(其实最主要就是创建一个新文件)

touch test.txt

cat/tac


  • 概述

将文件或标准输入组合输出到标准输出。

cat 命令连接文件并打印到标准输出设备上,经常用来显示整个文件的内容。

cat 只能查看文本内容的文件,如查看二进制文件,则屏幕会显示乱码。

另外,cat 还可以用来创建文件、合并文件等。

如果要将文件输出、连接到另一个文件,设计到管道的一些技术,这里就不细讲,简单介绍一点。

  • 格式

cat [选项] [文件]…

-A, --show-all

等价于 -vET 。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值