本文是《Linux 入门指南》的第十二篇文章,以 Ubuntu 21.10 为例,介绍了 Linux 文件管理。
ls(列出目录内容)
描述:
"list(列举)" 的缩写,列出目录内容。
用法:
ls [选项] [文件名]/[目录名]
选项:
-a, --all 不隐藏任何以 . 开始的项目
-A, --almost-all 列出除 . 及 .. 以外的任何项目
--author 与 -l 同时使用时,列出每个文件的作者
-b, --escape 以 C 风格的转义序列表示不可打印的字符
--block-size=大小 与 -l 同时使用时,将文件大小以此处给定的大小为单位进行缩放;例如:“--block-size=M”;请参考下文的大小格式说明
-B, --ignore-backups 不列出任何以 ~ 字符结束的项目
-c 与 -lt 共同使用时:根据 ctime 排序并显示 ctime(文件状态最后更改的时间);与 -l 共同使用时:显示 ctime 并按照名称排序;其它情况:按照 ctime 排序,最新的最前
-C 每栏由上至下列出项目
--color[=WHEN] 控制是否使用带颜色的输出;WHEN 可以是“always”(默认缺省值)、“auto”或“never”;更多信息请见下文
-d, --directory 当遇到目录时列出目录本身而非目录内的文件
-D, --dired 产生适合 Emacs 的 dired 模式使用的结果
-f 不进行排序,-aU 选项生效,禁用 -ls --color
-F, --classify 加上文件类型的指示符号(*/=@| 其中一个)
--file-type 类似,但不后缀‘*’字符
--format=关键字 交错 -x,逗号分隔 -m,水平 -x,长 -l,
单栏 -1,详细 -l,垂直 -C
--full-time 类似 -l --time-style=full-iso
-g 类似 -l,但不列出所有者
--group-directories-first 在文件前分组目录;此选项可与--sort 一起使用,但是一旦使用 --sort=none (-U) 将禁用分组
-G, --no-group 以一个长列表的形式,不输出组名
-h, --human-readable 与 -l 和 -s 一起,以易于阅读的格式输出文件大小(例如 1K 234M 2G等)
--si 同上面类似,但是使用 1000 为基底而非 1024
-H, --dereference-command-line 跟随命令行列出的符号链接
--dereference-command-line-symlink-to-dir 跟随命令行列出的指向目录的符号链接
--hide=PATTERN 隐藏符合 shell PATTERN 模式的项目(-a 或 -A 将覆盖此选项)
--hyperlink[=WHEN] 文件名使用超链接;WHEN 可以是“always”(缺省时的默认选项)、“auto”或“never”
--indicator-style=方式 指定在每个项目名称后加上指示符号方式:none(默认)、slash(-p)、 file-type(--file-type)以及 classify(-F)
-i, --inode 显示每个文件的索引编号(inode 号)
-I, --ignore=模式 不显示任何匹配指定 shell <模式>的项目
-k, --kibibytes 默认使用 1024 字节的块显示磁盘使用量; 只用于 -s 和每个目录的总计
-l 使用较长格式列出信息
-L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-n, --numeric-uid-gid 类似 -l,但列出用户和组的 ID 号
-N, --literal 输出未经引号括起的项目名称
-o 类似 -l,但不列出有关组的信息
-p, --indicator-style=slash 对目录附加“/”作为指示符号
-q, --hide-control-chars 以“?”字符代替无法打印的字符
--show-control-chars 原样显示无法打印的字符(这是默认行为,除非被调用本程序的名称是“ls”而且是在终端中进行输出)
-Q, --quote-name 将条目名称括上双引号
--quoting-style=方式 使用指定引用的方式显示条目的名称:literal, locale, shell, shell-always,shell-escape, shell-escape-always, c, escape(该选项优先于 QUOTING_STYLE 环境变量的配置)
-r, --reverse 逆序排列
-R, --recursive 递归显示子目录
-s, --size 以块数形式显示每个文件分配的尺寸
-S 按文件大小排序,最大的在前
--sort=WORD 按 WORD 而不是名称排序: none (-U), size (-S),time (-t), version (-v), extension (-X)
--time=WORD 更改使用修改时间的默认值; access time (-u): atime, access, use;change time (-c): ctime, status;birth time: birth, creation; with -l, WORD determines which time to show; with --sort=time, sort by WORD (newest first)
--time-style=TIME_STYLE 使用 -l 时显示的时间/日期格式;请见下面 TIME_STYLE 的相关内容
-t 按时间排序,最新的最前;参见 --time
-T, --tabsize=COLS 指定制表符(Tab)的宽度,而非默认8字符
-u 同 -lt 一起使用:按照访问时间排序并显示;同 -l 一起使用:显示访问时间并按文件名排序; 其它:按照访问时间排序,最新的最靠前
-U 不进行排序;按照目录顺序列出项目
-v 在文本中进行数字(版本)的自然排序
-w, --width=COLS 设置输出宽度为 COLS 对应的值。0 代表无限制
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名按字母顺序排序
-Z, --context 输出每个文件的所有安全上下文信息
-1 每行只列出一个文件。与 -q 或 -b 共用时避免 '\n'
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
列出目录内容(以列表的形式列出当前目录的内容)
ls -l
列出目录内容(以列表的形式列出当前目录的内容,并显示隐藏的文件/目录)
ls -al
列出目录内容(以列表的形式列出 /tmp
的内容,并显示隐藏的文件/目录)
ls -al /tmp
cd(改变工作目录)
描述:
"change directory(改变目录)" 的缩写,改变工作目录。
用法:
cd [选项] [目录名]
选项:
-L 强制跟随符号链接: 在处理 `..' 之后解析 DIR 中的符号链接。
-P 使用物理目录结构而不跟随符号链接: 在处理 `..' 之前解析 DIR 中的符号链接。
-e 如果使用了 -P 参数,但不能成功确定当前工作目录时,返回非零的返回值。
-@ 在支持拓展属性的系统上,将一个有这些属性的文件当作有文件属性的目录。
实例:
改变工作目录(进入上一级目录)
cd ..
改变工作目录(进入根目录)
cd /
改变工作目录(进入家目录)
cd ~
pwd(显示工作目录)
描述:
" print working directory(打印工作目录)" 的缩写,显示工作目录。
用法:
pwd [选项] [目录名]
选项:
-L 打印 $PWD 变量的值,如果它包含了当前的工作目录
-P 打印当前的物理路径,不带有任何的符号链接
实例:
显示工作目录(显示当前的工作目录的绝对路径)
pwd
mkdir(创建目录)
描述:
" make directory(创建目录)" 的缩写,创建目录。
用法:
mkdir [选项] [目录名]
选项:
-m, --mode=模式 设置权限模式(类似chmod),而不是 a=rwx 减 umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在,也不当作错误处理
-v, --verbose 每次创建新目录都显示信息
-Z 设置每个创建的目录的 SELinux 安全上下文为默认类型
--context[=CTX] 类似 -Z,或如果指定了 CTX,则将 SELinux 或 SMACK 安全 上下文设置为 CTX 对应的值
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
创建目录(创建目录 rat)
mkdir rat
创建目录(递归创建目录 ox/tiger。如果上级目录 ox 不存在,则会自动创建。)
mkdir -p ox/tiger
rmdir(删除空目录)
描述:
" remove directory(移除目录)" 的缩写,删除空目录。
用法:
rmdir [选项] [目录名]
选项:
--ignore-fail-on-non-empty 忽略仅由目录非空产生的所有错误
-p, --parents 删除指定目录及其各个上级文件夹,例如“rmdir -p a/b/c'”,与“rmdir a/b/c a/b a'”类似
-v, --verbose 输出每个被处理目录的详情和诊断信息
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
删除目录(删除目录 rat)
rmdir rat
删除目录(递归删除目录 ox/tiger。如果上级目录 ox 是空目录,则一并删除。)
rmdir -p ox/tiger
cp(复制 文件/目录)
描述:
" copy(复制)" 的缩写,复制 文件/目录。
用法:
cp [选项] [文件名]/[目录名] [文件名]/[目录名]
选项:
-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 等
--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 只在源文件比目标文件新,或目标文件不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z 设置目标文件的 SELinux 安全上下文为默认类型
--context[=上下文] 类似 -Z;如果指定了上下文,则将 SELinux 或 SMACK 安全上下文设置为指定值
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
复制文件(复制文件 rat 到目录 rabbit)
cp rat rabbit
复制目录(递归复制目录 ox 到目录 rabbit)
cp -r ox rabbit
复制文件和目录(递归复制文件 rat 和 目录 ox 到目录 dragon)
cp -r rat ox dragon
mv(移动/重命名 文件/目录)
描述:
" move(移动)" 的缩写,移动/重命名 文件/目录。
用法:
mv [选项] [文件名]/[目录名] [文件名]/[目录名]
选项:
--backup[=CONTROL] 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件。如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
--strip-trailing-slashes 去掉每个源文件参数尾部的斜线
-S, --suffix=SUFFIX 替换常用的备份文件后缀
-t, --target-directory=目录 将所有<源文件>移动至指定的<目录>中
-T, --no-target-directory 将参数中所有<目标文件>部分视为普通文件
-u, --update 仅在<源文件>比目标文件更新,或者目标文件不存在时进行移动操作
-v, --verbose 对正在发生的操作给出解释
-Z, --context 将目标文件的 SELinux 安全上下文设置为默认类型
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
移动文件(移动文件 rat 到目录 snake)
mv rat snake
移动目录(移动目录 ox 到目录 snake)
mv ox/ snake
移动文件和目录(移动文件 snake/rat 和 目录 snake/ox 到目录 horse)
mv snake/rat snake/ox/ horse
重命名目录(重命名目录 horse→sheep)
mv horse sheep
rm(删除 文件/目录)
描述:
" remove(移除)" 的缩写,删除 文件/目录。
用法:
rm [选项] [文件名]/[目录名]
选项:
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 每次删除前提示确认
-I 在删除超过三个文件或者递归删除前提示一次并要求确认;此选项比 -i 提示内容更少,但同样可以阻止大多数错误发生
--interactive[=场景] 根据指定的<场景>进行确认提示:never(从不)、 once(一次,等效于使用 -I)或者 always(总是,等效于使用 -i)。如果使用此参数没有指定<场景>则总是提示
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件
--no-preserve-root 不要对“/”特殊处理
--preserve-root[=all] 不要删除“/”(默认行为);如添加了“all”参数,将拒绝处理与父目录位于不同设备上的命令行参数
-r, -R, --recursive 递归删除目录及其内容
-d, --dir 删除空目录
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实例:
删除文件(删除文件 rabbit/rat)
rm rabbit/rat
删除目录(递归删除目录 rabbit/ox)
rm -r rabbit/ox
删除文件和目录(递归删除文件 sheep/rat 和目录 sheep/ox)
rm -rf sheep/rat sheep/ox