这篇记录第7章 Linux文件与目录管理。
1.目录与路径
1.1切换目录:cd [绝对路径或相对路径]
1.2特殊目录:
- [.]代表此层目录
- [..]代表上层目录
- [-]代表前一个工作目录
- [~]代表“目前用户身份”所在的主文件夹
- [~用户名]代表该用户的主文件夹
1.3显示当前目录:pwd [-P]
参数:-P :显示出实际的工作目录,而非连接文件本身的目录名,即显示完整路径
1.4新建新目录:mkdir [-mp] 目录名称
参数:
- -m:配置文件的权限,直接设置,不需要看默认权限,比如
mkdir -m 711 test
- -p:帮助你直接将所欲要的目录(包含上层目录)递归创建起来,比如
mkdir -p test1/test2/test3
1.5删除空的目录:rmdir [-p] 目录名称
参数:-p :连同上层的空目录一起删除
注:只能删除空目录,或是使用-p参数删除多层的空目录,若是要删除某文件夹下所有东西,要用 rm -r
命令。
2.环境变量PATH
2.1作用:当我们使用命令时,系统会先根据环境变量的设置到指定文件夹中找同名命令,找到后再执行,若有多个同名命令,则执行最先找到的那个。
2.2通过 命令名 $PATH
,查询命令所在路径。结果返回多个路径,由冒号隔开。
2.3通过 PATH="$PATH":路径
来将某路径加入到环境变量中
2.4理论上可以讲 . 加入到环境变量中,就可以方便使用到当前目录的命令,但为了安全起见不建议这么做
3.文件与目录管理
3.1查看文件与目录:ls
语法:
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
参数(加粗为常用):
- -a:全部的文件,以及隐藏文件都列出来
- -A:全部的文件,以及隐藏文件,但不包括.和..这两个目录
- -d:仅列出目录本身,而不是列出目录内的文件数据
- -f:直接列出结果,不排序(默认按文件名排序)
- -F根据文件、目录等信息基于附加的数据结构,例如:*(代表可执行文件);/(代表目录);=(代表socket文件);l(代表FIFO文件)
- -h:显示文件容量
- -i:列出inode号码
- -l:列出长数据串,包含文件的属性与权限等数据
- -n:列出UID与GID,而非用户与用户组的名称
- -r:将排序结果反向输出
- -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
- -S:以文件容量大小排序
- -t:以时间排序
- –color=never:不要依据文件特性给予颜色显示
- –color=always:显示颜色
- –color=auto:让系统自行依据设置来判断是否给予颜色
- –full-time:以完整时间模式(包含年月日时分)输出
- –time={atime,ctime}:输出访问时间(atime)或改变权限时间(ctime),默认是输出内容更改时间
3.2复制文件或目录:cp
语法:
cp [-adfilprsu] 源文件(source) 目标文件(directory)
cp [options] source1 source2 source3 ... directory
参数(加粗为常用):
- -a:相当于-pdr的意思,使整个数据特性完全一模一样
- -d:若原文件为连接文件的属性,则复制连接文件属性而非文件本身
- -f:强制操作,若目标文件已存在且无法开启,则删除后再试一次
- -i:若目标文件已经存在,覆盖时会先询问操作的进行(用y/n决定)
- -l:进行硬链接的连接文件创建,而非复制文件本身
- -p:连同文件的属性一起复制过去,而非使用默认属性
- -r:递归持续复制,用于目录的复制行为
- -s:复制成符号链接文件,即“快捷方式”文件
- -u:若destination比source旧才更新destination
注:
- 若源文件有两个以上,目标一定要是一个目录。
- 默认的条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者和用户组通常会变成命令操作者本身
3.3 移除文件或目录:rm
语法: rm [-fir] 文件或目录
参数:
- -f:就是force的意思,忽略不存在的文件,不会出现警告信息
- -i:互动模式,在删除前会询问用户是否操作
- -r:递归删除,常用于目录的删除,危险
注:若身份是root,默认加入-i参数,若确定不需要询问则在命令前加上反斜杠,如 \rm
3.4移动文件与目录,或更名:mv
语法:mv [-fiu] source [source2 source3 ...] destination
参数:
- -f:强制,不会询问是否覆盖
- -i:若目标文件已经存在,会询问是否覆盖
- -u:若目标文件已经存在,且source比较新,才会更新
注:
- 将原文件移动到原路径且目标文件名字不同,可以实现重命名
- Linux下还有一个
rename
命令用于重命名,不过它长用户多个文件名同时重命名
3.5取得路径的文件名:basename
3.6取得路径的目录名:dirname