沟沟壑壑 发表于 2024-4-28 21:57:31

Linux基础之文件管理

目录

[*]文件权限
[*]文件的三个时间戳
[*]创建文件
[*]创建目录
[*]删除文件
[*]文件的移动与复制
[*]文件查看与编辑
[*]重定向
[*]查看文件详细信息
[*]查找文件
[*]文件属性的管理
[*]文件的压缩和解压缩
[*]文件的传输

“Linux下一切皆文件!”
Everything is a file 是一个经典的概念。Linux系统将所有的东西都看作是文件,包括将硬件设备、进程、网络连接等均抽象为文件。
这也就意味着,用户可以使用同样的命令和工具来操作硬件设备和文件。比如使用cat命令可以读取一个普通文件,也可以读取键盘上输入的字符。
文件权限

文件权限是通过一系列权限位来管理的,这些权限位决定了文件对用户、组和其他用户的可读、可写和可执行权限。每个文件都有一个所有者和一个所属组。
文件权限包括读、写和执行权限:

[*]读权限(r):允许用户读取文件的内容或列出目录的内容
[*]写权限(w):允许用户修改文件的内容或在目录中创建、删除和重命名文件
[*]执行权限(x):允许用户执行文件,或允许用户进入目录
文件权限共有九个位,分为三组,每组三个位,分别为:

[*]所有者权限:指定文件所有者的权限
[*]所属组权限:指定文件所属组的权限
[*]其他用户权限:指定除所有者和所属组以外的其他用户的权限
举个例子:
drwxr-xr-x. 2 root root 34 Jul 14 20:59 tmp从左向右依次分析:

[*]d 表示文件类型为一个目录,而不是普通文件
[*]drwxr-xr-x. 文件权限总共10个字符,r可读,w可写,x可执行,-没有对应权限
第一组 rwx 文件拥有者的权限
第二组 r-x 文件所属组的权限
第三组 r-x 以上两者以外的用户或者组的权限
. 文件的扩展权限,可以针对的对某些用户或者用户组设置权限
[*]2 表示此目录下的子项数量(包括 ./ 和 /..)
[*]root 文件的所属用户
[*]root 文件所属的用户组
[*]34:文件大小(以字节为单位)
[*]Jul 14 20:59 文件的最后修改时间
[*]tmp 文件名
文件的三个时间戳

在Linux系统中每个文件都有三个时间戳,用于记录不同的时间:

[*]atime(access time):文件最近一次被访问或读取的时间。当使用cat、less 或 more 来读取文件,访问时间会更新。
[*]mtime(modification time):文件内容最后一次被修改的时间。当编辑文件并保存时,修改时间会更新。
[*]ctime(change time):文件的文件元数据被修改的时间。当文件的所有者、权限或其他元数据发生变化时,文件的更改时间会更新。
stat 命令可以查看文件的详细信息:

创建文件

touch 命令可以用来创建空文件,语法格式为:touch ... FILE...
使用 touch 命令创建空文件:
touch filename.txt如果文件已存在,还可以使用 touch 命令来更新文件的时间戳:
touch -a # 修改文件的访问时间

touch -m # 修改文件的 mtime创建多个普通文件:
touch file1.txt file2.txt file3.txt其他命令包括 echo、cat、vim 等都可以创建新文件。
创建目录

mkdir 命令用来创建目录, 语法格式为:... DIRECTORY...

[*]-p 可快速创建目录的同时创建必要的父目录,对于已存在的目录不会被覆盖
[*]-v 显示创建目录的详细过程
mkdir -v directory

mkdir directory1 directory2 directory3 # 一次创建多个目录

mkdir -p parent/child # 创建多级目录删除文件

rm 命令用来删除文件或目录,语法格式为:... ...
删除文件:
rm filename.txt # 删除单个文件

rm file1.txt file2.txt file3.txt # 删除多个文件删除目录及其内容:
如果要删除一个目录及其所有内容,可以使用 -r 参数来递归删除。
rm -r directoryname-f 表示强制删除,文件处于锁定状态或者你没有足够的权限也会删除。
文件的移动与复制

