优秀的人往往都是对自己要求更高的人,而普通的人往往对自己要求马马虎虎,缺少高标准要求,其实这是优秀和普通的关键区别。 ——老男孩思想
Bash 文件管理
对文件或目录进行创建、复制、移动、删除、编辑、查找、等等.....
1.Linux系统目录结构
——Windows:以多根的方式组织的文件 例如C:\ D:\ E:\
——Linux:以单根的方式组织文件 /
<1>存放相关命令的目录
/bin目录:普通用户使用的命令 /bin/ls, /bin/date
/sbin目录:管理员使用的命令 /sbin/service
<2>存放用户相关数据的家目录,比如:windows不同的用户登陆系统显示的桌面背景不一样
/home目录:普通用户的家目录, 默认为/home/username /home/test 环境变量的设定
/root目录:超级管理员root的家目录, 普通用户无权操作
<3>系统文件目录
/usr目录:相当于C:\Windows
/usr/local,软件安装的目录,相当于C:\Program File
/usr/bin/,普通用户使用的应用程序(重要)
/usr/sbin,管理员使用的应用程序(重要)
/usr/lib, 库文件Glibc 32bit
/usr/lib64,库文件Glibc 64bit
<4>启动目录
/boot目录:存放的系统启动相关的文件,例如:kernel,grub(引导装载程序)
<5>配置文件目录
/etc目录:极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-,网络配置文件
/etc/hostname,系统主机名配置文件
/etc/resolv.conf,dns客户端配置文件
/etc/hosts,本地域名解析配置文件 C:\Windows\System32\drivers\etc
<6>可变的目录与临时目录
/var目录:存放一些变化文件,比如/var/log/下的日志文件
/var/tmp,进程产生的临时文件
/tmp,系统临时目录(类似于公共厕所)
<7>设备目录文件
/dev目录:存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd sda sdb sdc4
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备.
/dev/zero,能源源不断的产生数据,类似于取款机,随时随地取钱
<8>虚拟的文件系统 (如对应的进程停止则/proc下对应目录则会被删除)
/proc目录:反映当前系统正在运行进程的实时状态
PS:类似于汽车在运行过程中的仪表板,能够看到汽车的油耗、时速、转向灯、故障等等
<9>PS: 在Linux7系统中, /bin、/sbin、/lib、/lib64都以软链接的形式链接到/usr/目录下
/bin --> /usr/bin
/sbin --> /usr/sbin
/lib -> usr/lib
/lib64 -> usr/lib64
media目录、mnt目录:提供设备的挂载点
opt目录:第三方工具默认安装的目录
run目录:进程运行的pid,(放在一个文件中) lock相关文件
2.文件定义
比如: /etc/hostname,整个文件中包含文件名称以及文件所在的位置,
我们将这个叫做路径,也就是说我们是通过路径对文件进行定位。
a.提问FQ: /home/oldboy/file 和/home/oldgirl/file是否是同一个文件?
b.提问FQ: /abc/test 和 abc/test 是一样的吗?
<1>绝对路径:只要以 / 开始的都算绝对路径 ls /a.txt
<2>相对路径:相对于当前目录来说 ls a.txt ls ./a.txt ls ../a.txt [/home/oldboy]
. 和 .. 是什么什么?
. 代表当前目录
.. 代表当前目录的上一级目录
<3>cd改变目录,常见的使用方法
cd 绝对路径 例:cd /etc/hostname
cd 相对路径 例:cd test/abc cd . cd ..
cd #切换目录,例: cd /etc
cd - #切换回上一次所在的目录
cd ~ #切换回当前用户的家目录,注意:root和普通用户是否有所不同吗?
cd . #代表当前目录,一般在拷贝、移动等情况下使用 cp /etc/hostname ./
cd .. #切换回当前目录的上级目录
3.基本创建、复制、移动、删除命令
<1>mkdir:创建目录
<2>touch:创建一个空的文件
<3>mv:移动文件
<4>rm:删除文件或者目录 -f强制删除 -r递归删除
PS:在使用rm删除时,文件用-f 目录才加-r 尽可能不要-rf一起使用
练习题
1.如何查看当前所在的目录?
pwd
2.如何快速从当前目录切换到家目录?
cd
3.如何快速返回上一次所在的目录?
cd -
4.在oldboy目录下进入根目录下的etc目录下的yum.repos.d目录
新建 mkdir oldboy
进入 cd /oldboy
然后 cd /etc/yum.repos.d
5.在当前所在的yum.repos.d目录快速返回到当前目录的上级目录(根目录下的etc目录)
cd ..
6.将根目录etc下的resolv.conf和hosts文件一次性复制到job目录下
新建 mkdir /job
cp /etc/{resolv.conf,hosts} /job
7.返回到家目录,删除家目录下oldboy目录及该目录下的所有文件
cd rm -rf oldboy
8.解释linux系统下“绝对路径”和“相对路径”的区别
绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql
相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后再进入到test,
执行的命令为 “#cd /home,#cd test”。此时用户所在的路径为 /home/test。第一个cd命令后紧跟/home,
前面有斜杠;而第二个cd命令后紧跟test,前面没有斜杠。这个test是相对于/home目录来讲的,所以称为相对路径。
扩展题
1.在家目录下创建一个名为oldboy的目录,然后进入该目录
新建 mkdir oldboy
进入 cd /oldboy
2.使用创建文件的命令一次性批量创建(oldboy1,oldboy2,oldboy3,oldboy4,oldboy5)这几个文件
mkdir oldboy{1..5}
3.用ls -a随便查看一个目录,发现每个目录下都会有两个名为“.”和“..”的目录,解释它们分别代表的含义
. 代表当前目录
.. 代表当前目录的上一级目录
4.在oldboy下创建一个名为student.txt的文件
touch oldboy/student.txt
5.在家目录下创建oldboy目录下名为oldboyedu的目录,然后将先前创建的名为student.txt的文件复制到家目录下
mkdir oldboy/oldboyedu
cp oldboy/student.txt ~
6.在家目录下创建一个名为job的目录,并将先前创建的名为oldboy目录及目录下的文件一次性复制到job目录下
mkdir job
cp - r oldboy job