第六章、文件目录管理

6.1、Linux文件系统的架构

  • Linux没有盘符的概念,即不存在所谓的C盘等。
  • 已建立文件系统的硬盘分区被挂载到某个目录下,用户通过操作目录来实现磁盘读写。
  • 如果某些目录没有特定的硬盘分区与其挂钩的话,该目录的所有有内容将存放在根分区中。
  • Linux系统主要目录及其内容
目录内容
/bin构建最小系统所需要的命令(最常用的命令)
/boot内核与启动文件
/dev各种设备文件
/etc系统软件的启动和配置文件
/home用户的主目录
/libC编译器的库
/media可移动介质的安装点
/opt可选的应用软件包(很少用)
/proc进程的映像
/root超级用户root的主目录
/sbin和系统操作有关的命令
/tmp临时文件存放点
/usr非系统的程序和命令
/var系统专用的数据和配置文件

6.3、建立文件和目录

6.3.1、mkdir:建立目录

   $ mkdir document picture ##在当前目录下新建document和picture两个目录

或者使用绝对路径新建

  $ mkdir ~/picture/temp ##新建temp目录

注意:前提是picture已经存在!!!

  • 如果要同时建立多级目录,可以用
   $ mkdir -p ~/picture/temp ##新建picture目录,并在此目录中新建temp目录

6.3.2、touch:建立空文件或者更新文件建立时间

  $ touch hello ##新建hello空文件

新建出来的文件类型是纯文本文档

  $ touch txt ##更新txt的建立时间

在这里插入图片描述

6.4、移动、复制和删除

6.4.1、mv:移动和重命名

可以移动文件或者目录

  $ mv hello bin/ ##把hello文件移动到bin目录下
  $ mv picture/ Desktop/ ##把picture目录移动到桌面目录下
  • 注意:如果移动文件时目标目录中用同名文件,则会将其覆盖。
  $ mv  -i hello bin/ ##把hello文件移动到bin目录下
  mv:是否覆盖”bin/hello“?

-i 提供了发现同名文件的提示
-b则会将目标目录里的同名文件名后加一个”~“,即将其重命名

  • 如果要将某一文件重命名,只要使用
  $ mv A B##将A文件重名为B

注意在目标目录下不能存在B,不然会覆盖

6.4.2、cp:复制文件和目录

  $ cp txt test/##将txt文件复制到test目录下
  • 在复制目录时,默认只会复制目标目录里面的内容。
    如:
 $ cp txt/ test/##将txt文件复制到test目录下

但是不会将txt/这个目录复制到test目录下面
如果要将目标目录一起复制到指定目录下,则需

  $ cp -r txt/ test/##将txt文件复制到test目录下

6.4.3、rmdir和rm:删除目录和文件

  • remove 只能删除空目录,因此很少用到
  • rm既可以删除目录,也可以删除文件
  $ rm test/*.php##删除test目录下所有php文件
 $ rm -r Photos/##删除Photos目录包括里面所有的内容
  • 注意:rm指令的移除是指永远地从系统中删除,不会出现在回收站中,小心使用

6.5、文件和目录的权限

文件和目录一共有3种权限:读取(r)、写入(w)、执行(x)。

6.5.4、 chown和chgrp:改变文件所有权

  $ chown owner:group file ##将file的属主改为owner,将属组改为group
  $ chown owner file ##省略属组
  $ chown :group file ##省略属主
  $ chown -R owner iso/ ##将iso目录及其所有内容的属主转为owner  
  • chgrp只能修改文件或者目录的属组

6.5.5、 chmod:改变文件权限

  • 用户组包括了文件属主(u)、文件属组(g)、其他人(o)和所有人(a)。
  • 权限包括了读取(r)、写入(w)和执行(x)。
  $ chomod u+x days ##增加属主对文件days的执行权限
  $ chomod a-x days ##删除所有人对文件days的执行权限
  $ chomod ug=rw,o=r days ##设置属主和属组对文件days的读写权限,设置其他人的读取权限 
  $ chomod o=u days ##将其他人的权限设置为和属主一致

6.5.6、 文件权限的八进制表示

八进制二进制权限
0000
1001–x
2010-w-
3011-wx
4100r–
5101r-x
6110rw-
7111rwx
  • 记忆时可以记住x代表1,w代表2,r代表4
    例:rwx=4+2+1=7
    rwxr-x–x代表751,指属主拥有读写执行全部权限。属组拥有读和执行的权限,而其他人只有读的权限
  $ chown 751 prog ##用八进制设置文件权限

6.6、 文件类型

文件类型符号
普通文件-
目录d
字符设备文件c
块设备文件b
本地域套接口s
有名管道p
符文链接l

6.6.2、ln:建立链接

建立的符号链接有点类似于超链接或者快捷方式

  $ ln -s days mydays ##建立了一个mydays的符号链接文件指向days

访问mydays等于访问days,删除mydays对days无任何影响,删除days则mydays无意义

  • 可以认为只是给目标文件起了一个别名
    ln -s还可以对目录进行符号链接
  • ln -s是软连接(符号连接), ln是硬连接,但是现在很少用

6.7、>、>>、 <、 << 、| :输入输出重定向和管道

6.7.1、输出重定向

  • 重定向符号>用于将程序的输出转移到另一个地方去(一般默认输出是显示器)
  $ ls > ~/ls_out  ##将ls后获取的文件列表转移到ls_out文件中去
  • 注意:如果ls_out不存在,那么会新建这个文件,如果存在,会把它的内容完全覆盖
    如果要保留原本的内容,使用>>符号来进行输出重定向

    6.7.2、输入重定向

  • 重定向符号<用于将程序的输入从别的文件中读取(一般默认输入是键盘)
    如:
  $ cat < days  ##读取days的每一行

实际效果和cat days一样,所以输入重定向不常用

  • 另一种输入重定向的例子叫做”立即文档“,操作符是<<。它指的是从键盘接受输入,并传递给程序。立即文档指定了一个代表输入结束的分隔符(需自己指定),当接收到此分隔符时表示输入结束
    如:
   $ cat < < END > days  ##分隔符为END
   > Hello
   > Bye
   > END
   ##上面是输入结束
   $ cat days
  Hello
  Bye 

这条指令首先让cat从键盘获取输入,再将输出重定向到days文件

6.7.3、管道

  • 管道符号|,将一条命令的输出连接到另一条命令的输入。
    如 :
  $ ls | grep ay  ##  ls先列出文件名列表,grep从中找到名字中含有ay的文件
  ##结果如下
  days
  my_days
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值