WED.文件处理基础

WED.文件处理基础

一、Linux 系统的目录结构

  • Windows 系统 —— Linux 系统

    ​ 文件夹 —— 目录

  • Windows: 以多根的方式组织文件 C:\ D:\ E:,即有多个顶级文件夹

  • Linux: 以单根的方式组织文件 /

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

二、绝对路径与相对路径

  • 从根(顶级目录)开始写的路径就是绝对路径,否则就是相对路径
# 查看网卡配置文件,从根目录开始寻找,即通过绝对路径寻找
cat /etc/sysconfing/network-scripts/ifcfg-eth0

# 从当前文件夹开始寻找,即通过相对路径寻找
cat network-scripts/ifcfg-eth0

三、系统目录作用介绍

  • 用户的家目录
# root 用户的家目录
/root

# 普通用户的家目录
/home/用户名
  • 配置文件
# 网卡配置文件
cat /etc/sysconfig/network-scripts/ifcfg-eth0

# 系统主机名配置文件
cat /etc/hostname

# 更改主机名
hostnamectl set-hostname + 主机名

# 客户端配置文件
cat /etc/resolv.conf,dns

# 本地域名解析配置文件
cat /etc/hosts		

# 系统挂载目录,开启自动挂载列表
cat /etc/fstab  # 挂载即文件夹关联硬盘分区

# 系统用户文件
cat /etc/passwd

# 存放一些变化文件
cat /etc/var

# 系统临时目录,系统会定时删除该目录长时间没有访问的文件
cat /etc/tmp

# 临时文件,用于挂载文件
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 # 早期第三方厂商的软件存放的目录.
#  权限 硬连接个数 属主 属组 文件大小 创建时间
d/rwx/r-x/r-x —— 目录文件/属主拥有读、写、执行权限/属组拥有读-执行权限/其余拥有读-执行权限
# 权限的第一个为代表文件类型
格式         说明
-            普通文件(文本,    二进制,    压缩包,    图片,    日志等)    
d            目录文件
# b            设备文件(块设备)存储设备硬盘    /dev/sda1,    /dev/sda2
# c            设备文件(字符设备)打印机,终端    /dev/tty1,    /dev/zero
# s            套接字文件,    进程间通信(socket)
# p            管道文件
l            链接文件

注意: Linux文件扩展名不代表任何含义, 仅仅是为了运维人员便于识别

# 孤儿文件,储存发生意外后丢失的文件的,只有root用户才能打开
drwx------.  2 root root 16384 Jul 11  2019 lost+found # 孤儿文件

root:x:0:0:root:root:/bin/bash
用户名:密码:UID:GID:用户描述信息:用户家目录:登录后第一个运行的程序
# UID 为 0 即为超级管理员

四、文件管理基本命令

  • cd 切换目录
pwd    查看当前所在目录
cd     切换目录
cd ~	 进入当前用户家目录
cd -   返回上次目录
cd .   保持当前目录
cd ..  切换到当前目录的上级目录

  • tree 目录树
# 查看目录树:需要先安装tree命令,执行yum install tree -y
tree -a   目录    # 显示所有文件,包括隐藏文件
tree -d   目录    # 只显示子目录
tree -L 1 目录    # -L 遍历目录的最大层数,-L后应该是大于0的正整数
tree -F   目录    # -F 在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/
  • ls 浏览目录
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           文件名字
  • 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 
  • 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  # 递归创建目录
  • cp 复制文件
cp 源 目标
cp -a /root/a.txt b.txt  # 将 a.txt 的内容拷贝到 b.txt 中,复制时尽可能保证文件的结构和属性,除从属关系外,包括查看时间以及创建时间在内的内容均保持一致
cp -v install.log /home/dir1
cp -v install.log /home/dir1/aaa.txt
cp -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 -rv /etc /tmp
\cp -rv /etc /tmp

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

"""
小知识: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 
"""
  • mv/rm 移动与删除
# mv 移动   
mv 源 目标
# mv file2 /home/dir3   将file2移动到/home/dir3里
# mv file4 file5                将file4重命名为file5,当前位置里的移动就是重命名


# rm 删除
示例:删除/home/dir1       
# cd /home
# rm -rf dir1       
-r 递归
-f force强制
-v 详细过程
  • 查看文件内容
==文本文件 (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     
-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 -1 /etc/passwd
# 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
  • stat
# stat testfile                #输入命令
  File: `testfile'
  Size: 102             Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d      Inode: 1265161     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-13 14:07:20.000000000 +0800  # 最近访问时间
Modify: 2014-08-13 14:07:07.000000000 +0800  # 最近更改时间(只修改内容时改变)
Change: 2014-08-13 14:07:07.000000000 +0800  # 最近改动时间(修改内容/权限等属性时都会改变)
  • man 手册
man + 命令
查看该命令的帮助文档
/字符串 -- 高亮显示所该文档中
每一个该字符串的位置,"n" 切换下一个

五、Vim 基本操作

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
  • 补丁
diff 1.txt 2.txt  # 比较两个文件的不同之处
......
......
diff 1.txt 2.txt > test.txt  # 保存为补丁文件
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值