Linux目录结构及 文件与目录命令
01.LInux目录管理命令 1)Linux目录结构介绍
1.Linux没有windows盘符的概念,Linux目录的顶点是/,称之为根,所有的目录都 在/下面。
2)Linux相对路径和绝对路径
绝对路径:从根开始的路径,最开始是有/,cd /tmp
相对路径:开始没有根(/),相对当前路径的路径,cd ../opt ##去了opt目录。
目录里的..表示退出当前目录,进入上一级目录。
例:切换到/home目录下,然后再切换到/etc目录下。
##方法1:绝对路径方法 [root@oldboy opt]# cd /home [root@oldboy home]# pwd /home [root@oldboy home]# cd /etc ##绝对路径方法 [root@oldboy etc]# pwd /etc -------------------------------------------------------------- ##方法2:相对路径方法 [root@oldboy etc]# cd /home [root@oldboy home]# pwd /home [root@oldboy home]# cd .. ##回到当前路径的上一级目录 [root@oldboy /]# pwd / [root@oldboy /]# cd etc ##相对/路径,进入etc [root@oldboy etc]# pwd /etc -------------------------------------------------------------- ##方法3:相对路径方法 [root@oldboy etc]# cd /home [root@oldboy home]# pwd /home [root@oldboy home]# cd ../etc ##相对/路径,一条命令进入etc [root@oldboy etc]# pwd /etc
3)Linux常用目录命令
a.查看当前路径pwd(print working directroy)
[root@oldboyedu ~]# pwd /root
b.切换路径cd(change directory)
[root@oldboyedu ~]# cd /tmp [root@oldboyedu tmp]# pwd /tmp ##特殊符号: ## ~ 用户的家目录 #管理员root来说~代表/root #普通用户下 ~表示/home/用户名 ## . 表示当前目录 ## .. 表示上一级目录
c.查看目录下内容ls(list)
## 选项说明: ## -l 以长格式显示文件(显示属性) ## -a 显示所有文件(含隐藏文件) # 1)查看当前目录下的内容 [root@oldboyedu ~]# ls anaconda-ks.cfg # 2)查看指定目录下的内容 [root@oldboyedu ~]# ls /root ## 查看/root下目录内容。 anaconda-ks.cfg [root@oldboyedu ~]# ls /tmp ## 查看/tmp目录下的内容。 # 3)查看指定目录下内容的属性 #什么是属性? 人:身高、姓名、体重、三围、年龄。 目录:大小、权限、用户、用户 组、创建时间 [root@oldboyedu ~]# ls -l /root -rw-------. 1 root root 1344 9月 13 12:20 anaconda-ks.cfg # 4)查看隐藏文件-a(以.开头,绿色背景) ##对比输出结果差别 [root@oldboy tmp]# ls /root anaconda-ks.cfg a.out [root@oldboyedu ~]# ls -a /root . .. anaconda-ks.cfg a.out .bash_history .bash_logout .bash_profile .bashrc
d.创建目录mkdir(make directory)
#1)在当前目录下创建名字为oldboy的目录 [root@oldboyedu tmp]# cd ~ ##回到家目录 [root@oldboyedu ~]# mkdir oldboy [root@oldboyedu ~]# ls anaconda-ks.cfg oldboy # 蓝色oldboy是目录 [root@oldboyedu ~]# cd oldboy # 进入到oldboy目录,这是相对路径方法 [root@oldboyedu oldboy]# pwd # 查看当前路径 /root/oldboy #2)同时创建/a/b/c/d多级目录 #1、不加参数无法创建多级目录 [root@oldboyedu oldboy]# mkdir /a/b/c/d mkdir: 无法创建目录"/a/b/c/d": 没有那个文件或目录 [ #2、加-p参数创建多级目录 [root@oldboyedu oldboy]# mkdir -p /a/b/c/d [root@oldboyedu oldboy]# tree /a /a └── b └── c └── d #3)在根目录下创建data目录。 [root@oldboyedu oldboy]# mkdir /data #4)查看/data目录本身及属性(-d) [root@oldboyedu ~]# ls -l -d /data #查看目录本身属性 drwxr-xr-x. 3 root root 20 12月 1 10:28 /data [root@oldboyedu ~]# ls -ld /opt #选项合并。 drwxr-xr-x. 3 root root 20 12月 1 10:28 /data
e.复制目录cp(copy)
cp命令语法:
cp -r 源目录 新的路径
cp -a 源目录 新的路径
说明:-r 复制目录 -a(dpr)复制目录的同时,保持属性不变。
#1)将/root目录前面创建的oldboy目录复制到/tmp目录下。 [root@oldboyedu oldboy]# cd ~ ##回到/root目录 [root@oldboyedu ~]# ls ##查看当前目录下内容 anaconda-ks.cfg oldboy [root@oldboyedu ~]# cp oldboy /tmp cp: 略过目录"oldboy" [root@oldboyedu ~]# cp -r oldboy /tmp ##复制oldboy目录到/tmp目录 [root@oldboyedu ~]# ls /tmp ## 查看/tmp目录下有没有 oldboy ##忽略其他无用目录 #2)将/data目录复制到/opt目录下。 [root@oldboyedu ~]# mkdir /data -p [root@oldboyedu ~]# ls -ld /data drwxr-xr-x. 2 root root 6 12月 1 10:28 /data [root@oldboyedu ~]# [root@oldboyedu ~]# cp -a /data /opt ##-a(-dpr) [root@oldboyedu ~]# ls /opt data oldboy #3)将/data目录复制到/opt目录下,并改名为inca [root@oldboyedu ~]# cp -a /data /opt/inca [root@oldboyedu ~]# ls /opt ##操作后检查 data inca
f.剪切目录mv(move)
语法:mv 源目录 目标路径
#1)将/root下的oldboy目录移动到/opt/data [root@oldboyedu ~]# ls anaconda-ks.cfg oldboy ##如果没有oldboy,可以mkdir oldboy创建 [root@oldboyedu ~]# mv oldboy /opt/data ##将oldboy目录移动到/opt/data下 [root@oldboyedu ~]# ls ##移动后源位置没有了。 anaconda-ks.cfg [root@oldboyedu ~]# ls /opt/data/ ##新位置有oldboy目录。 oldboy #2)将/data目录移动到/opt/inca目录下,并改名为oldboy [root@oldboyedu ~]# ls -ld /data drwxr-xr-x. 2 root root 6 9月 17 10:33 /data [root@oldboyedu ~]# mv /data /tmp/inca ##把/data移动到/tmp并改名 inca [root@oldboyedu ~]# ls /tmp/ inca
g.删除目录rm(remove)
目录删除语法:
rm -fr 路径/目录
-f 强制删除(force)
-r 递归删除(recursive) 目录里的内容。
#1)使用绝对路径删除/opt/data [root@oldboyedu ~]# ls /opt ##如果没有文件/文件夹->创建一个:mkdir /opt/oldboy -p data inca oldboy [root@oldboyedu ~]# rm /opt/oldboy ##不带选项,无法删除。 rm: 无法删除"/opt/oldboy": 是一个目录 [root@oldboyedu ~]# rm -fr /opt/oldboy ##真正删除命令 [root@oldboyedu ~]# ls /opt data inca #2)使用相对路径删除/opt/inca(不推荐的方法,真正使用时推荐先cd到该目录下,在执行删除操作,否则容易误删重要文件) [root@oldboyedu ~]# cd /opt ##进入到/opt目录下。 [root@oldboyedu opt]# ls data inca [root@oldboyedu opt]# rm -fr inca ##相对路径删除 [root@oldboyedu opt]# ls data
h.显示目录树tree(默认没有,需要执行yum install tree -y)
#1)显示根目录下第1层目录结构 [root@oldboyedu opt]# tree -L 1 / / ├── bin -> usr/bin (存放操作指令的位置,后期查询指令地点) ├── boot ├── dev ├── etc ├── home ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var
目录相关命令:
pwd (查看当前目录绝对路径)
cd(切换目录)
ls (查看当前目录下的目录和文件 带上参数可见文件、目录权限等信息) ,
mkdir(目录创建)
cp(复制目录/文件 需要带参数使用)
mv (移动/重命名 文件/目录)
rm (删除文件/目录)
tree(目录树命令,可用于查看目录分支结构)
02.Linux文件管理命令
a.创建文件touch
## 创建文件touch [root@oldboyedu opt]# cd ~ [root@oldboyedu ~]# touch oldboy.txt [root@oldboyedu ~]# ls anaconda-ks.cfg oldboy.txt [root@oldboyedu ~]# touch oldboy.txt [root@oldboyedu ~]# touch oldboy.txt ##重复创建不会对文件内容产生影 响,只会修改文件的时间戳。 [root@oldboyedu ~]# stat oldboy.txt #文件的时间戳查看 最近访问:2023-09-17 11:49:05.872665033 +0800 ##访问时间:最后访问的时间。 最近更改:2023-09-17 11:49:05.872665033 +0800 ##修改时间:最后修改的文件时间。 最近改动:2023-09-17 11:49:05.872665033 +0800 ##属性变化时间:属性被最后修改的时间。
b.往文件增加内容echo(配合输入重定向>以及追加输入重定向完成编辑文件)
#1)使用echo命令输出内容,接啥输出啥。 [root@oldboyedu ~]# echo 123 123 [root@oldboyedu ~]# echo oldboy oldboy #2)将输出的内容放入文件里 ##说明:> 输入重定向,清空已有文件内容,存入echo后面接的内容。 [root@oldboyedu ~]# echo 123 >oldboy.txt [root@oldboyedu ~]# cat oldboy.txt 123 [root@oldboyedu ~]# echo oldboy >oldboy.txt ##存入oldboy,原有的 123就被清除了。 [root@oldboyedu ~]# cat oldboy.txt oldboy #3)将输出的内容【追加】文件里,也就是不覆盖,每次把新的内容放到文件结尾(新起行)。 ##说明:>> 追加输入重定向,不清空已有文件内容,每次把新的内容放到文件结尾 (新起行)。 [root@oldboyedu ~]# echo 123 > oldboy.txt ##删除原有的放新的 [root@oldboyedu ~]# cat oldboy.txt 123 [root@oldboyedu ~]# echo 123 >> oldboy.txt ##保留原有的,结尾放新的 [root@oldboyedu ~]# cat oldboy.txt 123 123 [root@oldboyedu ~]# echo oldboy >> oldboy.txt ##保留原有的,结尾放新的 [root@oldboyedu ~]# cat oldboy.txt 123 123 oldboy
c.查看文件内容cat
#1)查看主机名 [root@oldboyedu ~]# cat /etc/hostname oldboyedu #2)查看局域网的域名解析 [root@oldboyedu ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #3)查看DNS设置 [root@oldboyedu ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 223.5.5.5 nameserver 223.6.6.6 #4)显示行号 [root@oldboyedu ~]# cat -n /etc/resolv.conf 1 # Generated by NetworkManager 2 nameserver 223.5.5.5 3 nameserver 223.6.6.6
d.复制文件cp 复制文件
语法:cp 文件 路径
#1)复制当前目录下oldboy.txt,并改名为oldgirl.txt [root@oldboyedu ~]# cp oldboy.txt oldgirl.txt [root@oldboyedu ~]# ls anaconda-ks.cfg oldboy.txt oldgirl.txt [root@oldboyedu ~]# cat oldgirl.txt 123 123 oldboy #2)复制当面目录下oldboy.txt,到/opt下。 [root@oldboyedu ~]# cp oldboy.txt /opt/ [root@oldboyedu ~]# ls /opt ##检查/opt目录下是否有 oldboy.txt [root@oldboyedu ~]# cat /opt/oldboy.txt 123 123 oldboy [root@oldboyedu ~]# ls ##检查当前路径依然有。 anaconda-ks.cfg oldboy.txt oldgirl.txt
f.移动或改名文件mv移动文件
语法: mv 文件 路径
#1)将oldboy.txt改名为inca.txt [root@oldboyedu ~]# mv oldboy.txt inca.txt [root@oldboyedu ~]# ls anaconda-ks.cfg inca.txt oldgirl.txt #2)移动oldgirl.txt到/tmp [root@oldboyedu ~]# mv oldgirl.txt /tmp [root@oldboyedu ~]# ls ##当前路径没有oldgirl.txt了。 anaconda-ks.cfg inca.txt [root@oldboyedu ~]# ls /tmp/ oldboy oldgirl.txt ## 新路径有oldgirl.txt
g.删除文件rm
#1)删除单个文件 [root@oldboyedu ~]# touch oldboy.txt [root@oldboyedu ~]# ls anaconda-ks.cfg a.out inca.txt oldboy.txt [root@oldboyedu ~]# rm -f oldboy.txt #2)删除多个文件 [root@oldboyedu ~]# rm -f oldboy.txt [root@oldboyedu ~]# ls anaconda-ks.cfg a.out inca.txt [root@oldboyedu ~]# rm -f a.out inca.txt anaconda-ks.cfg [root@oldboyedu ~]# ls #3)删除大量文件 rm -f *.txt ## 删除当前目录下以.txt结尾的文件 rm -f old* ## 删除当前目录下以old开头的文件 rm -f * ## 删除当前目录下所有文件 [root@oldboyedu ~]# touch oldboy{01..10}.txt ##创建oldboy01.txt....oldboy10.txt,{}符号用于一次性创建多个文件名结尾编号递归的文件 [root@oldboyedu ~]# ls oldboy01.txt oldboy03.txt oldboy05.txt oldboy07.txt oldboy09.txt oldboy02.txt oldboy04.txt oldboy06.txt oldboy08.txt oldboy10.txt [root@oldboyedu ~]# rm -f *.txt [root@oldboyedu ~]# ls [root@oldboyedu ~]# touch oldboy{01..10}.txt [root@oldboyedu ~]# ls oldboy01.txt oldboy03.txt oldboy05.txt oldboy07.txt oldboy09.txt oldboy02.txt oldboy04.txt oldboy06.txt oldboy08.txt oldboy10.txt [root@oldboyedu ~]# rm -f old* [root@oldboyedu ~]# ls [root@oldboyedu ~]# touch oldboy{01..10}.txt [root@oldboyedu ~]# ls oldboy01.txt oldboy03.txt oldboy05.txt oldboy07.txt oldboy09.txt oldboy02.txt oldboy04.txt oldboy06.txt oldboy08.txt oldboy10.txt [root@oldboyedu ~]# rm -f * root@oldboyedu ~]# ls