mv 命令用来移动或重命名文件,语法格式为:mv ... SOURCE... DIRECTORY
移动文件到新位置:
mv sourcefile.txt /path/to/destination/重命名文件:
当要移动的文件移动路径没有发生变化,只有文件名发生了变化,那就相当于修改文件名。
mv oldfilename.txt newfilename.txt当oldfilename.txt和newfilename.txt都是普通文件时,并且newfilename.txt存在,那么文件newfilename.txt将会被oldfilename.txt替代。
当mv后面的参数多于2的时候,表示最后一个文件之前的所有文件都会被移动到最后一个文件中,最后最后一个是文件夹那么命令执行成功,如果最后一个文件是普通文件那么失败。
cp 命令,用来复制文件或者目录,语法格式为:cp ... SOURCE... DIRECTORY
复制文件到目标位置:
cp sourcefile.txt /path/to/destination/在同一目录下复制并重命名文件:
cp oldfile.txt newfile.txt递归复制目录及其内容:
cp -r sourcedirectory/ /path/to/destination/使用 -r 参数来递归复制整个目录 sourcedirectory 及其内容到 /path/to/destination/
文件查看与编辑

查看文件内容:

[*]cat 显示文件的全部内容,适合看相对较短文档 -n 选项可以增添行号
[*]tac 它是 cat 逆向显示
[*]head 查看文件的开头几行,-n 表示显示多少内容 head n-m 表示区间显示 n-m 行的内容
[*]more 以逐页方式查看文件内容,显示读取进度,当文档读取完毕的时候自动退出
[*]less 以交互式方式查看文件内容,如果要退出文档需要使用快捷键q
[*]tail 查看文件的末尾几行,常用于查看更新频繁的日志等,-n 表示读取尾部的行数 -f 表示实时更新
[*]hexdump 对二进制文件或非文本文件以十六进制格式查看,hexdump -C filename
编辑文件:

[*]echo 将文本重定向到文件中:echo "Hello, world!" > filename.txt
[*]printf 也可以将文本重定向到文件中:printf "Hello, world!\n" > filename.txt
[*]vim 一款强大的文本编辑器
VIM
在于 vim 编辑器中设置了三种模式:命令模式、末行模式、编辑模式
命令模式
按键功能↑ ↓ ← →光标按单个字符上下左右移动w光标按照单词向后跳转b光标按照单词向前跳转^光标跳转至行首$光标跳转至行尾gg文档首行第一个字符G文档最后一行第一个字符ngg/nG跳转到指定n行yy复制光标所在行nyy复制从光标处开始的n行p将缓冲区的内容粘贴到光标所在行的下一行P将缓冲区的内容粘贴到光标所在行的上一行dd删除光标所在行ndd删除从光标处开始的n行d^删除光标前至行首字符d$删除光标及之后的所有字符u撤销操作编辑模式
按键功能i在光标前插入I在光标所在行行首第一个非空字符前插入a在光标后插入A在光标所在行末尾插入o在光标所在行下一行插入O在光标所在行上一行插入s删除光标所在字符并进入插入模式S删除当前行并进入插入模式末行模式
按键功能:q退出,未对文件做任何编辑操作才可退出:q!强制退出,不保存文档内容:w保存文件:w /dir/file将文件另存为/dir/file:wq保存文件内容并退出:wq!强制保存并退出:/word从上而下在文件中查找字符串“word”(可按n键定位到下一个匹配的被查找字符串):r /dir/file在当前文件中读入其他文件内容:g/word/d查找含有"word"的行并删除:set nu显示行号:set nonu关闭行号显示:n1,n2 d删除n1-n2行内容:n1,n2 co n复制n1-n2行到第n行后面重定向

数据流

[*]标准输入(standard input 简称stdin):默认情况下,标准输入指从键盘获取的输入,代码为0
[*]标准输出(standard output 简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上,代码为1
[*]标准错误输出(standard error output stderr):默认情况下,命令执行失败后,所回传的错误信息会输出到屏幕上,代码为2
重定向操作符
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。
<ul>使用 > 或者 1> 可以将标准输出的结果以覆盖的方式写入到指定文件中
使用 2> 可以将报错信息输出的结果以覆盖的方式写入到指定文件中
使用 2>/dev/null 表示将错误信息抛弃
使用 &> 可以将stdin、stderr一起输出的结果以覆盖的方式写入到指定文件中
使用 >> 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容

使用
页: [1]
查看完整版本: Linux基础之文件管理