linux系统的目录结构;绝对路径与相对路径;系统目录的一些作用 # day19

一、linux系统的目录结构

window系统————————文件夹
linux系统————————目录

根目录:顶级目录
window系统:多根结构(系统默认文件分割符为\)
C:
D:
linux系统:单根结构(系统默认文件分割符为/)
/

二、绝对路径与相对路径

从根开始写的路径就是绝对路径,否者就是相对路径

三、系统目录的一些作用

# 1、命令相关目录
lrwxrwxrwx. 1 root root     7 Jul 11 2019 bin -> usr/bin # 普通用户使用的命令如ls、date
lrwxrwxrwx. 1 root root     8 Jul 11 2019 sbin -> usr/sbin # 管理员使用的命令


#2、启动目录
dr-xr-xr-x. 5 root root 4096 Feb 11 19:06 boot # 存放的启动相关的文件,例如kernel,grub(引导装载程序)
   
   
#3、系统文件目录
drwxr-xr-x. 13 root root 4096 Jul 11 2019 usr # 系统文件,相当于C:\Windows
lrwxrwxrwx. 1 root root     7 Jul 11 2019 lib -> usr/lib # 库文件Glibc
lrwxrwxrwx. 1 root root     9 Jul 11 2019 lib64 -> usr/lib64 # 库文件Glibc

#4、用户家目录
drwxr-xr-x. 5 root root 4096 Feb 24 16:42 home # 普通用户家目录
dr-xr-x---. 11 root root 4096 Jul 8 17:03 root # root用户的HOME

#5、配置文件目录
drwxr-xr-x. 79 root root 4096 Jul 8 17:04 etc # 配置文件,很重要,系统级服务配置文件都在这里
"""
/etc/sysconfig/network-script/ifcfg-*,网络配置文件
/etc/hostname,系统主机名配置文件
/etc/resolv.conf,dns客户端配置文件
/etc/hosts,本地域名解析配置文件
/etc/fstab   系统挂载目录 开机自启动挂载列表
/etc/passwd 系统用户文件
"""

#6、设备目录文件
drwxr-xr-x 19 root root 2960 Feb 15 17:22 dev # 设备文件,/dev/sda /dev/sr0
"""
/dev/cdrom 和/dev/sr0,系统光盘镜像设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能源源不断地产生数据,类似于取款机,随时随地取钱
/dev/pts/0,虚拟的Bash Shell终端,提供给远程用户使用 0代表第一个终端 1代表第2个终端
以此类推
/dev/stderr,错误输出    
/dev/stdin,标准输入
/dev/stdout,标准输出
"""

#7、虚拟文件系统:类似于小汽车的仪表板,能够看到汽车是否有故障,或者是否缺油了。
dr-xr-xr-x 89 root root     0 Feb 15 17:22 proc # 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
"""
反映系统当前进程的实时状态
/proc/meminfo:内存信息
/proc/cpuinfo:cpu信息
"""
#8、可变的目录与临时目录
drwxr-xr-x. 19 root root 4096 Jul 11 2019 var #存放的是一些变化文件,比如数据库,日志,邮件....
"""
/tmp,系统临时目录(类似于公共厕所),系统会定时删除该目录下长时间没有访问的文件。
/var,存放一些变化文件,如下
                  mysql:         /var/lib/mysql
                  vsftpd:         /var/ftp
                  mail:           /var/spool/mail
                  cron:           /var/spool/cron
                  log:           /var/log 系统日志文件存放目录
                                  /var/log/messages系统日志
                                  /var/log/secure系统登录日志
                  /var/tmp       临时文件(主要是程序产生的临时文件)

"""


# 9、设备(主要指存储设备)挂载目录
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media # 移动设备默认的挂载点
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt # 手工挂载设备的挂载点
drwxr-xr-x. 2 root root 4096 Apr 11 2018 opt # 早期第三方厂商的软件存放的目录.
drwxrwxrwt. 10 root root 4096 Jul 9 15:16 tmp # 临时存放文件,类似于回收站,超过十天自动删除
   
