02 文件操作基础命令

02 文件操作基础命令

1. Linux系统的单根目录结构

linux与windows的目录结构对比

绝对路径与相对路径

一切皆文件的设计思想

文件的时间

ls -l 文件名 仅看的是文件的修改时间
Linux文件有
三种时间,用stat查看 
例如:stat anaconda-ks.cfg
​
访问时间:atime,查看内容,用cat检测
修改时间:mtime,修改内容
改变时间:ctime,修改内容,修改权限等属性,凡是有改动都会变

文件的扩展名

Linux文件是没有扩展名!!!

// 方法一:
ls -l 文件名    //看第一个字符
-   普通文件(文本文件,二进制,压缩文件,电影,图片。。。),例如:/bin/ls
d   目录文件(蓝色),例如/home/
b   设备文件(块设备)存储设备硬盘,U盘,例如:/dev/sda
c   设备文件(字符设备)打印机,例如:终端/dev/tty1
s   套接字文件,例如:/run/rpcbind.sock 
p   管道文件,例如:/run/systemd/initctl/fifo
l   链接文件(淡蓝色),例如:/bin

ps:通过颜色判断文件的类型是错误的!!!

// 方法二:
[root@xxx ~]# file /etc/grub.conf

bash shell对文件进行管理:

  1. 创建
  2. 复制
  3. 删除
  4. 移动
  5. 查看
  6. 编辑
  7. 压缩
  8. 权限操作
  9. 查找

2. 系统目录结构与作用

Windows: 以多根的方式组织文件 C:\ D:\ E:\ Linux: 以单根的方式组织文件 /

FHS(Filesystem Hierarchy Standard)指的是文件系统层次化标准,多数Linux版本采用这种文件组织形式,是以树形的结构来组织文件的。

[root@aliyun ~]# ls -l /  # /是所有linux操作系统的顶点目录,不像windows,每个分区都有一个顶点目录
total 64

# 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 # 硬件设备的驱动程序信息

3.绝对路径与相对路径

绝对路径: 从/开头的路径 /home ~alice 相对路径: 相对于当前目录开始

. 链接到当前目录 … 链接到上一级目录 ~ 当前用户的家目录

# 1、绝对路径示例
touch /home/alice/file1
touch ~alice/file2

# 2、相对路径示例
touch ../file3
touch file4
touch abc/file5

cd命令

# cd跳选文件夹(默认切回家目录)
cd ~ # 家目录
cd - # 切到上一次所在的文件夹
cd . # 保持当前目录不变
cd .. # 切换到当前目录的上一级目录
- 代表文件
d 目录文件夹
ls
补充:linux系统不是以文件的后缀名来区分文件类型的,而是以ls -l的首位来区分的

4. 文件管理

4.1 文件管理之:基本命令

# 1.# 查看当前文件夹
[root@localhost ~]# pwd
/root
# cd跳选文件夹(默认切回家目录)
cd ~ # 家目录
cd - # 切到上一次所在的文件夹
cd . # 保持当前目录不变
cd .. # 切换到当前目录的上一级目录
cd ../..
- 代表文件
d 目录文件夹
ls
补充:linux系统不是以文件的后缀名来区分文件类型的,而是以ls -l的首位来区分的
vim /etc/sysconfig/selinux
#3、查看目录树:需要先安装tree命令,执行yum install tree -y
tree -a 目录    # 显示所有文件,包括隐藏文件
[root@wyz ~]# tree -a /b
/b
├── .a.txt
├── c
│   ├── c.txt
│   └── d
│       └── e.txt
└── c.txt

tree -d 目录    # 只显示子目录
[root@wyz ~]# tree -d /b
/b
└── c
    └── d

tree -L 1 目录  # -L 遍历目录的最大层数,-L后应该是大于0的正整数
[root@wyz ~]# tree -L 1 /b
/b
├── c
└── c.txt


tree -F 目录    # -F 在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/
[root@wyz ~]# tree -F /b
/b
├── c/
│   ├── c.txt
│   └── d/
│       └── e.txt
└── c.txt

