• Linux基础巩固--Day2--文件操作


    文件系统结构

      文件和目录被组织成一个单根倒置树结构

      文件系统从根目录下开始,用“/”表示

      根文件系统(rootfs): root filesystem

      文件名称区分大小写

      以.开头的文件为隐藏文件

      路径分隔的 /

      文件有两类数据:

        元数据 : metadata

        数据:data

      文件系统分层结构: LSB Linux Standard Base

      FHS: 文件系统分层结构标准,地址:http://www.pathname.com/fhs/

      

    /:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
    /bin : 提供用户使用的基本命令, 存放二进制命令,不允许关联到独立分区,OS启动会用到里面的程序。
    /boot:用于存放引导文件,内核文件,引导加载器.
    /sbin:管理类的基本命令,不能关联到独立分区,OS启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。
    /lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件. 系统使用的函数库的目录 也存放了大量的脚本库文件 ,程序在执行过程中,需要调用时会用到
    /lib64:存放64位系统上的辅助共享库文件.
    /etc: 系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。
    /home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。
    /root: 系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
    /media:便携式移动设备挂载点目录.
    /mnt:临时文件系统挂载点.
    /dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 随机访问,c 线性访问)
    /opt:第三方应用程序的安装位置.
    /srv: 服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如www服务需要访问的网页数据存放在/srv/www内。
    /tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。
    /usr: 应用程序存放目录,/usr/bin 存放保证系统拥有完整功能而提供的应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,_/usr/local 存放软件升级包,第三方应用程序的安装位置,/usr/share/doc _系统说明文件存放目录。
    /var :放置系统中经常要发生变化的文件,如日志文件。/var/log 日志目录及文件./var/tmp:保存系统两次重启之间产生的临时数据.
    /proc: 用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间
    /sys : 用于输出当前系统上硬件设备相关的虚拟文件系统.
    /selinux:存放selinux相关的信息安全策略等信息.
    在Linux中,使用命令查看文件,首字母会标记该文件的文件类型,一般有以下几种类型:
    
        – : 普通文件
        d: 目录文件
        b:块文件
        c:字符文件
        l:符号链接文件
        p:管道文件pipe
        s:套字节文件socket

    创建和查看文件

      

    # 创建文件夹
        zhangw@ubuntu:~/studytest$ mkdir two
    # 创建文件
        zhangw@ubuntu:~/studytest$ touch three.txt
    # 查看文件
        zhangw@ubuntu:~/studytest$ cat sm.log   查看sm.log文件内容
     
        zhangw@ubuntu:~/studytest$ head sm.log   查看sm.log文件内容的前10行
     
        zhangw@ubuntu:~/studytest$ head -n 20  sm.log   查看sm.log文件内容的前20行
     
        zhangw@ubuntu:~/studytest$ tail sm.log   查看sm.log文件内容的后10行
     
        zhangw@ubuntu:~/studytest$ tail  -n  20  sm.log    查看sm.log文件内容的后20行
     
        zhangw@ubuntu:~/studytest$ tail -f sm.log   动态查看sm.log文件内容
     
        zhangw@ubuntu:~/studytest$ more sm.log  以翻页的形式查看sm.log的内容(按空格键下翻,不能上翻)
     
        zhangw@ubuntu:~/studytest$ less sm.log   以翻页的形式查看sm.log的内容(按上下键进行上下翻页,按q退出)

    # 查看文件,find
      zhangw@ubuntu:~/studytest$ find .  -name *java*   在当前位置下查找文件名包含java字符的文件
      zhangw@ubuntu:~/studytest$ find . -perm 777    在当前位置下查找权限为777 的文件
      zhangw@ubuntu:~/studytest$ find /  -user ouyang   在系统中查找用户为ouyang的文件
      zhangw@ubuntu:~/studytest$ find . -type d  在当前位置下查看找类型为文件夹的文件
     

    复制,移动和删除文件

      

    # 复制
      zhangw@ubuntu:~/studytest$ cp three.txt two/ #复制文件
      zhangw@ubuntu:~/studytest$ cp -r one /home/zhangw/studytest/two/ # 复制文件夹需要加 -r

    # 移动   zhangw@ubuntu:~/studytest$ mv one /home/zhangw/studytest/two/ # 删除
      zhangw@ubuntu:~/studytest$ rm -rf #强制删除,谨慎使用 -r 递归删除,-f强制删除
      删除的替代方法:
      1  mv one /tmp/ 用mv到指定文件夹来形成类似回收站的功能,防止误删除
      2  alias 设置别名
            alias rm='This command cannot be used'
           zhangw@ubuntu:~/studytest$ vim /root/.bashrc    #将alias写入到配置文件中
        zhangw@ubuntu:~/studytest$ source /root/.bashrc     #对配置文件立即生效
          
           m -rf # 加屏蔽别名
      

      

    确定文件内容

      文件可以包含多种类型的数据

      检查文件的类型,然后确定适当的打开命令或应用程序使用

      file [options] <filename>....

      常用选项:

        -b 列出文件辨识结果时,不显示文件名称

        -f filelist 列出文件filelist中文件名的文件类型

        -F 使用指定分隔符号替换输出文件名后默认的“:”f分隔符

        -L 查看对应软链接对应文件的文件类型

        --help显示命令在线帮助

    软链接和硬链接

      硬链接

        创建硬链接会增加额外的记录项以引用文件

        本质上是同一个文件系统上的同一个物理文件,只是重新起了个名

        每个目录引用相同的inode号

        创建时链接数递增

        删除文件时:

          rm命令递减计数的链接

          文件要存在,至少有一个链接数

          当链接数为零时,该文件被删除

        不能跨越驱动器或分区

        语法:

          ln filename  [linkname]

      软链接

        软链接是存放另一个文件的路径的形式存在。
        软链接可以 跨文件系统 ,硬链接不可以。
        软链接可以对一个不存在的文件名进行链接,硬链接必须要有源文件。
        软链接可以对目录进行链接。

        语法:

          ln -s filename [linkname]

      ln命令格式:      

        ln [参数] [源文件或目录] [目标文件或目录]
        主要参数:
            -i 交互模式,文件存在则提示用户是否覆盖。
            -s 软链接(符号链接)。
            -d 允许超级用户制作目录的硬链接。
            -b 删除,覆盖以前建立的链接

            软链接 (符号链接) ln -s   source  target
            硬链接 (实体链接)ln       source  target

    三种I/O设备

      标准输入和输出

        程序:指令+数据

          读入数据:Input

          输出数据:Output

        打开的文件都有一个fd:file descriptor(文件描述符)

        Linux给程序提供三种I/O设备

          标准输入(STDIN) -0 默认接收来自键盘的输入

          标准输出(STDOUT)-1默认输出到终端窗口

          标准错误(STDERR)-2 默认输出到终端窗口

      

    重定向

      

      >  是重定向符,就是把前面输出的内容重定向到后面指定的位置

      >!      输出重定向到一个文件或设备 强制覆盖原来的文件
      >>     输出重定向到一个文件或设备 追加原来的文件

      >前是可以加数字来说明把什么内容重定向到文件中,默认是把标准输出重定向到文件中,所以下面这个例子和上面那个是一样的(例2):

       echo "一些内容" 1> filename.txt

      & 是一个描述符,如果1或2前不加&,会被当成一个普通文件。

      1>&2 意思是把标准输出重定向到标准错误.

      2>&1 意思是把标准错误输出重定向到标准输出。

      &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中

      为何要使用命令输出重导向    

        当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
        背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
        一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
        一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
        错误讯息与正确讯息需要分别输出时。

    管道

      使用符号“|” 表示,用来连接命令

      命令1 | 命令2 | 命令3

        将命令1 的STDOUT 发送给命令2 的STDIN,命令2的STDOUT发送到命令3 的STDIN

        STDERR默认不能通过管道转发,可利用2>&1或 |&实现

        最后一个命令会在当前shell进程的子shell进程中执行

        组合多种工具的功能

         例如:ls | tr 'a-z' 'A-Z'

  • 相关阅读:
    字符串练习题
    js
    百度商桥--提供网站与用户之间交流平台
    git从本地上传到码云
    命名单词
    swiper 点击切换,拖动切换后继续自动轮播
    ionic4创建新项目
    两个年月日相减,获取年数和年数及半年数
    微信小程序点击跳转出现背景
    列表数据进行左浮动造成页面空白一块,排版错位问题
  • 原文地址:https://www.cnblogs.com/bk770466199/p/11803061.html
Copyright © 2020-2023  润新知