cd [-L|-P] [directory]
-L
逻辑(logically)对待 操作符 ..
符号链接部分将不会再在 操作符 .. 解析之前解析
-P
物理(Physically)对待 操作符 ..
符号链接部分将不会再在 操作符 .. 解析之前解析
pwd [OPTION]
-L, --logical
使用环境变量 PWD,即便它包含了符号链接
-P, --physical
解析任何符号链接
--help
打印该帮助文档
--version
打印版本信息
ls [OPTION] [FILE]
罗列 [FILE] 的信息,默认为当前目录
若不存在参数 -cfruvSUX 或者 --sort 中的任意一个,则按照字母表排序排列
-a, --all
不要忽略以 . 开头的项目
-A, --almost-all
忽略 . 和 ..
--author
与 -l 连用,打印每个文件的作者
-b, --escape
以 C 风格的转义字符显示非图形字符
--block-size=SIZE
与 -l 连用,当打印 size 的时候缩放其为 SIZE 倍;
eg. '--block-size=M';
参见下方 SIZE 格式
-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=WORD
across -x, commas -m, horizontal -x, long -l, single-column, -1, verbose -l, vertical -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=WORD
向条目名称后追加 WORD:
none(默认)
斜线(-p)
文件类型(--file-type)
分类(-F)
-i, --inode
打印每个文件的索引号
-I, --ignore=PATTERN
不要罗列任何与 shell 通配样式 PATTERN 符合的条目
-k, --kibibytes
默认为 1024-byte 块下的磁盘用量;
仅与 -s 连用,以文件夹为计数
-l
使用长列表模式
-L, --dereference
当显示一个符号链接的文件信息时,显示链接所指向的文件,而非链接本身
-m
用逗号分隔的条目列表填充宽度
-n, --numeric-uid-gid
类似 -l,但使用数字表示的用户 ID 和组 ID
-N, --literal
非引用方式显示条目名称
-o
与 -l 类似,但不显示组信息
-p, --indicator-style=slash
向文件夹后追加 / 提示符
-q, --hide-control-chars
以 ? 显示非图形字符
--show-control-chars
以原始样式显示非图形字符(默认,除非程序时 ls,同时输出端口是终端)
-Q, --quote-name
用双引号引起一个名称
--quoting-style=WORD
指定引起条目名称的引号风格:
literal, locale, shell, shell-always, shell-escape, shell-escape-always, c, escape
(覆盖 QUOTING_STYLE 环境变量)
-r, --reverse
排序时反向
-R, --recursive
递归罗列次级文件夹
-s, --size
以块为单位打印每个文件占用的大小
-S
以文件大小排序,大者优先
--sort=WORD
以 WORD 而非名字排序:
无(-U)
大小(-S)
时间(-t)
版本(-v)
后缀名(-X)
--time=WORD
与 -l 连用,显示时间 WORD 而非默认的修改时间:
atime / access / use (-u);
ctime / status (-c);
若同时指定了 --sort=time 则该项也同时指定排序方法(新者优先)
--time-style=TIME_SYTLE
与 -l 连用时, 时间/日期的格式;
参见下方 TIME_STYLE
-t
按修改日期排序,新者优先
-T, --tabsize=COLS
将制表符定义为 COLS 列 而非默认的 8 列
-u
与 -lt 连用:以读取时间排序,并显示;
与 -l 连用:显示读取时间但以名称排序;
其他情况:以读取时间排序,新者优先
-U
不要排序;
以目录原始的顺序打印
-v
以(版本)号码的文本自然形式排序
-w, --width=COLS
将输出宽度设置为 COLS 列,
0 表示无限制
-x
以行而非列罗列条目
-X
以项目的扩展名的字母序排序
-Z, --context
打印每个文件的安全上下文
-1
每行答应一个文件。
与 -q 或 -b 连用防止 '\n'
--help
打印该帮助并推出
--version
打印版本号并退出
SIZE 参数是一个具有可选单位的整数值(举例:10K 为 10*1024)。
单位可以是 K, M, G, T, P, E, Z, Y(1024 为底)
或者 KB, MB (1000 为底)
TIME_STYLE 参数可以是 full-iso, long-iso, iso, locale, 或者 +FORMAT
FORMAT 与 date(1) 中所解释的类似。
若 FORMAT 的格式为 FORMAT1<newline>FORMAT2,则
FORMAT1 作用于非最近的文件
FORMAT2 作用于最近的文件
TIME_STYLE 中具有 'posix-' 前缀的,仅在 POSIX locale 之外的部分起效
同时 TIME_STYLE 环境变量设置了默认使用的样式
用颜色来区分文件类型默认是关闭的,也可以通过 --color=never 来强制关闭。
使用 --color=auto,可以让 ls 仅针对标准输出连接至终端时才使用着色代码。
LS_COLORS 环境变量可以修改设置。
使用 dircolors 命令来设置它。
mkdir [OPTION] DIRECTORY
-m, --mode=MODE
设置文件权限
-p, --parents
按需创建父级文件夹
-v, --verbose
打印创建的文件夹的信息
-Z
为每个创建的文件夹设置默认的 SELinux 安全上下文
--context[=CTX]
若附带了 [=CTX],则按照附带的内容设置文件夹的 SELinux 或者 SMACK 安全上下文属性
否则行为同 -Z
--help
显示该帮助并退出
--version
显示版本并推出
$PATH
指定了系统本身查找命令的默认目录路径
比如 ls
这个命令,即使不输入全路径 /bin/ls
也可以在任何地方直接执行,就是依靠 $PATH
中写入了 /usr/bin
这个目录
$PATH
可以通过
echo $PATH
来查看,
在 Linux 中, PATH 使用 冒号 :
来做为不同路径之间的分隔符
一般来说,不同用户的 $PATH
的内容是不完全一样的
可以通过以下代码来修改 PATH
PATH="[otherPath]:${PATH}"
大括号 {}
用来明确定义变量的名称
cp [选项]... [-T] SOURCE DEST
cp [选项]... SOURCE... DIRECTORY
cp [选项]... -t DIRECTORY SOURCE...
-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
追寻在命令行中的 SOURCE 中的符号链接
-l, --link
硬链接而非拷贝文件
-L, --dereference
永远追寻在命令行中的 SOURCE 中的符号链接
-n, --no-clobber
不要覆盖已经存在的文件(覆盖前一个 -i 选项)
-P, --no-dereference
从不追寻 SOURCE 中的符号链接
-p
等同于 --perserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]
保留指定的属性(默认为:mode,ownership,timestamps),可以附加的属性:context,links,xattr,all
--no-preserve=ATTR_LIST
不要保留指定的属性
--parents
在 DERECTORY 使用全源文件名
-R, -r, --recursive
递归拷贝目录
--reflink[=WHEN]
控制 clone/CoW 拷贝。见下
--remove-destination
在尝试打开每个已经存在的目标文件之前移除他们(与 --force 不同)
--sparse=WHEN
控制 sparse 文件的创建。见下
--strip-trailing-slashes
从每个 SOURCE 选项中移除任何末尾的斜线
-s, --symbolic-link
创建符号链接,而非拷贝
-S, --suffic=SUFFIX
覆盖常见的备份后缀
-t, --target-directory=DIRECTORY
拷贝所有 SOURCE 参数至 DIRECTORY 中
-T, --no-target-directory
将 DEST 作为普通文件对待
-u, --update
仅在 SOURCE 文件比目标文件新,或者目标文件丢失时才拷贝
-v, --verbose
解释发生了什么
-x, --one-file-system
保持在该文件系统中
-Z
将目标文件的 SELinux 安全上下文设置为默认
--context[=CTX]
与 -Z 相似,或指定了 CTX,则将 SELinux 或 SMACK 安全上下文设置为 CTX
--help
显示该帮助并退出
--version
输出版本信息并退出
默认情况下,松散(sparse)SOURCE 文件被 crude heuristic 发现,并且对应的 DEST 文件也会为松散状态。此也为 --sparse=auto 的状态
。
指定 --sparse=always
,则无论 SOURCE 文件是否松散,都创建松散 DEST 文件。
指定 --sparse=never
,则禁止创建松散文件。
当指定了 --reflink[=always]
,则执行轻量化拷贝,此时仅有修改过的数据块会被拷贝。若不可能则拷贝失败。
若指定了 --reflink=auto
,当无法轻量化拷贝时,返回标准拷贝。
使用 --reflink=never
来保证使用标准拷贝。
备份文件的后缀名为 ~
,除非用 --suffix
或者 SIMPLE_BACKUP_SUFFIX
指定。
可通过 --backup
或环境变量 VERSION_CONTROL
来选择版本控制的方式。下满为可选值:
none
, off
永远不创建备份(即便使用了 --backup
)
numbered
, t
使用数字编号备份
existing
, nil
若存在数字编号备份则使用数字编号备份,否则使用简单备份
simple
, never
永远创建简单备份
rm [选项]... [文件]...
移除(unlink)文件。
-f,--force
忽略不存在的文件和选项,永不提示
-i
每次删除前均提示
-I
当一次性移除超过三个文件,或者递归移除前发出提示;比 -i 更安静,同时对大多数错误给出一定的保障机制。
--interactive[=WHEN]
基于 WHEN 来提示:never,once(-I)或者 always(-i);
若不指定 WHEN,使用 always
--one-file-system
当递归移除一个目录时,跳过任何与对应命令行参数不同的文件系统中的文件。
--no-preserve-root
不要特殊对待 根目录 /
--preserve-root[=all]
不要移除 根目录 /(默认值);与 all 连用时,拒绝任何命令行参数中与其父级不同的设备
-r, -R, --recursive
递归移除目录和它的内容
-d, --dir
移除空的文件夹
-v, --verbose
解释正在做的事情
--heko
显示这个帮助,并退出
--version
输出版本信息并退出
若要移除一个以 连字符 -
开头的文件,比如 -foo
,可以使用以下命令
rm -- -foo
rm ./-foo
rm 并不保证文件的数据确实地从存储设备抹除了,要保证数据被安全地抹除,并无法被恢复,请使用 shred
命令
mv [OPTION]... [-T] 源 目标
mv [OPTION]... 源... 目录
mv [OPTION]... -t 文件夹 源地址...
重命名 源 至 目标,或将 源 移动至 文件夹。
--backup[=CONTROL]
备份每个已经存在地目标文件
-b
同 --backup,但不接受参数
-f, --force
覆盖前不提示
-i, --interactive
覆盖前提示
-n, --no-clobber
不要覆盖一个已存在地文件
如果同时指定了 -i, -f, -n,仅最后一个参数起效
--strip-trailing-slashes
从每个源参数中移除任何尾随地斜线
-S, --suffix=SUFFIX
覆盖常用地备份后缀
-t, --target-directory=DIRECTORY
将所有 源 参数移动至 目录
-T, --no-target-directory
将 目标 当作普通文件
-u, --update
仅当 源 文件比 目标 文件新,或者目标文件不存在时才移动
-v, --verbose
解释发生了什么
-Z, --context
将目标文件地 SELinux 安全上下文内容设置为默认类型
--help
显示该帮助并退出
--version
输出版本信息并退出
备份后缀名为 波浪号 ~
,除非使用 --suffix
或者 SIMPLE_BACKUP_SUFFIX
设置。
版本控制模式可以通过 --backup
选项或通过 VERSION_CONTROL
环境变量设置。
下面为可用地值:
none
, off
从不备份(即便指定了 --backup)
numbered
, t
使用编号备份
existing
, nil
若存在编号备份则使用编号备份,否则使用简单备份
simple
, never
永远使用简单备份
basename 名称 [后缀]
basename 选项... 名称...
打印出剥离了任何前序目录元素的 名称。若指定了 后缀,也一同移除后缀。
-a, --multipile
支持多参数,并将每个参数作为 名称
-s, --suufix=SUFFIX
移除了一个后缀 SUFFIX;隐含了 -a
-z, --zero
以 NUL,而非新行作为每行输出的结尾
--help
显示该帮助并退出
--version
输出版本信息并退出
dirname [选项] 名称...
输出每个移除了最后一个非斜线元素以及尾部斜线的 名称;若 名称 不包含 斜线 /,则输出 点号 .(意味着当前目录)
-z, --zero
以 NUL 而非 新行 作为每行输出的结尾
--help
显示该帮助,并退出
--version
输出版本信息,并退出
查看文件内容 cat/tac/nl/more/less/head/tail/od
cat [-AbEnTv] 输出文件内容 (Concatenate) -A,--show-all 输出文件的全部内容,包括特殊的字符 -b,--number-noblank 对非空行输出行号 -E,--show-ends 用 $ 标示行尾 -n,--number 输出所有行的行号 -T,--show-tabs 将所有的制表符显示为 ^I -v,--show-nonprinting 显示部分特殊符号
tac 从后像前打印
nl [-bnw] 输出文件并打印行号
-b 输出行号的方式 -b a 输出所有行号,即便是空行 -b t 输出非空行的行号(预设)
-n 输出行号的方式和位置 -n ln 行号左对齐,且不补0 -n rn 行号右对齐,且不补0 -n rz 行号右对齐,且补0
-w 补0的位数,默认为6
more 分页输出文件
空格键 向下翻一页 回车键 向下翻一行 :f 显示文件名和行数 b 向上翻一页
less 分页输出文件
注意: Linux 的 man 就是使用 less 进行分页浏览的,所以 less 的浏览按键就是 man 的浏览按键
空格键 向下翻一页 PageDown 向下翻一页 PageUp 向上翻一页 /<文字> 向下匹配文字 ?<文字> 向上匹配文字 n 沿着原来的匹配方向继续匹配文字 N 逆着原来的匹配方向继续匹配文字 g 前往文件的第一行 G 前往文件的最后一行 q 退出浏览
head/tail 输出文件的前几行/后几行
head [-n <行数>]
当行数 无符号 时,输出前N行的数据 当行数 带负号 时,输出除了后N的数据
tail [-f] [-n <行数>]
当行数 无符号 时,输出后N行的数据
当行数 带正号 时,输出除了前N行的数据
-f 指随时获取某个文件的更新数据,可用来追踪文件数据的变化
od 以二进制或八进制的方式输出文件
od [-t ] -t 指定将二进制文件以何种编码格式输出 -t a 使用预设字符输出 -t c 使用ACSII字符输出 -t d/f/o/x[size] 使用 十进制/浮点数/八进制/十六进制 来输出,每个 十进制/浮点数/八进制/十六进制 使用 n 个 byte 来计算
touch 修改文件时间 或者 建立新的文件
Linux 与文件相关的三个时间 (1) modification time (mtime) 文件 内容 被修改的时间 (2) status time (ctime) 文件 权限/属性 被修改的时间 (3) access time (atime) 文件 最后 被调用 的时间
touch [-acdmt]
-a 只修改 调用时间 -c, --no-create 不创建新文件 -d, --date= 使用指定的时间修改 -m 只修改 修改时间 -t 使用 [[CC]YY]MMDDhhmm[.ss] 的格式设置时间
umask 查看/设置 创建 新文件/新目录 时的默认权限(user mask)
umask [-S]
-S 用字符串显示用户的权限(非补码)
注意: umask 设置出来的码为权限的补码
第一位为 SUID/SGID/SBIT 权限
umask完整的 文件权限 为 666 ,也即 rw-rw-rw- umask完整的 目录权限 为 777 ,也即 rwxrwxrwx
注意!不可以使用 666 减去 umask 计算 文件 的权限,因为这会让文件看起来具有 可执行 的属性
eg. [eP@eptc ~]$ unmask #返回 0002 [eP@eptc ~]$ unmask -S #返回 u=rwx,g=rwx,o=rx
文件的隐藏属性(xfs文件系统下的)
设置隐藏属性
chattr [+-=][AadiS]
A 若有存取文件/目录,则该文件/目录的 atime 不变
a 文件内容只可以被追加,不可以被修改或删除
d 当 dump 程序运行时, dump 不对该文件备份
i 文件不可以被删除、重命名、建立链接、写入数据、修改数据
S 对文件的修改会实时写入硬盘中
显示文件隐藏属性
lsattr [-adR] -a 显示隐藏文件的属性 -d 只显示目录本身而非目录内容 -R 遍历目录下所有的文件
文件的特殊权限 SUID SGID SBIT
Set UID
某文件的 拥有者权限 的 可执行权限为 s ,则称这个文件具有 Set UID 权限
使用条件 1、SUID 仅对 二进制文件 有效 2、调用这个 二进制文件 的用户必须具有这个文件的 可执行权限
执行效果 1、调用文件的用户将在 该 二进制文件 执行过程中,临时获得该二进制文件 所有者 的身份
Set GID
某文件/某目录的 群组权限 的 可执行权限为 s ,则称这个文件具有 Set GID 权限
二进制文件的使用条件 1、调用这个 二进制文件 的用户必须具有这个文件的 可执行权限
二进制文件的执行效果 1、调用文件的用户将在 该 二进制文件 执行过程中,临时加入该二进制文件的 群组
目录的使用条件 1、当前用户对目录具有 rx 权限,可进入目录
目录的执行效果 1、当前用户在 当前目录 下的 有效群组 将变为 当前目录的 所属群组 2、当前用户若能在 当前目录 下创建新文件/新目录,则目录和文件的群组与 当前目录 的 所属群组 相同
Sticky Bit
某目录 的其他人权限 的 可执行权限为 t ,则称这个目录具有 Sticky Bit
目录的使用条件 1、当前用户对该目录具有 wx 权限,可写入目录
目录的执行效果 1、仅有 当前用户 和 root 才能 修改/删除 当前用户 创建的文件
SUID SGID SBIT 三者的数字依次为 4 2 1
file 检查文件类型
which 搜索 $PATH 下的可执行程序的绝对路径
whereis 在特定的路径下搜索文件 -l 罗列 whereis 会搜索的文件夹的路径 -b 只搜索二进制文件 -m 只搜索 man 文件 -s 只搜索 源码文件 -u 只搜索除上述三种文件之外的文件
locate 通过部分文件名搜索文件所在路径 -i 忽略大小写 -c 仅输出找到的文件数量 -l 仅输出n行 -S 输出 locate 自身数据库的信息 -r 用正则表达式定义输出的样式
注意, locate 只搜寻 /var/lib/mlocate/mlocate.db 文件中的记录数据,所以搜寻速度非常快 /etc/updatedb.conf 定义 mlocate.db 数据的获取的范围 而获取数据的动作由 updatedb 这个命令来执行, CentOS7 默认一天执行一次
所以可以手动执行 updatedb 来强制刷新 locate 数据库
find 搜索文件 find [path] [option] [action]
(0) 排除匹配上某个参数的文件 在参数之前加 感叹号 !
EG. find . ! -name "*.c" # 查找不以 .c 作为结尾的文件
(1) 与时间相关的参数 -[ctime|atime|mtime] [无/+/-] [天数] -newer file
针对文件的 ctime/atime/mtime 搜寻 <1>【不加符号】第n天前的那一天变动过的文件 <2>【+号】第 n 天之前(不含 n 天)变动过的文件 <3>【-号】第 n 天之内(含 n 天)变动过的文件 <4>【 newer 】比指定文件要新的文件
(2) 与用户或群组相关的参数 -uid n 寻找用户编号(GID)为 n 的文件 -gid n 寻找群组编号(GID)为 n 的文件 -user name 寻找用户名为 name 的文件 -group name 寻找群组名为 name 的文件 -nouser 寻找不被记录在 /etc/passwd 中用户的文件 -nogroup 寻找不被记录在 /etc/group 中用户的文件
(3) 与文件名称以及权限相关的参数 -name filename 搜索文件名为 filename 的文件 -size [+-]Size 搜索比 Size 要大(+)或小(-)的文件,大小后缀 c 表示 byte,大小后缀 k 表示 kbyte -type Type 搜索文件类型为 正常文件(f),设备文件(b,c),目录(d),链接(l),套字节(s),FIFO(p) -perm mode 搜索权限恰好为 mode 的文件 -perm -mode 搜索权限包含 mode 的文件 -perm /mode 搜索权限部分具有 mode 的文件
eg.
find -perm 0744 #只搜索权限为 0744 的文件 find -perm -0744 #搜索权限包含 0744 的文件,比如 4744、0755、4755 等的文件 find -perm /0744 #搜索权限部分具有 0744 的文件,比如 0200、0203 等的文件
(4) 额外的参数 -exec [command] {} ; 其中 [command] 为需要执行的命令 {} 代表搜寻到的文件序列 ; 输入一个分行符,结束这个命令
eg.
从 exfat 文件系统上拷贝文件至本地,会默认开启可执行权限,快速修改方法
find . -perm -0777 -exec chmod 0644 {} ;
eg2.
仅查找当前目录下的普通文件,并移动至子目录下
find . -maxdepth 1 -type f -exec mv {} subdir ;