Linux基础学习:文件与目录管理

目录与路径

目录的相关操作

几个特殊的目录:

. :表示当前目录 
.. :表示上一层目录 
- :表示前一个工作目录 
~ :表示当前用户所在的主文件夹 
~account :表示account用户所在的主文件夹

几个常见的处理目录命令

cd:切换目录

  • cd dir
  • 例如:cd /home或者cd ../

pwd:打印当前目录的全路径

  • pwd [-p]
  • -p参数表示显示正确的路径而不是连接文件的路径。

mkdir:新建一个目录

  • mkdir [-mp]
  • -m :配置文件权限,直接设置,不需要看默认权限
  • -p:递归创建,包括子目录
    • mkdir -p test1/test2/test3(递归创建)

    • mkdir -m 711 test2(设置文件权限)

rmdir:删除一个空的目录

  • rmdir [-p]
  • -p 参数连同上一层的空目录一起删除,递归删除 
    rmdir -p test1/test2/test3

执行文件路径的变量:$PATH

PATH表示环境变量,内容是由一堆目录构成,每个目录中间用冒号(:)来分隔,并且有顺序之分。处于环境变量中的一些重要执行文件可以在系统任意处执行。

文件与目录管理

查看文件与目录:ls 
参数如下:

-a:全部文件。(常用) 
-A:全部文件,但不包括.和.. 
-d:仅列出目录本身。(常用) 
-f:直接列出结果,不排序(ls 默认会以文件名排序) 
-F:根据文件、目录等信息给予附加信息。

  • * :表示可执行文件;/:表示目录; = :表示socket文件; | :表示FIFO

-h :将文件容量以GB、KB等列出来。 
-l:列出文件详细信息。包括文件类型、权限、修改信息等 
-r:将排序结果反向输出 
-S:以文件容量大小排序 
-t:以时间排序 
–full-time:以完整时间显示

复制、删除与移动:cp、rm、mv

cp :复制

  • cp [-adfilprus] 源文件 目标文件
  • -d:若文件为连接文件属性(link file),则复制连接文件属性而非文件本身
  • -f:为强制复制,若目标文件已经存在且无法开启,则先删除在复制
  • -i:若目标文件已存在,则会先询问是否覆盖,在操作
  • -l:进行硬链接的文件创建,而非文件本身
  • -p:连同文件属性一同复制
  • -r:递归持续复制,用于目录的复制行为
  • -s:复制成为符号连接文件,即”快捷方式“
  • -u:若目标文件比源文件旧才更新

* rm:删除*

  • rm [-fir] 文件或目录
  • -f:强制删除
  • -i:在删除前提示用户
  • -r:递归删除

mv:移动

  • mv [fiu] 源文件/目录 目标目录
  • mv [options] 源1 源2 源3 … 目标(将多个源移动到目标目录)
  • -f :强制移动
  • -i:移动前询问,防止覆盖
  • -u:若目标已经存在,且源比较新才更新

取得路径的文件名与目录名称

basename:取得最后一个文件名

  • basename /etc/sysconfig/network
  • 得到文件名:network

dirname:取得目录名

  • dirname /etc/sysconfig/network
  • 得到目录名:/etc/sysconfig

文件内容查找

常用查找命令如下:

cat:由第一行开始显示文件内容 
tac:从最后一行开始显示 
nl:显示的时候输出行号 
more:一页一页的显示内容 
less:与more类似,同时可以翻页 
head:只看头几行 
tail:只看结尾几行 
od:以二进制方式读取文件内容

直接查看文件内容

  • cat

cat [-AbEnTv] 文件名

-A:相当于 -vET 的组合参数,可列出一些特殊字符,而不是空白而已 
-b:列出行号,仅针对非空白行做行号显示 
-E:将结尾的断行字符 $ 显示出来 
-n:打印出行号,连同空白行号也打印出来 
-T:将tab键以 ^I 显示出来 
-v:列出一些看不出来的特殊字符

  • tac

tac 文件名

  • nl

nl [-bnw] 文件 
-b:指定行号显示方式

  • -b a:同cat -n,显示所有行号
  • -b t:不列出空白行行号,默认值
  • -n:列出行号表示方法
  • -ln:最左方显示行号
  • -rn:【自己字段】的最右方显示行号,且不加0
  • -rz:行号在【自己字段】的最右方显示,且加0
  • -w:行号字段占用位数

翻页查看

  • more(一页一页翻动)

more /etc/manpatch.config

Linux基础学习:文件与目录管理

Linux基础学习:文件与目录管理

最后一行显示文件的百分比。在more运行过程中,可以通过以下几个按键进行控制:

  • 空格键(space):向下翻一页
  • Enter:向下滚动一行
  • /字符串:查找字符串
  • :f:显示出文件名以及目前显示的行数
  • q:离开more
  • b或者Ctrl + b :往回翻页,不过这操作只对文件有用,对管道无用
  • less(一页一页翻动)

less /etc/manpatch.config

Linux基础学习:文件与目录管理

less用法比more更加灵活,可以向前向后翻页;向前向后查找:

  • 空格键:向下翻页
  • Pagedown:向下翻页
  • Pageup:向上翻页
  • /字符串:向下查找
  • ?字符串:向上查找
  • n:重复前一个查询
  • N:反复重复前一个查询
  • q:离开less这个程序

数据选取

  • head(文件开头)

head [-n number] 文件 (-n 后接数字,代表显示几行的意思) 
默认显示前10行

  • tail(显示后面的几行数据)

tail [-n number]

非纯文本文件读取:od

od [-t TYPE] 文件 
-t :后面接文件类型

  • a:默认字符输出
  • c:使用ASCII字符输出
  • d[size]:利用十进制输出,每个整数占size bytes
  • f[size]:利用浮点数输出,每个数占size bytes
  • o[size]:利用八进制输出,每个数占size bytes
  • x[size]:利用十六进制输出,每个数占size bytes

