linux和文件

201 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

小巧的文件下载工具:wget

它的使用非常简单,只需要在后面跟上文件完整的路径即可 wegt+下载路径 wget 也有一些常用的参数,如下:

  • -O 保存为指定的文件名(大写的字母 o)
  • -c 启用断点续传,在下载大文件的时候建议使用

全能打包解包工具:tar

tar 命令的格式大致如下:

tar [OPTION...] [FILE]

tar 有几个常用的参数,如下:

  • -c 建立新的打包文件
  • -f 指定包文件
  • -v 显示打包/释放的过程
  • -z 支持 gzip 处理文件
  • -j 支持 bzip2 处理文件
  • -t 显示打包的文件的内容
  • -r 添加文件到已经打包的文件
  • -x 从打包的文件中释放文件
  • -C 释放到指定目录

例如将 /usr/local/bin 目录打包为 bin.tar 文件:

tar -cf bin.tar /usr/local/bin

注意这个 -f 参数后必须跟着文件名,即 tar -fc bin.tar 是错误的命令。 如果要解压包,只需要把对应命令中的 -c 参数改为 -x 即可:

tar -xf bin.tar

多平台压缩工具:zip 和 unzip

zip

zip 有几个常用参数,如下:

  • -o 输出的文件名称,需在其后紧跟需要打包输出的文件名

  • -q 安静模式,不显示指令执行过程

  • -r 递归处理,将指定目录下的所有文件和子目录一起打包

  • -l 压缩文件时,把 LF 字符替换为 LF+CR 字符

  • -e 创建加密的压缩包

  • 使用 zip 打包文件夹,注意输入完整的参数和路径:

zip -r -q -o test.zip /home/test/Desktop
  • 设置压缩级别为 9 和 1(9 最大,1 最小),重新打包:
zip -r -9 -q -o test_9.zip /home/test/Desktop
zip -r -1 -q -o test_1.zip /home/test/Desktop

这里添加了一个参数用于设置压缩级别 [1-9],1 表示最快压缩但体积大,9 表示体积最小但耗时最久。

unzip

unzip 也有几个常用的参数,如下:

  • -q 安静模式,执行时不显示任何信息
  • -d [dir] 指定文件解压缩后存放的目录,如果不存在将自动创建
  • -l 显示压缩文件内所包含的文件
  • -O 指定压缩包编码类型

将 abcd.zip 解压到当前目录:

unzip abcd.zip

使用安静模式,将文件解压到指定目录:

unzip -q abcd.zip -d ziptest

上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:

unzip -l abcd.zip

在解压时指定编码类型。

unzip -O GBK xxx.zip

解压其他格式的压缩文件

解压 7z 文件

解压 7z 文件需要用到 p7zip 工具,这个工具系统里没有自带,所以需要手动安装。

sudo apt update
sudo apt install p7zip-full -y

安装完成后,直接执行 7z x [filename].7z 即可解压 7z 文件。

解压 rar 文件

在 Windows 平台上,大家可能直到一个 WinRAR 软件可以用于解压 .rar 的压缩包,但是很不幸这个软件需要付费,即使在 Linux 平台上也是如此,因此我们可以使用免费软件 unrar-free 来解压。

p7zip 也提供了一个支持 rar 的插件,可以安装 p7zip-rar 获取。

sudo apt install unrar-free -y

解压只需要一个命令即可:

unrar -x [filename].rar

Linux 文件类型和权限

用命令 ls -alh ~ 来查看一下文件的详细信息。 从屏幕打印出来的信息,以空格为分组标志,从左到右依次表示:

文件类型和权限、硬链接数、所有者、所属组、文件大小、最后修改时间、文件名