#10、其他的一些重要目录
drwx------. 2 root root 16384 Jul 11 2019 lost+found # 孤儿文件
这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下。这个目录通常会在分割槽的最顶层存在, 例如你加装一颗硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录『/disk/lost+found
lost+found这个目录一般情况下是空的,当系统非法关机后,如果你丢失了一些文件,在这里能找回来用来存放fsck过程中部分修复的文件的
lost+found:几乎每个被格式化过的Linux分区都会有,意外后找回的文件一般在这里面。
这个目录是储存发生意外后丢失的文件的。只有root用户才能打开

drwxrwxr-x   6 root root 4096 Feb 23 19:24 application
drwxr-xr-x 25 root root   660 Jul 8 17:00 run # 存放程序运行后所产生的pid文件
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv # 物理设备产生的一些文件
dr-xr-xr-x 13 root root     0 Feb 16 01:22 sys # 硬件设备的驱动程序信息

•三 绝对路径与相对路径
绝对路径: 从/开头的路径 /home   ~alice 相对路径: 相对于当前目录开始.   链接到当前目录 .. 链接到上一级目录 ~ 当前用户的家目录
# 1、绝对路径示例
touch /home/alice/file1
touch ~alice/file2

# 2、相对路径示例
touch ../file3
touch file4
touch abc/file5
四 文件管理
4.1 文件管理之:基本命令
#1、查看当前所在的目录
[root@localhost ~]# pwd
/root

#2、切换目录
cd 绝对路径   如:cd /home/alice     cd ~alice
cd 相对路径   如:cd home/alice     cd ..
cd -     # 返回上次目录  
cd       # 直接回家,等同于cd ~
cd .     #保持当前目录不变
cd ..     #切换到当前目录的上一级目录

#3、查看目录树:需要先安装tree命令,执行yum install tree -y
tree -a 目录   # 显示所有文件,包括隐藏文件
tree -d 目录   # 只显示子目录
tree -L 1 目录 # -L 遍历目录的最大层数,-L后应该是大于0的正整数
tree -F 目录   # -F 在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/

[root@localhost ~]# tree /a  
/a
├── b
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── bb
│   ├── a.txt
│   ├── b.txt
│   └── c.txt
└── bbbb

了解一下tree命令其他选项
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

#4、浏览
ls       # 默认浏览当前目录
ls -l 目录 # 浏览目录下的子目录子文件名的详细信息
ls -al 目录 # 浏览的结果中包含隐藏文件
ls -dl 目录 # 查看目录

[root@localhost ~]# ll a.txt
-rw-r--r--. 1 root root 0 12月 15 14:02 a.txt

# 各部分解析如下
-rw-r--r--. 权限,后面的点代表是否在selinux开启的情况下(enforcing或者permissive都属于开启)
创建的文件

1               硬链接个数
root           属主
root           属组
0               文件大小,单位字节
12月 15 14:02   文件修改时间
a.txt           文件名字

# 权限的第一个为代表文件类型
格式         说明
-           普通文件(文本,   二进制,   压缩包,   图片,   日志等)    
d           目录文件
b           设备文件(块设备)存储设备硬盘   /dev/sda1,   /dev/sda2
c           设备文件(字符设备)打印机,终端   /dev/tty1,   /dev/zero
s           套接字文件,   进程间通信(socket)
p           管道文件
l           链接文件

注意: Linux文件扩展名不代表任何含义, 仅仅是为了运维人员便于识别###4.2 文件管理之:创建/复制/移动/删除创建#1、=============创建文件:touch  
touch file1.txt             //无则创建,有则修改时间
touch /home/file10.txt
touch file{1..20}
touch Ego{n,N}.txt     //等价touch Egon.txt EgoN.txt
touch -t 2011111111 2018.rmvb
修改文件时间 语法:
-t STAMP
            use [[CC]YY]MMDDhhmm[.ss] instead of current time
   
了解文件的三个时间参数:https://www.cnblogs.com/linhaifeng/articles/13324247.html

#2、=============创建目录:mkdir  
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7} # 显示提示信息
  mkdir: 已创建目录 “/home/dir6”
  mkdir: 已创建目录 “/home/dir7”
mkdir -p /home/dir8/111/222     //包括其父母的创建
复制
#1、=============复制:cp  
cp 源 目标

