文件目录管理
目录
输出当前目录
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
使用输出重定向
命令 > 文件
将命名输出的内容保存到指定文件中,文件不存在则创建,文件存在则覆盖。 命令 >> 文件
将命名输出的内容保存到指定文件中,文件不存在则创建,文件存在则将输出添加到文件末尾。
删除
使用 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
表示111111111
即rwxrwxrwx
755
表示111110110
即rwxr-xr-x
744
表示111100100
即rwxr--r--
chown
修改文件的所有者和所有组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
OWNER: 要将文件 FILE 的所有者修改为谁 GROUP: 要将文件 FILE 的所有组修改为什么
常用选项:
-R
: 递归处理文件夹内文件和子目录
chown 还支持通过另一个文件来修改另一个文件的所有信息
将 target.txt 的所有者和组设置为与 source.txt 相同:
sudo chown --reference=source.txt target.txt