修改文件时间或创建文件:touch

linux下会记录三个主要变动的时间:modification time(mtime)、status time(ctime)、access time(atime)

  • modification time(mtime):当文件内容更改时,更新该时间
  • status time(ctime):当文件状态改变时,更新该时间
  • access time:当文件被取用时,就会更新这个读取时间

文件的时间是很重要的,通过touch命令可以修改文件时间。

touch [-acdmt] 文件 
-a :修改访问时间 
-c:仅修改文件的时间,若文件不存在,则不创建新文件 
-d:后面可接修改的日期,而不用目前的日期,也可以使用–data==”日期或时间” 
-m:仅修改mtime 
-t:后面可接修改的时间,而不用目前的时间,格式为[YYMMDDhhmm]

文件与目录的默认属性与隐藏属性

文件默认权限:umask

umask就是指定“目前用户在新建文件或目录时候的权限默认值”。 
查询umask默认值:

umask:显示的数值后三位与一般权限有关。其数值刚好与文件属性相反,为1表示屏蔽属性。 
umask -S:显示的是文件属性。 
umask 数字:设置默认属性

Linux基础学习:文件与目录管理

Linux基础学习:文件与目录管理

文件隐藏属性:chattr,lsattr

  • chattr:设置文件的隐藏属性(只在Ext2/Ext3的文件系统上有效)

chattr [+-=] [ASacdistu] 文件或目录名 
+:增加某一特殊参数 
-:删除某一特殊参数 
=:仅有后面接的参数 
A:设置A属性后,他的访问时间atime不会被修改 
S:一般文件是异步写入磁盘的,加入S属性后,会“同步写入磁盘 
a:设置a后,这个文件只能增加数据,不能删除和修改数据,只有root才能设置这个属性 
c:设置c后,将会自动将此文件压缩,读取时自动解压。 
d:当dump程序执行时,设置d属性可使该文件和目录不会被dump备份 
i:让一个文件“不能被删除,改名,设置连接也无法写入或添加数据”,只有root能设置此属性 
s:当设置s后,如果删除一个文件,则该文件会被完全的从这个硬盘空间删除 
u:与s相反。删除的文件可以从磁盘恢复

  • lsattr(显示文件的隐藏属性)

lsattr [-adR] 文件或目录 
-a :将隐藏的文件属性显示出来 
-d:如果接的是目录,仅列出目录本身属性 
-R:连同子目录数据也一并列出来

查看文件类型:file

file 文件名

命令与文件的查询

脚本文件名的查询

  • which(寻找“执行文件”)

which [-a] command 
-a :将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到的命令

文件名的查找

  • whereis(寻找特定文件)

whereis [-bmus] 文件或目录名 
-b:查找二进制 
-m:只在manual路径下查找 
-s:只在source源文件查找 
-u:查找不在上述三个选项当中的其他特殊文件

  • locate(找出相关的文件)

locate [-ir] keyword 
-i :忽略大小写的差异 
-r:后面可接正则表达式 
locate passwd :列出所有与passwd相关的文件名 
注意:这个locate寻找的数据是经由数据库/var/lib/mlocate/里面的数据查找的,所以不用再去硬盘里访问数据,速度很快。但是数据库的创建,默认每天执行一次,如果新建新的文件后必须手动更新数据库(updatebd),否则会找不到。 
updatebd:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新var/lib/mlocate内的数据库文件

  • find

find [PATH] [option] [action]

  • 与时间有关的参数:-atime,-mtime,-ctime
    • -mtime +n :列出n天之前的文件
    • -mtime -n :列出n天之内包含n的文件
    • -newer file:列出比file还要新的文件
  • 与用户或用户组有关的参数:
    • -uid n:n为数字,是用户账号的ID,即UID
    • -gid n :为数字,是用户组的ID,GID
    • user name
    • group name
  • 与文件权限及名称有关的参数:
    •   -name filename :查找文件名为filename
    • -size [+-]SIZE:查找比SIZE还要大(+)或者小(-)的文件
    • type TYPE :查找文件类型(f:常规文件;b,c设备文件;d:目录;l:连接文件;s:socket;p:FIFO)
    • perm mode :查找文件权限等于mode的文件
    • -perm -mode :必须全部包含mode权限(三个权限)
    • -perm +mode :任意一个包含mode权限即可 
    • find -perm +7000:只要包含s或t即可 
    • find -perm -7000:必须包含—s–s–t所有的三个权限

权限与命令之间的关系

用户进入一个目录成为可工作目录的基本权限

  • 可使用的命令:如cd等
  • 目录所需要的权限:用户对这个目录至少需要具有x权限。
  • 额外需求:如果用户想要在某个目录使用ls查询,还需要具备r权限。

用户在某个目录读取一个文件的基本权限

  • 可使用的命令:如cat,more,less等
  • 目录所需要的权限:用户对这个目录至少需要具有x权限。
  • 文件所需权限:用户对文件至少要具有r权限。

用户在某个目录修改一个文件的基本权限

  • 可使用的命令:如nano,vi等
  • 目录所需要的权限:用户对这个目录至少需要具有x权限。
  • 文件所需权限:用户对文件至少要具有r,w权限 。

用户在创建一个文件的基本权限

  • 目录所需要的权限:用户对这个目录至少需要具有w,x权限。

用户进入目录并执行该目录下的某个命令的基本权限

  • 目录所需要的权限:用户对这个目录至少需要具有x权限。
  • 文件所需权限:用户对文件至少要具有x权限
上一篇:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04(转)


下一篇:linux学习笔记----文件与目录管理