cp -v install.log /home/dir1 #-v 将文件install.log复制到/home/dir1(用于文件与文件之间的复制粘贴)
cp -v install.log /home/dir1/aaa.txt
cp -r /etc /home/dir1 #-r 将文件夹/etc复制到/home/dir1(用于文件夹与文件夹之间的复制粘贴)
cp install.log /home/dir2
cp anaconda-ks.cfg !$
cp anaconda-ks.cfg /home/dir2
cp -r /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .
cp -a #将源文件内容以外的信息尽可能的拷贝到目标文件

cp -rv /etc /tmp
\cp -rv /etc /tmp # 非交互式环境下的覆盖(当复制的文件,复制到的文件路径下有相同文件名时,会产生交互:是否覆盖文件,当输入y覆盖)

扩展用法:
cp -rfv /etc/hosts{,.old}
cp -rvf /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}


关于-f参数的一个实验
[root@aliyum ~]# echo "1111" > /opt/a.txt
[root@aliyum ~]# echo "2222" > /t2/a.txt
[root@aliyum ~]#
[root@aliyum ~]# chmod o=wx /t2
[root@aliyum ~]# chmod o=- /t2/a.txt
[root@aliyum ~]#
[root@aliyum ~]# ll -d /t2
drwxr-x-wx 2 root root 4096 Oct 20 00:07 /t2
[root@aliyum ~]# ll /t2/a.txt
-rw-r----- 1 root root 5 Oct 20 00:07 /t2/a.txt
[root@aliyum ~]#
[root@aliyum ~]# su - xxx
Last login: Tue Oct 20 00:05:43 CST 2020 on pts/2
[xxx@aliyum ~]$ cp /opt/a.txt /t2/a.txt # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ \cp /opt/a.txt /t2/a.txt # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$
[xxx@aliyum ~]$
[xxx@aliyum ~]$ cp -f /opt/a.txt /t2/a.txt # 成功
[xxx@aliyum ~]$ exit
logout
[root@aliyum ~]# cat /t2/a.txt
1111
[root@aliyum ~]#


========================================================
小知识:root用户使用cp (默认有一个别名 alias cp='cp -i') -i   显示提示信息(是否覆盖)
1. /bin/cp -rf /etc /tmp
2. # unalias cp                
  # cp -rf /etc /tmp  
3. # \cp -rf /etc /tmp
4.-f 参数是强制复制,比如你在A文件夹里面有个文件名叫B,然后你把C文件夹里面的另一个文件名叫B的复制到A里面,这个时候会照成冲突,然后会提示你要不要继续复制.加上-f 就不会提示你了.

你输入-f 还是会提示你的原因是
-------------------------------------------------------------
有的系统在安装的时候,cp - i 的 alias 就是 cp
也就是说你在执行cp的时候,其实是执行的cp -i
取消掉cp的alias就好了
==========================================
解决办法
unalias cp
========================================================移动与删除#1、=============复制:mv  
mv 源 目标
# mv file2 /home/dir3   将file2移动到/home/dir3里
# mv file4 file5               将file4重命名为file5,当前位置里的移动就是重命名

#2、=============复制:rm
示例:删除/home/dir1      
# cd /home
# rm -rf dir1      
-r 递归
-f force强制
-v 详细过程4.3 文件管理之:查看文件内容==文本文件 (cat less more head tail grep)
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages   //系统的主日志文件

cat #查看文件的内容(查看方式是将内容一下全部加载到内存,源文件很大时,慎重,比较耗内存。但查看内容之后就会关闭文件(系统可能会缓存一下,不过可以关闭缓存),所以cat查看文件的内容只是在查看的一瞬间比较占内存。)
vim #vim是一个文本编辑器,打开一个大文件,在编辑完之前都不会删,占据很大的内存空间。打开的文件过大可能系统会挂掉
所以cat与vim都不适合打开一个大文
-n 显示行号
-A 包括控制字符(换行符)linux $ Windows ^M$
========================================================
扩展知识:
dos2unix   将Windows格式的文件转换成Unix格式
unix2dos   将Unix格式的文件转换成Windows格式
例如
# unix2dos file1
# dos2unix file2
========================================================

