Linux基础 - Linux系统目录结构

2,578 阅读2分钟

这是我参与11月更文挑战的第30天,活动详情查看:2021最后一次更文挑战

系统文件管理命令

一个目录下不可能出现同名的文件,不管是文件夹还是文件都不能同名。linux区分大小写,windows不区分大小写。

创建目录mkdir

mkdir [option] directory  # []表示可加可不加
-m:创建目录时授权
-p:递归创建目录,如果目录已经存在则不创建,并且不报错
-v:显示创建目录的信息,查看创建目录的过程
# 基本用法
mkdir /test   # /目录下创建test目录
mkdir test     # 当前目录创建
mkdir ../test   # 当前目录的上一级目录
mkdir ./test    # 当前目录创建
mkdir /usr/local/test   # 指定目录创建
mkdir .test  # 当前目录下创建隐藏目录

# 创建多个目录
cd /tmp
mkdir -p test /usr/local/test /test/teat  # 第一种方式
mkdir a{1, 2, 3}  # 创建有规律的a1 a2 a3目录
mkdir a{10...100}  # 创建a10 - a100目录
mkdir /{home/{test/test{1, 2}, oldboy}, backup}


# -m 数字是是从000-777之间的数字,每一位不能超过7
mkdir -m 777 test  # 所有的权限
mkdir -m 000 testb  # 没有权限

创建目录时报错处理

[root@zhuang ~]# mkdir /abc/def/efg
mkdir: cannot create directory ‘/abc/def/efg’: No such file or directory
报错原因是:/abc目录不存在,所以无法创建后续目录
解决方案:mkdir -p /abc/def/efg

[root@zhuang ~]# mkdir /abc/def/efg
mkdir:cannot create directory ‘/abc/def/efg’: directory is exists
报错原因:目录已经存在了
解决方法:不创建就好了呀~~~,或者加参数-p就不会创建了,而且不报错

[test@zhuang ~]$ mkdir /root/test
mkdir:cannot create directory ‘/root/test’: permission denied
报错原因:权限不够
解决方法:需要授权

创建文件touch

touch [option]  file
1创建文件时如果文件已存在则修改它的 `修改时间` 和 `访问时间` 和 `改变时间`,不存在则创建
2必须创建在已经存在的目录中
3创建相同文件不会被覆盖
4linux中一切皆文件,没有后缀名之分

显示目录结构tree

# 什么参数都没有
tree  # 当前目录的目录结构

# 指定文件夹查看目录结构
tree /r

# 查看指定级数的目录结构-L
tree -L 级数 /root
tree -L 3 /

# 只看目录结构-d,选项是指定给某个参数的,参数必须写在指定选项后面,比如-dL 1  不建议写-Ld 1
tree -d -L 3 /

复制文件或者目录cp

copy:拷贝,无法直接拷贝目录需要借助-r参数
cp [OPTION]... SOURCE... DIRECTORY  # source路径下的文件拷贝到新路径下可以改名


cp www /root    # 将当前路径下的www复制到/root路径下,文件名不变

cp www /root/aaa   
1.如果aaa存在并且是一个目录,会将www放到/root/aaa目录下
2.如果aaa存在并且是一个文件,会将www放到/root目录下,并且覆盖原文件的内容
3.如果aaa不存在,会将www放到/root目录下并改名为aaa

# 三个语法
cp -T 原文件 目标文件(必须有文件名)
cp -t 目标路径 原文件
cp 原文件路径 目标路径(可以改名)
-a:相当于-r -p,既做到了递归又保持了文件的属性
-i:如果拷贝过程中出现重复文件名,询问是否覆盖
-r(-R, --recursivve):递归拷贝文件,直接拷贝会改变文件属性
-p:在拷贝文件的过程中保持文件原有的属性
-v:显示拷贝文件的过程
-t:将原文件和目标文件的书写位置反过来

移动命令mv

# 语法,mv命令可以直接移动目录不需要递归
mv [OPTION]... SOURCE1 SOURCE2.... ... DIRECTORY

mv test test1
# test1是否存在,如果存在并且是个目录,就将test移动到test1中
# 如果test1存在,如果存在是个文件会询问是否覆盖。
# test1如果不存在,则将test文件改名为test1

# 选项
-i:在移动过程中如果存在相同的文件名就询问是否覆盖
-t:将原文件和目录反过来

# 注意
mv命令可以直接移动目录,不需要递归,并且不会修改文件属性
mv命令后可以写多个文件,但是最后一个必须是目录,表示将前面所有的原文件移动到最后的目录中
文件不能覆盖目录,但是可以放入目录里面,目录不能覆盖文件并且不能放到文件里

删除命令rm

# 语法
rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

# 选项
-d:只能删除空目录,没什么用
-r:递归删除
-f:强制
-v:显示删除的细节

# 注意
rm命令本身只能删除文件不能删除目录,如果想要删除目录需要使用选项
linux中没有回收站,rm会永久删除文件
删除文件的时候尽量使用rm -f
如果文件或者目录不存在不会报错

系统文件查看命令cat

# 语法
cat [OPTION]... [FILE]...

# 选项
-n:查看文件并显示文件的行数,空行也编号
-E:以$标注每行结尾
-T:以^I标注文件中的tab键
-A:相当于-v -E -T

# 其他用法
tac file  # 把文件反过来看
cat >>xx.txt <<EOF  # 向文件中输入内容,EOF表示输入EOF就结尾,也可以是其他字母

结语

文章首发于微信公众号程序媛小庄,同步于掘金

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)