​
[root@wyz ~]# tree /b
/b
├── c
│   ├── c.txt
│   └── d
│       └── e.txt
└── c.txt
​
了解一下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 目录 # 浏览的结果中包含隐藏文件
[root@wyz ~]# ls -al /b
total 4
drwxr-xr-x.  3 root root   42 Jun 23 11:16 .
dr-xr-xr-x. 22 root root 4096 Jun 23 13:10 ..
-rw-r--r--.  1 root root    0 Jun 23 11:16 .a.txt
drwxr-xr-x.  3 root root   28 Jun 23 10:52 c
-rw-r--r--.  1 root root    0 Jun 23 10:51 c.txt

ls -dl 目录 # 查看目录

[root@localhost sysconfig]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2383 Jun 22 20:19 /etc/passwd
-rw-r--r--. 权限,后面的点代表是否在selinux开启的情况下(enforcing或者permissive都属于开启)创建的文件
1               硬链接个数
root            属主
root            属组
2383            文件大小,单位字节
Jun 22 20:19    文件修改时间
a.txt           文件名字

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

4.2 文件管理之:创建/复制/移动/删除

创建

#1、=============创建文件:touch  
[root@localhost boot]# touch b.txt  //无则创建,有则修改时间
touch Ego{n,N}.txt     //等价touch Egon.txt EgoN.txt 创建多个文件
touch {a..d}.txt  // 等价于a.txt b.txt c.txt d.txt
# 1~3 和 a~c排列组合
[root@wyz ~]# touch /a/{1..3}{a..c}
[root@wyz ~]# tree /a
/a
├── 1a
├── 1b
├── 1c
├── 2a
├── 2b
├── 2c
├── 3a
├── 3b
└── 3c

#2、=============创建目录:mkdir  
[root@wyz ~]# mkdir /a
[root@wyz ~]# mkdir /home/de /b/de 创建两个不同目录的文件
[root@wyz ~]# mkdir /a/{dir1,dir2}  # 同时创建多个目录
[root@wyz ~]# tree /a
/a
├── dir1
└── dir2
# 打印输出创建目录信息
[root@wyz ~]# mkdir -v /a/{dir3,dir4}
mkdir: created directory ‘/a/dir3’
mkdir: created directory ‘/a/dir4’
# 创建包括其父文件目录
[root@wyz ~]# mkdir -p /c/d/e/f/g
[root@wyz ~]# tree /c
/c
└── d
    └── e
        └── f
            └── g

复制

#1、=============复制:cp   
cp 源 目标
[root@wyz ~]# cp -v /1.txt /a  # 打印拷贝的信息
‘/1.txt’ -> ‘/a/1.txt’
[root@wyz ~]# cp /etc/passwd /b
[root@wyz ~]# cp -r /etc/ /test/  # 拷贝文件夹
[root@wyz ~]# cp -r /boot/* /test/  # 拷贝文件下的所有内容

移动与删除

#1、=============移动:mv   (相当于剪切) 
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     
-n  显示行号
-A  包括控制字符(换行符)linux $  Windows ^M$
========================================================
扩展知识:
dos2unix    将Windows格式的文件转换成Unix格式
unix2dos    将Unix格式的文件转换成Windows格式
例如
# unix2dos file1
# dos2unix file2
========================================================less  more head  tail  
# head  /etc/passwd  #查看文件前几行
# head -2 /etc/passwd  # 查看文件前两行
# tail /etc/passwd  #查看文件后几行
# tail -3 /etc/passwd  #查看文件后3行
# 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. 文件管理之:修改文件内容

  1. 什么是vim
可以理解为windows下面的文本编辑器,比如记事本,比如word文档。

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

在这里插入图片描述

#1. 命令行模式:在编辑模式下按ESC键返回命令行模式
vi的默认模式,在这这一模式中,所有的输入被解释成vi命令,可以执行修改,复制,移动,粘贴和删除正文等命令,也可以进行移动光标,搜索字符串和退出vi的操作
# 2. 编辑、插入模式: 输入a,i,o之一
在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
a:进入插入模式并在光标之后进行添加
i:进入插入模式并在光标之前进行插入
o:进入插入模式并在当前(光标所在)行之下开启新的一行