还有一个比较重要的概念就是 Linux 里面一切皆文件, 文件类型主要分为以下 7 种,一般只需要了解前三种即可:

  • 普通文件 -:文本文件、数据文件、可执行程序等等都可作为普通文件存储。
  • 目录 d:目录中按照名字来对其它文件进行引用。
  • 符号链接 l:也叫做软链接,通过名字指向文件。
  • 字符设备文件 c:字符设备文件让相关的驱动程序作为输入输出的缓冲。
  • 块设备文件 b:块设备文件由处理块数据的 I/O 驱动程序使用,同时让内核提供缓冲。
  • 本地域套接口 s:实现进程间通信的连接,本地域套接口由系统调用 socket 创建,用 rm 或 unlink 删除。
  • 有名管道(FIFO)p:让运行在同一主机上的两个进程相互通信,和 socket 相似,用 mknod 创建,用 rm 来删除。

文件权限

除去文件类型外,后面的字符,以三个为一组,且均为 rwx 的三个参数组合,代表了 Linux 的 读、写、执行 三种权限控制。r 代表可读(read)、w 代表可写(write)、x 代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 -。 其中三位一组分别是 所有者的权限(U,即 user)、所属组的权限(G,即 group)、其他用户的权限(O,即 other)  。

权限编码

数字字符文件/目录
4r查看文件内容/查看目录下的文件或目录名称
2w修改文件内容/在目录下增删改
1x执行一些程序或脚本/可以用命令切换目录
八进制二进制权限
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx

chmod:改变文件或目录权限

语法:

chmod [选项][权限][文件或目录]
  • 使用字符形式修改权限

在 chmod 命令参数中,u 代表所有者,g 代表所属组,o 代表其他用户,a 代表所有人。 修改 install.log 文件的权限设置成全部为可读、可写、可执行。

chmod u=rwx,g=rwx,o=rwx install.log
  • 使用操作符形式修改权限

操作符形式是在字符形式的基础上对文件或目录使用 +/- 操作符来设置权限。

通过 + 符号增加相应的权限,- 符号减去相应的权限。

chmod u+x,g+x,o-rw install.log
  • 使用数字形式修改权限
# 修改文件权限为 `rwxrwxrwx`
chmod 777 install.log
# 修改文件权限为 `rwx------`
chmod 700 install.log
# 修改文件权限为 `rwxr-xr-x`
chmod 755 install.log

另外还有可能遇到一种情况,就是文件没有执行权限,此时只需要执行一下 chmod +x [filename] 即可快速赋予执行权限。

chown:改变归属关系

chown 命令是 change owner(改变所有人) 的缩写,主要用于改变文件或者目录的所有权,语法和 chmod 类似。chown 需要超级用户 root 的权限才能执行此命令。

mkdir chowntest
ls -lh
sudo chown root chowntest   # 修改文件的所属者为 `root`,因为是 root 用户所以需要用到 `sudo`。
ls -lh

如果需要同时改变所属组,也可以直接执行:

sudo chown root:root chowntest

find 命令

find 命令主要用于查找指定的文件,目录。它的功能非常强大,除了能够根据名称查找外,还能根据文件类型,文件权限,文件大小甚至是文件时间戳等信息进行查找。 find 命令的基本格式如下:

find [指定目录] [参数]

针对不同的功能,find 也提供了非常多的参数,下面只列出几个使用较多的参数。

首先是基本参数:

  • -name:指定需要搜索的文件/目录名

  • -iname:指定名称忽略大小写

  • -type:指定需要搜索的文件类型 根据时间来搜索主要有以下几个参数:

  • -mtime:文件的内容上次修改时间,以天为单位

  • -atime:文件最后被读取或访问的时间,以天为单位

  • -ctime:文件的状态变化时间,以天为单位

  • -amin:文件最后读取或访问的分钟

  • -cmin:文件最后状态变化的分钟

  • -mmin:文件最后内容修改的分钟 这些时间选项都需要指定一个值 n 一起使用,这里的 [a/c/m]time 实际时间是 n*24 小时也就是以天为单位,与 [a/c/m]min 一起使用则是以分钟为单位。

  • -n:指定的时间小于 n

  • +n:指定的时间大于 n

  • n:指定的时间正好与 n 相等