Skip to content

文件目录管理

目录

输出当前目录

pwd [-L|-P]

-L 输出当前目录的逻辑路径(默认),-P 输出当前路径的物理路径。

也就是如果使用 -P 在一个连接了其他目录的快捷方式,输出的是被链接地址。

输出目录下的内容

ls [选项]... [目录或者文件]...

列出有关文件的信息(默认为当前目录),如果没有 -cftuvSUX 和 --sort,则按字母顺序对条目进行排序。

常用选项:

  • -l:使用列表输出详细信息
  • -a:输出全部文件包括隐藏文件(.开头的文件)

详细信息说明

示例:

dr-xr-x---. 2 root root 4096 Jul 22 00:35 root

可拆分为:

  • 文件类型:
    • - 为普通文件
    • d 为目录
    • p 为管理文件
    • l 为链接文件
    • b 为块设备文件
    • c 为字符设备文件
    • s 为套接字文件。
  • 文件权限: 三组分别表示用户,用户组,其他用户的权限,第一个字符为读选项,第二个为写,第三个为可执行。
  • SELinux安全标签
  • 文件链接数 or 目录的子目录数:对于目录 ... 目录也会记入,也就是说至少会有 2。
  • 所属用户名
  • 所属用户组
  • 文件大小(默认单位为字节): 可使用 -h 参数显示单位。
  • 最后修改时间
  • 文件或者目录名

切换目录

cd [dir]

其中 dir 支持使用 - 切换到上一次切换的目录。

创建目录

mkdir [OPTION]... DIRECTORY...

常用选项:

-p:递归创建文件夹(默认不支持递归创建,创建多层级文件夹时,如果父文件夹不存在则报错)

TIP

支持使用 Barce Expansion(花括号表达) 创建多个目录。

mkdir -p parent{1..2}/sub{1..2}

文件

读取内容

按原文件输出

cat [OPTION]... [FILE]...

按原文件从后往前输出

tac [OPTION]... [FILE]...

使用正常模式查看

vi

分页查看

more

使用空格像后翻页,使用 b 向前翻页。

分行查看

less

使用空格像后翻页,使用 b 向前翻页,使用上下键移动行。

查看前 n 行

head -n 默认 n 为 10。

查看后 n 行

tail -n 默认 n 为 10,支持使用 -f 参数等待文件输出。

创建文件

标准创建(touch)

touch [OPTION]... FILE...

touch 还支持修改文件的时间相关信息。

使用 VI/VIM

VIM

使用输出重定向

命令 > 文件 将命名输出的内容保存到指定文件中,文件不存在则创建,文件存在则覆盖。 命令 >> 文件 将命名输出的内容保存到指定文件中,文件不存在则创建,文件存在则将输出添加到文件末尾。

删除

使用 rm 命令删除文件和目录,默认情况下只能删除文件,且需要输入 y 表示确认。

使用 -r 选项表示递归删除,允许删除文件夹。 使用 -f 选项表示不需要提示确认。

查看文件或者目录大小

du [File] [-sh]

支持使用通配符。使用 -s 选项能抑制递归,默认会递归输出。

监听修改

出来上面提到的 tail,还可以使用 watch 实现。

监听文件修改:watch cat File

复制 & 移动

复制

cp [-rf] 原路径 目标路径

  • 如果原路径是目录,则需要使用 -r 参数
  • 如果目标路径存在且是目录,则移动到目标路径内
  • 如果目标路径存在且是文件,原路径也是文件则提示复制,原路径是文件则提示覆盖(可使用 -f 强制覆盖)
  • 如果目标路径不存在则表示复制到目标目录,并重命名
  • 如果需要复制指定文件夹的内容,而不是复制文件夹,则使用 原文件夹/*

移动

mv [-f] 原路径 目标路径

  • 如果需要复制指定文件夹的内容,而不是移动文件夹,则使用 原文件夹/*
  • 如果目标路径不存在则移动到目标路径并重命名
  • 如果目标路径存在且是目录,则移动到目标路径内
  • 如果目标路径存在且是文件,原路径也是文件则提示复制,原路径是文件则提示覆盖(可使用 -f 强制覆盖)

查找

find

根据文件名、文件类型、大小、权限、修改时间等多种条件进行搜索

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

常用选项

  • -name PATTERN: 通过文件名进行匹配搜索支持通配符 *
  • -type type: f 表示文件,d 表示目录
  • -uesr uesrname: 通过文件所有则进行查找
  • -size [+|-]size: + 表示大于,- 表示小于,支持的单位有 k 字节,M MB,G GB
  • -delete: 删除搜索到的文件

which

查找命令的位置

whereis

查找命令的所有位置,包括帮助文档和源文件

文件权限

chmod

修改的文件的访问权限

  • r:表示可读
  • w:表示可写
  • x:可执行(对于文件夹表示可以进入文件内)

通过权限 +- 修改

chmod [-R] ([ugo][+-][rwx])... file

-R 表示递归修改,修改文件夹内的所有子文件的权限

[ugo]: u 表示用户,g 表示用户组,o 表示其他用户

[+-]: 添加或者移除权限

eg: 添加 chmod u+x test.txt 表示为文件添加用户可执行权限

eg: 添加 chmod u+x,g+w test.txt 表示为文件添加用户可执行权限,对用户组添加可写

使用 8 进制修改

chmod [-R] [number] file

number 为三位 8 进制数,每一位分别表示用户、用户组和其他用户。 每一位又是二进制表示的三位分别表示可读、可写和可执行。

-R 表示递归修改,修改文件夹内的所有子文件的权限

  • 777 表示 111111111rwxrwxrwx
  • 755 表示 111110110rwxr-xr-x
  • 744 表示 111100100rwxr--r--

chown

修改文件的所有者和所有组

chown [OPTION]... [OWNER][:[GROUP]] FILE...

OWNER: 要将文件 FILE 的所有者修改为谁 GROUP: 要将文件 FILE 的所有组修改为什么

常用选项:

  • -R: 递归处理文件夹内文件和子目录

chown 还支持通过另一个文件来修改另一个文件的所有信息

将 target.txt 的所有者和组设置为与 source.txt 相同:

shell
sudo chown --reference=source.txt target.txt