#3、扩展/末行模式:输入冒号:
在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。
  1. 在vi编辑器中光标的移动
键组合光标的移动
$光标移动到当前行的结尾
0光标移动到当前行的开始
  1. 在命令模式下删除与复制的操作
键组合光标的移动
dd删除光标所在的那一行
nddn为数字,删除光标所在的向下n行,例如:20dd则是删除20行
yy复制光标所在的那一行
nyyn为数字,复制光标所在的向下n行,例如:20yy则是复制20行
  1. 粘贴命令
键组合光标的移动
p将以复制的内容在光标下一行粘贴
P将以复制的内容在光标上一行粘贴
  1. 复原和重做命令
键组合光标的移动
u复原前一个操作
ctrl+r重做上一次操作
  1. 掌握扩展模式下常用的命令
键组合光标的移动
:w将文件存入/写入(save/writes)磁盘
:q退出(quits)vi编辑器(并不存盘)
:wq将文件存入\写入磁盘并退出 vi编辑器
  1. 掌握快速移动光标在文件中的位置的命令
键组合光标的移动
G将光标移动这个文件的最后一行
nGn为数字,光标移动到这个文件的第n行,例如20G 则会移动到这个文件的第20行
gg移动到这个文件的第一行,相当与1G
  1. 掌握快速在屏幕中移动光标的位置的命令

在这里插入图片描述

  1. 三种模式下的操作汇总与补充
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/15行的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      上键,下键
  1. 练习
#Vim练习题一
1) 使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world”
2) 进入命令行模式复制改行内容,在下方粘贴803) 快速移动光标到文件的最后一行
4) 快速移动光标到当前屏幕的中间一行
5) 快速移动光标到文件的第五行
6) 在下方插入新的一行内容“welcome to beijing”
7) 删除刚插入的一行
8) 撤销上一步的操作
9) 进入扩展模式,执行文件的保存退出操作
10) 修改相应文件,内容如下:
    
    
#Vim练习题二
1./etc/passwd 复制到/root/目录下,并重命名为test.txt
    
2.用vim打开test.txt并显示行号
    
3.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页
    
4.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行
    
5.搜索文件中出现的 root 并数一下一共出现多少个
        
6.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作
    
8.把整个文件中所有的root替换成admin
    
9.把光标移动到20行,删除本行,还原上一步操作
    
11.删除从5行到10行的所有内容,还原上一步操作
    
12.复制2行并粘贴到11行下面,还原上一步操作(按两次u)
    
13.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)
    
14.13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)
    
15.将文件中所有的/sbin/nologin为/bin/bash
    
16.在第一行下面插入新的一行,并输入"# Hello!"
    
17.保存文档并退出
    
    
    #Vim练习题三
    
    根据文件回答下列习题
    
    [root@xxx ~]# cat proxy.conf
    server {
    Listen 8080;
    Server_Name vim.OldboyEDU.com;
    location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forward-for;
    proxy_intercept_errors on;
    proxy_next_upstream error timeout;
    proxy_next_upstream_timeout 3s;
    proxy_next_upstream_tries 2;
    error_page 500 502 403 404 = /proxy_error.html;
    }
    location = /proxy_error.html {
    root /code/proxy;
    }
    }
    
    1.使用vim打开proxy.conf文件
    
    2.修改Listen为listen小写,并将8080修改为80
    
    3.修改Server_Name为server_name小写。
    
    4.修改vim.OldboyEDU.com为vim.oldboy.com
    
    5.在server_name行下插入一行 root /code;
    
    6.复制5-14行的内容,然后将其粘贴到14行下面
    
    7.删除与proxy_set_header相关的两行全部删除
    
    8.如上操作完成后,在13-20行前面加上#号
    
    9.删除21-23的行,然后保存当前文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值