less more head tail
#用less查文件可以用上下键查看文件内容,按q键退出
# head /etc/passwd #默认查看前十行信息
# head -2 /etc/passwd #查看第二行信息
# tail /etc/passwd #默认查看后十行信息
# tail -1 /etc/passwd #查看最后倒数第一行信息
额外知识:
需求:只查看文件passwd倒数第二和第三行的信息
命令:tail -3 /etc/passwd | head -2
# more /etc/passwd # 使用more命令之后,每次在屏幕上显示一屏(一页)的文件内容,并且在屏幕的尾部将会出现“—More--(n%)”的信息,其中,n%是已经显示文件内容的百分比。按空格下一页,按b上一页,more +40 a.txt从第40行开始查看

# tail -f /var/log/messages             //-f 动态查看文件的尾部
# logger xxxxxxxxx                     //手动产生日志信息grep 针对文件内容进行过滤
# grep 'root' /etc/passwd
# grep --color 'root' /etc/passwd
# grep --color '^root' /etc/passwd
# grep --color 'bash$' /etc/passwd

•###4.4 文件管理之:
修改文件内容vi编辑器简介
什么是vi
vi编辑器的操作模式
vi编辑器的3种基本模式
在vi编辑器中光标的移动
移动光标位置的键与光标移动间的关系
进入插入模式
从命令行模式进入插入模式的命令
在命令行模式下删除与复制的操作
删除与复制命令
粘贴命令
复原和重做命令
扩展模式与文件的存储和退出
扩展模式下常用的命令
快速移动光标在文件中的位置
快速移动光标在屏幕中的位置
课后作业
1、什么是vim可以理解为windows下面的文本编辑器,比如记事本,比如word文档。

vi编辑器通常被简称为vi,而vi又是visual editor的简称。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
 
vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。
2、为何要用vim
1.修改配置
2.写脚本3、vi与vim的区别vi不显示高亮颜色语法

vim显示高亮颜色语法。

其他功能没有什么区别。

所以在linux系统下,使用vi还是vim取决个人习惯。

默认vi是安装的 , vim需要通过yum install vim -y4、vi编辑器的操作模式
#1、命令行模式:在编辑模式下按下ESC键返回命令行模式。
vi的默认模式。在这一模式中,所有的输入被解释成vi命令,可以执行修改、复制、移动、粘贴和删除正文等命令,也可以进行移动光标、搜索字符串和退出vi的操作等。

#2、编辑/插入模式:输入a、i、o之一
在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
a:进入插入模式并在光标之后进行添加。
i:进入插入模式并在光标之前进行插入。
o:进入插入模式并在当前(光标所在)行之下开启新的一行。
O:进入插入模式并在当前(光标所在)行之上开启新的一行。

#3、扩展/末行模式:输入冒号:
在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。
3、在vi编辑器中光标的移动
4、在命令行模式下删除与复制的操作
5、粘贴命令
6、复原和重做命令
7、掌握扩展模式下常用的命令
8、掌握快速移动光标在文件中的位置的命令
9、掌握快速在屏幕中移动光标的位置的命令
10、三种模式下的操作汇总与补充vi ===> vim 文件编辑器
# vim /boot/grub2/grub.cfg
# vim /etc/sysconfig/network-scripts/ifcfg-eth0

