Linux运维 day 08

一、文件管理

#1、Linux系统的单根目录结构
Windows: 以多根的方式组织文件 C:\ D:\ E:\ Linux: 以单根的方式组织文件 /
在Linux系统中遵循一切皆文件的设计思想
Linux中有三种时间,用stat查看
访问时间:atime
修改时间:mtime,修改内容
改变时间:ctime,修改内容或修改权限等属性,只要有改动都会变

#2、文件扩展名
在Linux中文件是没有扩展名的,我们之所以给文件加上扩展名是运维人员方识别认文件类型。
[root@localhost ~]# ll
总用量 4
-rw-------. 1 root root 1364 6月  16 19:55 anaconda-ks.cfg
- :普通文件(文本文件,二进制,压缩包,图片,日志...
d :目录文件(蓝色)
l :软连接(快捷方式)
rwx:代表它所对应的属主,属组,其他人对这个文件的权限。
r :只读权限
w :只写权限
x :执行权限
代表文件权限的符号有九位,前三位代表的是文件的属主,中间三位代表的是属组,后三位代表的是其他人。
1 :代表硬链接个数
root root :第一个root代表的是文件的属主是root,第二个root代表文件的属组是root。
1364 :代表的是文件的字节大小
6月16 19:55 :代表的是文件创建时间
anaconda-ks.cfg :代表的是文件名
.:在selinux开启的时候创建的文件

二、系统目录结构作用

FHS(Filesystem Hierarchy Standard)指的是文件系统层次化标准,多数Linux版本采用的是以树形图的结构来组织文件。
bin=>usr/bin   #存放普通用户使用的命令
sbin=>usr/sbin #存放管理员使用的命令
/boot          #存放的启动相关发文件(例如grub)
/usr           #存放的是系统文件(相当于windows系统的c盘)
lib=>usr/lib   #存放库文件Glibc
/home  #普通用户的家目录
/root  #管理员用户的家目录
/etc  #系统级服务配置文件

###系统相关配置文件路径###
#网络配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33
#系统主机名配置文件
/etc/hostname
#DNS配置文件
/etc/resolv.conf
#本地域名解析文件
/etc/hosts
#系统挂载目录 开机自动启动挂载列表
/etc/fstab
#系统用户文件
/etc/passwd
#selinux配置文件
/etc/sysconfig/selinux
#内核配置优化文件
/proc/sys/net/ipv4/...

#1、设备目录文件
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代表第二个一次类推
/dev/stderr,错误输出
/dev/stdin,标准输入
/dev/stdout,标准输出

#2、虚拟文件系统:类似于小汽车的仪表盘,能够看到汽车是否故障,或者是否缺油了。
dr-xr-xr-x  89 root root     0 Feb 15 17:22 proc # 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
ps aux :可以查看当前系统内所有进程,包括ps aux这条命令。
'''
反映系统当前进程的实时状态
cat /porc/meminfo :查看内存信息
cat /porc/cpuinfo :查看cpu信息
'''

#3、可变目录与临时目录
drwxr-xr-x. 19 root root  4096 Jul 11  2019 var  #存放的是一些变化文件,比如数据库,日志,邮件....
/tmp :系统临时目录,系统会定时删除该目录下长时间没有访问的文件。
/var :存放一些变化的文件,如下:
 tmp: /var/tmp  临时文件(主要是程序产生的临时文件)
mysql:      /var/lib/mysql
  vsftpd: /var/ftp
       mail:      /var/spool/mail
           cron: /var/spool/cron
                  log:       /var/log  系统日志存放文件
                            /var/log/message  系统日志
                                /var/log/secure  系统登陆日志
                         
#4、设备(主要存储设备)挂载目录
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 # 临时存放文件,类似于回收站,超过十天自动删除
                   
#5、其他的一些重要目录
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 # 硬件设备的驱动程序信息

三、相对路径与绝对路径

绝对路径:从/目录开始的路径
相对路径:相对于从当前目录开始
.:表示当前目录
..:表示上一级目录
~:当前用户家目录

四、文件管理之基本命令

#1、查看当前所在目录
[root@localhost ~]# pwd
/root

#2、切换目录
cd +目标文件路径
cd - #返回上次目录
cd   #返回家目录,等价于cd ~
cd.. #切换到当前目录的上一级目录

#3、查看目录(ps:需先安装tree命令 yum -y install tree)
tree -a 目录 :显示所有文件,包括隐藏文件(用树形图表示出来)
tree -d 目录 :只显示子文件夹
tree -L 1 目录 -L查看目录的最大层数,-L后应该是大于0的正整数
tree -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 目录 #只查看目录的详细信息

#5、创建
创建文件 :touch
touch {1..20}.txt #在当前文件夹下创建1到20个文件
touch {1..3}{a..b}.txt
创建文件夹 :mkdir
mkdir /a #在当前目录下新建一个/aaa的文件夹
mkdir -p /a/b  #在当前目录下递归的新建出/a/b子文件夹
mkdir /a/ /b/ #在当前目录下新建/a/ /b/两个子文件夹
mkdir /a/ {b,c} #在/a/文件夹下新建两个子文件夹/a/b /a/c
mkdir -v /home/{dir6,dir7} #将创建文件夹的过程打印到屏幕上
   mkdir: 已创建目录 /home/dir6”
   mkdir: 已创建目录 /home/dir7”
   
#6、复制
cp 源文件 目标文件
小知识:root用户使用cp (默认有一个别名 alias cp='cp -i') -i   显示提示信息(是否覆盖)
\cp   #取消cp命令别名的影响,直接覆盖,不会再有提示信息。
cp -v #显示复制的过程
cp -r #复制文件夹
cp -f #-f 参数是强制复制,比如你在A文件夹里面有个文件名叫B,然后你把C文件夹里面的另一个文件名叫B的复制到A里面,这个时候会照成冲突,然后会提示你要不要继续复制.加上-f 就不会提示你了.

#7、移动删除
mv 源文件 目标文件
mv a.txt /etc #将a.txt移动到/etc里
rm -rf 目标
rm #默认删除文件
-r #删除文件夹
-f  /rm #取消交互(是否删除)
-v  #显示过程

#9、查看
cat +目标
cat -n #显示行号
cat -A #查看所有内容包括控制字符
less #查看文件内容可以上下键浏览,空格翻页。
more #查看文件,空格翻页。
head -n #查看文件头n行
tail -n #查看文件末尾n行
tail -f 目标 #动态监测目标文件新增内容
扩展知识:
dos2unix    将Windows格式的文件转换成Unix格式
unix2dos    将Unix格式的文件转换成Windows格式

#10、过滤
grep 针对文件内容进行过滤
# grep 'root' /etc/passwd
# grep --color 'root' /etc/passwd   把/etc/passwd文件中有root的整行内容读出来
# grep --color '^root' /etc/passwd   把/etc/passwd文件中以root开头的整行内容读出来
# grep --color 'bash$' /etc/passwd   把/etc/passwd文件中以bash结尾的整行内容读出来

五、vim文本编辑器

#1、什么是vim:
可以理解为windows下面的文本编辑器
vi编辑器通常被简称为vi,而vi又是visual editor的简称。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它 只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。
#2、为什么要用vim:
修改配置
写脚本
#3、vi与vim的区别
vi不显示高亮颜色语法,vim显示
vi是linux默认安装的vim需要下载
#4、vim编辑操作模式
用vim编辑器打开文件时默认的是命令模式,按(a,i,o)可以进入编辑模式,按ESC可以退出编辑模式,再命令模式按":"可以进入末行模式,同样也是按ESC退出到命令模式。
命令模式:
vi的默认模式。在这一模式中,所有的输入被解释成vi命令,可以执行修改、复制、移动、粘贴和删除正文等命令,也可以进行移动光标、搜索字符串和退出vi的操作等。
编辑模式:
在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
a:进入插入模式并在光标之后进行添加。
i:进入插入模式并在光标之前进行插入。
o:进入插入模式并在当前(光标所在)行之下开启新的一行。
末行模式:在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。
#5、再vim编辑器中光标的移动
$ :将光标移动到行尾
0 :将光标移动到行首
#6、再命令行的复制、删除、粘贴、剪切操作
yy :复制光标所在的那一行
nyy:复制光标所在向下的n行
dd:删除光标所在的那一行
ndd:删除光标所在向下的n行
p:将以复制或删除的那一行再光标下一行粘贴
P:将以复制或删除的那一行再光标上一行粘贴
#7、复原和重做命令
u :复原前一个操作
Ctrl+r :重做上一次操作
#8、末行模式下常用命令
w :保存
q :退出
wq :保存退出
!:在root用户下可以进行强制保存退出
#9、快速移动光标在文件中的位置命令
G:将光标移动到文件末尾
gg:将光标移动到文件开头
nG:将光标移动到文件的n行
#10、快速移动光标在屏幕中的位置命令
H:将光标移动到屏幕的最上方第一个字符
J:将光标移动到屏幕的中间行
M:将光标移动到屏幕的最下一行
10、三种模式下的操作汇总与补充
vi ===> vim 文件编辑器
# vim /boot/grub2/grub.cfg
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
命令模式:
   a. 光标定位
       hjkl  
       0 $
       gg G  
       3G      进入第三行
       /string(n N 可以循环的)  快速定位到某一行  
                 
   b. 文本编辑(少量)
       y       复制  yy 3yy  ygg  yG (以行为单位)
       d       .删除 dd 3dd dgg  dG     (以行为单位)
       p       粘贴
       x       删除光标所在的字符
       D       从光标处删除到行尾
       u       undo撤销
       ^r      redo重做
        r      可以用来修改一个字符
   
   c. 进入其它模式
       a       进入插入模式
       i       进入插入模式
       o       进入插入模式
       A       进入插入模式
       
      :       进入末行模式
       ^v  进入可视块模式
       R   进入替换模式
       
插入模式:
       ^p  唯一补齐
末行模式:
   a. 保存退出
      :10 进入第10行  
      :w      保存  
      :q      退出    
      :wq     保存并退出      
      :w!     强制保存    
      :q!     不保存并退出      
      :wq!    强制保存退出
      :x      保存并退出
       
   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行的以#开头的替换为空
      :% s#/dev/sda#/var/ccc#g
      :,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     ^w 按两次切换
# vimdiff grub.conf /etc/grub.conf     对比文件,^w 按两次切换      
# vim -p /etc/hosts /etc/grub.conf     ^PgUp, ^PgDn
L:将光标移动到屏幕的最下方第一个字符
#12、同时编辑多个文件
vim -o 文件1 文件2  # 水平分隔
vim -O 文件1 文件2   # 垂直分隔
使用ctrl + ww切换
#13、文件内容对比
# 相同文件之间差异对比,通常用于对比修改前后的差异。  
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
patching file a.txt
[root@localhost ~]# cat a.txt
222
#14、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-06-25 12:35  c-j-z  阅读(41)  评论(0)    收藏  举报