Linux的文件与目录管理

《鸟哥的Linux私房菜》第四版第6章笔记

一、目录与路径

1、 目录的相关操作

特殊目录

.           代表此层目录 
..          代表上一层目录 
-           代表前一个工作目录 
~           代表“目前使用者身份”所在的主文件夹 
~account    代表 account 这个使用者的主文件夹(account是个帐号名称)

常见的处理目录的指令

cd:变换目录 
pwd:显示目前的目录 
mkdir:创建一个新的目录 
rmdir:删除一个空的目录 
  • pwd:显示目前的目录
    pwd是Print Working Directory的缩写
 pwd [-P] 
 选项与参数: -P :显示出确实的路径,而非使用链接 (link) 路径。
  • mkdir:创建一个新的目录
    mkdir 是make directory的缩写
mkdir [-mp] 目录名称 
选项与参数: 
-m :设置文件的权限 
-p :帮助你直接将所需要的目录(包含上层目录)递回创建起来!

例子
mkdir -m 711 test2
  • rmdir (删除“空”的目录)
rmdir [-p] 目录名称 
选项与参数: 
-p :连同“上层”“空的”目录也一起删除

2、关于可执行文件路径的变量:$PATH

$PATH环境变量帮助我们在任何目录下,输入命令时,命令可以直接执行,如何做到的呢?
当我们在执行一个指令的时候,举例来说“ls”好了,系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行!

#示例
[root@study ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

二、文件与目录管理

1、 文件与目录的检视: ls

[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称.. 
[root@study ~]# ls [--color={never,auto,always}] 文件名或目录名称.. [root@study ~]# ls [--full-time] 文件名或目录名称.. 
选项与参数: 
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用) 
-A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录 
-d :仅列出目录本身,而不是列出目录内的文件数据(常用) 
-f :直接列出结果,而不进行排序 (ls 默认会以文件名排序!) 
-F :根据文件、目录等信息,给予附加数据结构,例如: 
    *:代表可可执行文件; 
    /:代表目录; 
    =:代表 socket 文件; &#124
    ;:代表 FIFO 文件; 
-h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来; 
-i :列出 inode 号码,inode 的意义下一章将会介绍; 
-l :长数据串行出,包含文件的属性与权限等等数据;(常用) 
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!) 
-r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小; 
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; 
-S :以文件大小大小排序,而不是用文件名排序; 
-t :依时间排序,而不是用文件名。 
--color=never :不要依据文件特性给予颜色显示; 
--color=always :显示颜色 
--color=auto :让系统自行依据设置来判断是否给予颜色 
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出 --time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime), 而非内容变更时间 (modification time)

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

1)cp
cp=copy,可以创建链接文件,比对两文件的新旧而予以更新, 以及 复制整个目录等等的功能呢

[root@study ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination) 
[root@study ~]# cp [options] source1 source2 source3 .... directory 选项与参数: 
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用) 
-d :若来源文件为链接文件的属性(linkfile),则复制链接文件属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次; 
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用) 
-l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身; 
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用); 
-r :递回持续复制,用于目录的复制行为;(常用) 
-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件; 
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。 
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。 最后需要注意的,如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行!

2)rm移除文件或目录

[root@study ~]# rm [-fir] 文件或目录 选项与参数: 
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息; 
-i :互动模式,在删除前会询问使用者是否动作 
-r :递归删除

3)mv (移动文件与目录,或更名)

[root@study ~]# mv [-fiu] source destination 
[root@study ~]# mv [options] source1 source2 source3 .... directory 选项与参数: 
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; 
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! 
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
(如果有多个来源文件或目录、则最后一个目标文件一定是目录)

3、取得路径的文件名称(basename) 与 目录名称(dirname)

[root@study ~]# basename /etc/sysconfig/network 
network <== 很简单!就取得最后的文件名~ 
[root@study ~]# dirname /etc/sysconfig/network 
/etc/sysconfig <== 取得的变成目录名了!

三、文件内容查阅

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行
  • od 以二进制的方式读取文件内容!
  • touch 修改文件时间或创建新文件

1)cat (concatenate)
从第一行到最后一行连续显示在屏幕上

[root@study ~]# cat [-AbEnTv] 
选项与参数: 
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已; 
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号! 
-E :将结尾的断行字符 $ 显示出来; 
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同; 
-T :将 [tab] 按键以 ^I 显示出来; 
-v :列出一些看不出来的特殊字符
  1. tac
    从最后一行到第一行反向再屏幕上显示出来

3)nl

[root@study ~]# nl [-bnw] 文件 选项与参数: 
-b :指定行号指定的方式,主要有两种: 
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); 
    -b t :如果有空行,空的那一行不要列出行号(默认值); 