命令模式:
  a. 光标定位
      hjkl #左下上右
      0 #光标跳到行开头
      shift+$ #光标跳到行末尾的位置  
      /string(n N 可以循环的) 快速定位到某一行  
                 
  b. 文本编辑(少量)
  nyy #光标停在要复制行的任意位置输入yy复制这一行,行数是从光 标位置往下要复制的行数。默认为一行
  复制 yy 3yy ygg yG (以行为单位)
      p #光标停在想要粘贴位置的上一行输入p粘贴到光标的下一行
      u #撤销上一行命令相当于window系统的Ctrl+z
      Ctrl+r #取消撤销,返回到下一步,与u配合使用
      gg #跳到第一行开头位置
      nG #跳到指定的行
      G #跳到最后一行开头位置
      ndd       #剪切/删除 dd 3dd dgg dG     (以行为单位)
      H #跳到屏幕的开头
      M #跳到屏幕的中间
      L #跳到屏幕的结尾
      x       #删除光标所在的字符
      D       #从光标处删除到行尾
      u       #undo撤销
      ^r     #redo重做
        r     #可以用来修改一个字符
   
  c. 进入其它模式
      a       进入插入模式
      i       进入插入模式
      o       进入插入模式
      A       进入插入模式
       
      :       进入末行模式
      Ctrl+v 进入可视块模式
      1.利用上下左右键调整所要选中的范围Ctrl+d删除所选的信息
      2.可以选中范围shift+i进入插入模式在选中范围前加信息(注释:// 、 #),连续按两下esc,将把选中行前面都加上信息
      R   进入替换模式
       

插入模式:
      ^p 唯一补齐


末行模式:
  a. 保存退出
      :10 进入第10行  
      :w     保存  
      :q     退出    
      :wq     保存并退出      
      :w!     强制保存    
      :q!     不保存并退出      
      :wq!   强制保存退出
      :x     保存并退出
      :/查找对象 #查找文件内容中的信息,查找对象全部n键跳到下一个。
       
  b. 查找替换
 
      规格:范围 s/old/new/选项      
      :1,5 s/Note/yyy/           # 从1-5行的Note 替换为yyy  
      :5,$ s/Note/yyy/           # $表示最后一行
      :1,$ s/to/xxx/g=:% s/to/xxx/g   # %表示定位到所有行 g表示所有行内的所有内容
      :4,9 s/^#//                         4-9行的以#开头的替换为空  
      :,8 s/to/xxx/           从当前光标行到第8行
       
  c. 读入文件/写文件
      :w
      :w /aaa.txt                         另存为/aaa.txt  
      :1,3 w /2.txt
      :1 w! /root/ccc.txt 如果目标文件已经存在则需要加!号
      :r /etc/hosts

  d. 设置环境 (末行模式)    
      临时设置:      
      :set nu                                 设置行号      
      :set ic                                 不区分大小写
      :set ai                             自动缩进
      :set list
      :set nonu                       取消设置行号    
      :set noic

      永久的环境:
      /etc/vimrc                     影响所有系统用户
      ~/.vimrc                   影响某一个用户
      # vim ~/.vimrc # 在家目录下新增一个文件,输入下述内容
      set ic
      set nu

# vim -O /etc/hosts /etc/grub.conf     #可进入多个文件的编辑,Ctrl+ww按两次切换到下一个文件vim命令,两个环境可以Ctrl+ww来回切换
# vimdiff grub.conf /etc/grub.conf     对比文件,Ctrlw 按两次切换      
# vim -p /etc/hosts /etc/grub.conf     ^PgUp, ^PgDn11、同时编辑多个文件#1、
vim -o 文件1 文件2 # 水平分隔
vim -O 文件1 文件2   # 垂直分隔
使用ctrl + ww切换

#2、
vim -p /etc/hosts /etc/grub.conf      
使用 ^PgUp, ^PgDn切换12、文件内容对比# 相同文件之间差异对比,通常用于对比修改前后的差异。
   
diff         #文件对比(No)

vimdiff         #以vim方式打开两个文件对比,高亮显示不同的内容

# patch实验:
touch a.txt b.txt
[root@localhost ~]# echo 111 >> a.txt
[root@localhost ~]# echo 222 >> b.txt
[root@localhost ~]# diff -u a.txt b.txt > patch.diff
[root@localhost ~]# patch a.txt patch.diff #打补丁:将a.txt与b.txt完全保值一致
[root@localhost ~]# cat a.txt
22213、vim执行过程==============Vim非正常退出=============== (1)、模拟故障:         编辑文件的时候断开连接即可(断网或断电)         重新连接服务器         再次进行编辑文件(2)、故障报错:         Found a swap file by the name ".vim.log.swp"         Swap file ".vim.log.swp" already exists(3)、故障解决:        
删除临时文件或者先恢复内容再删除        
使用-r选项进行恢复。

 

posted @ 2021-08-14 16:54  Gnomeshghy  阅读(157)  评论(0)    收藏  举报