4、linux目录结构 一、目录结构 二、路径 三、命令

4、linux目录结构
一、目录结构
二、路径
三、命令

/:  所有linux操作系统的顶点目录,不像windows,每个分区都有一个顶点目录
/boot   存放系统启动时相关的文件,比如kernel内核,grub引导菜单.(不要删除.)
/bin    存放的都是命令,但仅普通用户能执行
/sbin   超级管理员能执行的命令. 
/home   存放普通用户的家目录
/root   超级管理员的家目录,普通用户是无法进入
/etc    存放配置文件的目录,
 /etc/hostname 主机名
 /etc/hosts 本地解析域名一种方式
 /etc/sysconfig/network-script/ifcfg-*  网卡的配置文件
/dev    设备目录,硬盘硬盘的分区光盘.....
 /dev/null  黑洞,接收所有的东西,只进不出
 /dev/zero  摇钱树,可以生产源源不断的数据
 /dev/random    产生随机数的一个设备
 /dev/pts/0 虚拟的Bash Shell终端,提供给远程用户使用 0,代表一个终端 1代表2个终端 以此类推
/usr    类似于windows的C盘下面的windows目录
 /usr/lib   共享库文件,后缀都是so结尾, share object
 /usr/lib64 共享库文件64位,后缀都是so结尾, share object
 /usr/local 早起大家都把软件放在这个目录下,和windows C:ProgramFile
 /usr/bin
 /usr/sbin
/var    存放一些可变化的内容,比如/var/log日志,可以人为让其发生变化,也或者是随着时间推移产生变化
/tmp    存放临时文件,无论哪个用户都可以放
/proc   反馈当前运行的进程的状态信息.
/run    存放程序运行后所产生的pid文件
/media  
/mnt    提供挂载的一个目录
/opt    早期第三方厂商的软件存放的目录.
/srv    物理设备产生的一些文件

二、路径

1、路径就是对文件进行定位的一种方式。

[root@www /]# cd /usr/  #进入到/usr目录下
[root@www usr]# #cd lib64/  #进入到当前usr目录下lib64目录(这种常用)
[root@www usr]# cd ./lib64/ #进入到当前usr目录下lib64目录
[root@www lib64]# pwd   #打印当前所在的工作目录
/usr/lib64
[root@www lib64]# cd .././  #..回退到上一级目录/usr .当前目录(所有不会发生变化)
[root@www usr]# cd ./lib64/
[root@www lib64]# cd ../../ #../../ 连续回退两次目录
[root@www /]# pwd   #打印当前所在的工作目录
/

2.那什么是绝对路径,什么又是相对路径呢?

绝对路径: 只要从/开始的路径,比如ls
/home/alice/file
相对路径: 相对于当前目录来说,比如 a.txt ./a.txt ../bob/a.mp3 [加入: 此时在目录/home/alice]

[root@www /]# ls /etc/sysconfig/ #绝对路径
[root@www /]# cd etc/sysconfig/ #相对路径

[root@www sysconfig]# pwd   #查看我当前在哪
/etc/sysconfig 
[root@www sysconfig]# #cd /var/log/ #如果我要进入/var/log目录,可以使用相绝对路径
[root@www sysconfig]# cd ../../var/log/  
[root@www log]# pwd
/var/log

三、命令

1、cd 改变目录

# cd 绝对路径 cd /etc/hostname
# cd 相对路径 cd test/abc cd . cd ..
-------------------------------------
# cd #切换目录,例: cd /etc
# cd ~ #切换回当前用户的家目录,注意:root和普通用户是否有所不同吗?
# cd - #切换回上一次所在的目录
# cd . #代表当前目录,一般在拷贝、移动等情况下使用 cp /etc/hostname ./
# cd .. #切换回当前目录的上级目录

cd示例
[oldboyedu@www ~]$ cd /etc/sysconfig/network-scripts/ 
[oldboyedu@www network-scripts]$ pwd
/etc/sysconfig/network-scripts
[oldboyedu@www network-scripts]$ cd
[oldboyedu@www ~]$ pwd
/home/oldboyedu

cd ~示例
[oldboyedu@www ~]$ cd /etc/sysconfig/network-scripts/
[oldboyedu@www network-scripts]$ pwd
/etc/sysconfig/network-scripts
[oldboyedu@www network-scripts]$ cd ~
[oldboyedu@www ~]$ pwd
/home/oldboyedu

2、touch 创建文件

# touch file #无则创建,有则修改时间
# touch file2 file3
# touch file5 /home/oldboyedu/file4 
# touch file{a,b,c} #a和b和c {}集合,等价 touch filea fileb filec
# touch file{1..10} #touch file1 file2 file3 file..Number
# touch file{a..z}  #a-z   

[root@www ~]# touch /home/tt/file.txt  #报错提示,代表/home/没有tt这个目录
touch: cannot touch '/home/tt/file.txt': No such file or directory

3、目录创建命令mkdir ->make directory