-n :列出行号表示的方法,主要有三种: 
    -n ln :行号在屏幕的最左方显示; 
    -n rn :行号在自己字段的最右方显示,且不加 0 ; 
    -n rz :行号在自己字段的最右方显示,且加 0 ; 
    -w :行号字段的占用的字符数。
  1. more (一页一页翻动,只能向后翻)
空白键 (space):代表向下翻一页; 
Enter :代表向下翻“一行”; 
/字串 :代表在这个显示的内容当中,向下搜寻“字串”这个关键字, n 向下搜寻同一个关键字; 
:f :立刻显示出文件名以及目前显示的行数; 
q :代表立刻离开 more ,不再显示该文件内容。 
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

5)less (一页一页翻动,可以向前翻)

空白键 :向下翻动一页;
[pagedown]:向下翻动一页; 
[pageup] :向上翻动一页; 
/字串 :向下搜寻“字串”的功能; 
?字串 :向上搜寻“字串”的功能; 
n :重复前一个搜寻 (与 / 或 ? 有关!) 
N :反向的重复前一个搜寻 (与 / 或 ? 有关!) 
g :前进到这个数据的第一行去; 
G :前进到这个数据的最后一行去 (注意大小写); 
q :离开 less 这个程序;
  1. head(取出前面几行)
[root@study ~]# head [-n number] 文件 
选项与参数: 
-n :后面接数字,代表显示几行的意思(不加入n则默认显示1行)

7)tail(取出后面几行)

[root@study ~]# tail [-n number] 文件 
选项与参数: 
-n :后面接数字,代表显示几行的意思 
-f :表示持续检测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的检测,可以用来实时打印日志

8)touch 修改文件时间或创建新文件: touch

[root@study ~]# touch [-acdmt] 文件 
选项与参数: 
-a :仅修订 access time; 
-c :仅修改文件的时间,若该文件不存在则不创建新文件; 
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用--date="日期或时间"
-m :仅修改 mtime ; 
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]

四、文件与目录的默认权限与隐藏权限

chattr 设置文件的隐藏属性
lsattr 显示文件的隐藏属性

[root@study ~]# chattr [+-=][ASacdistu] 文件或目录名称 
选项与参数: 
+ :增加某一个特殊参数,其他原本存在参数则不动。 
- :移除某一个特殊参数,其他原本存在参数则不动。 
= :设置一定,且仅有后面接的参数 
A :当设置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改, 可避免I/O较慢的机器过度的存取磁盘。
S :一般文件是非同步写入磁盘的,如果加上 S这个属性时,当你进行任何文件的修改,该更动会“同步”写入磁盘中。 
a :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性
c :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存
d :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录)不会被 dump 备份 
i :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!” 对于系统安全性有相当大的助益!只有 root 能设置此属性 
s :当文件设置了s属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间, 所以如果误删了,完全无法救回来了喔! 
u :与s相反的,当使用u来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!

lsattr [-adR] 文件或目录 
选项与参数: 
-a :将隐藏文件的属性也秀出来; 
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名; 
-R :连同子目录的数据也一并列出来

五、指令与文件的搜寻

1、指令搜索
which(寻找“可执行文件”)

[root@study ~]# which [-a] command 
选项或参数: 
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

2、文件、文件名的搜索
1)whereis (在一些特定的目录中寻找文件文件名)

[root@study ~]# whereis [-bmsu] 文件或目录名 
选项与参数: 
-l :可以列出 whereis 会去查询的几个主要目录而已 
-b :只找 binary 格式的文件 
-m :只找在说明文档 manual 路径下的文件 
-s :只找 source 来源文件 
-u :搜寻不在上述三个项目当中的其他特殊文件

2)locate / updatedb

[root@study ~]# locate [-ir] keyword 
选项与参数: 
-i :忽略大小写的差异; 
-c :不输出文件名,仅计算找到的文件数量 
-l :仅输出几行的意思,例如输出五行则是 -l 5 
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等 
-r :后面可接正则表达式的显示方式
  1. find
[root@study ~]# find [PATH] [option] [action] 
选项与参数: 
1\. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
    -mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。  -newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
    
2\. 与使用者或群组名称有关的参数: 
    -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd里面与帐号名称对应的数字。这方面我们会在第四篇介绍。 
    -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在 /etc/group,相关的介绍我们会第四篇说明~ 
    -user name :name 为使用者帐号名称喔!例如 dmtsai -group name:name 为群组名称喔,例如 users ; 
    -nouser :寻找文件的拥有者不存在 /etc/passwd 的人! 
    -nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件! (当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者, 这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值