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'

原文地址:https://www.cnblogs.com/bk770466199/p/11803061.html