# 选项:
-v 显示详细信息  
-p 递归创建目录
# mkdir dir1
# mkdir /home/od/dir1 /home/od/dir2 -pv
# mkdir -v /home/od/{dir3,dir4} 
# mkdir -pv /home/od/dir5/dir6
# mkdir -pv /home/{od/{diu,but},boy}


[root@www ~]# mkdir /home/oldboyedu/tt/dir1    #在/home/oldboyedu/tt/目录不存在
mkdir: cannot create directory '/home/oldboyedu/tt/dir1': No such file or directory

[root@www ~]# mkdir -pv /home/oldboyedu/tt/dir1    #-p递归 -v:显示创建的效果
mkdir: created directory '/home/oldboyedu/tt'
mkdir: created directory '/home/oldboyedu/tt/dir1'

[root@www ~]# mkdir /home/oldboyedu/tt/dir1    #如果目录已经存在,重复执行会报错
mkdir: cannot create directory '/home/oldboyedu/tt/dir1': File exists
[root@www ~]# mkdir -p /home/oldboyedu/tt/dir1 #如果希望重复创建文件不提示,加上-p选项即可

4、tree

[root@www ~]# yum install tree -y

选项:  
-L level级别   
-d 只看目录,不看其他
[root@www ~]# tree -L 1 /  tree /home/oldboy -L 2 -d

5、复制copy --->cp

#选项: 
-v:详细显示命令执行的操作 
-r: 递归处理目录与子目录 
-p: 保留源文件或目录的属性

[root@www ~]# cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
  or: cp [OPTION]... SOURCE... DIRECTORY
  or: cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

# cp file /tmp/file_copy
# cp name /tmp/name #不修改名称
# cp file /tmp/ #不修改名称
# cp -p file /tmp/file_p #-p保持原文件或目录的属性
# cp -r /etc/ /tmp/ #复制目录需要使用-r参数, 递归复制
# cp -v /etc/hosts /etc/hostname /tmp #拷贝多个文件至一个目录
# cp -v /etc/{hosts,hosts.bak}
# cp -v /etc/hosts{,-org}

6、move移动

[root@www ~]# mv --help
Usage: mv [OPTION]... [-T] SOURCE DEST
  or: mv [OPTION]... SOURCE... DIRECTORY
  or: mv [OPTION]... -t DIRECTORY SOURCE..

# mv file file1 #原地移动算改名,可以修改文件或者修改目录
# mv file1 /tmp/ #移动文件至tmp目录
# mv /tmp/file1 ./ #移动tmp目录的文件至当前目录
# mv dir/ /tmp/ #移动目录至/tmp目录下
# touch file{1..3}
# mv file1 file2 file3 /opt/ #移动多个文件或至同一个目录 mv file{1..3} /opt

# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt/ #移动多个目录至同一个目录

示例:
[root@www ~]# mv file3 file4 file5 /tmp/ #将当前/root目录下的file3 4 5 移动到/tmp
[root@www opt]# mv /tmp/file1 ./ #移动/tmp目录下面的file1至当前用户所在的/opt目录下

[root@www opt]# cd /home/oldboyedu/
[root@www oldboyedu]# mv /tmp/file3 ../
[root@www oldboyedu]# ls /home/

[root@www ~]# mv -t /tmp/ filea fileb ./filec
[root@www ~]# ls /tmp/file{a..c} 
/tmp/filea /tmp/fileb /tmp/filec

[root@www ~]# mv file2 /tmp123 #如果目录的目录没有在结尾增加/,同时这个目录页不存在,移动文件到/目录改名
[root@www ~]# ls /tmp123 
/tmp123
[root@www ~]# mv file3 /tmp123/    #如果移动的目录目录结尾增加了/ 那么系统始终会认为目标是一个目录
mv: failed to access '/tmp123/': Not a directory

7、删除rm remove

#选项:-r: 递归 -f: 强制删除(alias别名,默认会提示是否删除) -v: 详细过程

# rm file.txt #删除文件, 默认rm存在alias别名,rm -i所以会提醒是否删除文件
# rm -f file.txt #删除文件, 不提醒

# rm -r dir/ #递归删除目录,会提示
# rm -rf dir/ #强制删除目录,不提醒(慎用)

--------------示例---------------
#1.rm删除示例
# mkdir /home/dir10
# touch /home/dir10/{file2,file3,.file4}
# rm -f /home/dir10/file* //不包括隐藏文件 *代表所有的意思
# ls /home/dir10/ -a
. .. .file4

#2.rm删除示例2
# touch file{1..10}
# touch {1..10}.pdf
# rm -rf file* 
# rm -rf *.pdf


删除不提示的方法
[root@www ~]# /bin/rm file9
[root@www ~]# 
m file10
[root@www ~]# rm -f filed

注意:
 1.删文件,最好不要添加-r参数, 比如: rm -f file
 2.删文件时,使用* 需要注意,尽可能先用ls 取精确匹配要删除的文件,然后再使用rm -f删除