第7章 Linux文件与目录管理

目录与路径

特殊目录

.:此层目录

..:上层目录

~:目前用户身份所在的主文件夹

~account:account用户所在的主文件夹

处理目录的命令

cd:切换目录

change directory的缩写

pwd:显示目前所在目录

-P:显示当前路径,而非连接路径

mkdir:新建新目录

-m:配置文件的权限,而非使用默认权限(umask)

-p:递归创建

mkdir创建目录时,要求存在父目录,否则报错,因此可以使用-p参数,此时父目录不存在时会创建父目录

rmdir:删除空的目录

-p:连同上层空目录一起删除

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

通过指令echo $PATH可以查看变量PATH中设置的目录:

[[email protected] 桌面]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

文件与目录管理

查看文件与目录:ls

-a:全部文件,包括隐藏文件(.开头的文件)

-d:仅列出目录本身,而不列出目录内的文件数据

-l:列出长数据串,包括属性和权限

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

cp:复制文件或目录

cp [options] source1 source2 .. directory

-a:相当于-pdr

-d:若源文件为连接文件的属性,则复制连接文件的属性而非文件本身

-i:若目标文件存在,则覆盖时先询问操作

-l:进行硬连接的连接文件创建,而非复制文件本身

-p:连同文件的属性一同复制,而不用默认属性(备份)

-r:递归连续复制(用于目录的复制)

-s:复制成为符号连接文件,即快捷方式

不同身份执行cp,区别很大

举例:

转到tmp目录,执行:

[[email protected] ~]# cd /tmp
[[email protected] tmp]# cp /var/log/wtmp .
将/var/log/wtmp复制到当前文件夹,查看源文件和目标文件的属性:

[[email protected] tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 63744 6月  28 11:17 /var/log/wtmp
-rw-r--r--. 1 root root 63744 6月  28 12:28 wtmp
以上可以看出,源文件和目标文件的权限和修改时间都变了

若要复制的文件和源文件一模一样,可以使用-a参数:

[[email protected] tmp]# cp -ai /var/log/wtmp .
cp: overwrite ‘./wtmp’? y
[[email protected] tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 63744 6月  28 11:17 /var/log/wtmp
-rw-rw-r--. 1 root utmp 63744 6月  28 11:17 wtmp
以上可以看出,两个文件一模一样。

rm:移除文件或目录

-f:强制,忽略不存在的文件

-i:互动模式,删前询问

-r:递归删除

mv:移动目录或更名

-f:强制,若目标存在,直接覆盖而不询问

-i:目标存在,则询问

-u:目标存在且较新才覆盖

rename:重命名

rename   被替换的字符串   被替换成的字符串   匹配要替换的文件模式

举例:

创建四个文件:foo1,foo2,foo11,foo12

[[email protected] tmp]# touch foo1 foo2 foo11 foo12
[[email protected] tmp]# ls -a foo*
foo1  foo11  foo12  foo2

使用rename更改文件名:

[[email protected] tmp]# rename foo foo0 foo?
[[email protected] tmp]# ls -a foo*
foo01  foo02  foo11  foo12
“foo?”表示匹配以foo开头的后面仅有一个字符的文件名,并将这些文件的文件名中的foo替换成foo0

相似地,有以下:

[[email protected] tmp]# ls -a foo*
foo1  foo11  foo12  foo2
[[email protected] tmp]# rename foo foo0 foo??
[[email protected] tmp]# ls -a foo*
foo011  foo012  foo1  foo2

以及:

[[email protected] tmp]# ls -a foo*
foo1  foo11  foo12  foo2
[[email protected] tmp]# rename foo foo0 foo*
[[email protected] tmp]# ls -a foo*
foo01  foo011  foo012  foo02

文件内容查阅

cat:由第一行显示文件内容

[[email protected] ~]# cat -n /etc/issue
     1    \S
     2    Kernel \r on an \m
     3    

tac:从最后一行显示文件内容

[[email protected] ~]# tac /etc/issue

Kernel \r on an \m
\S

nl:显示的时候,顺便输出行号

[[email protected] ~]# nl /etc/issue
     1    \S
     2    Kernel \r on an \m

仅仅显示非空行,若要显示空行,添加 -b a参数

more:一页一页的显示

只能向后翻动

less:与more相似,可以翻页

可以向前翻页,也可以向后翻页

空格:向下翻页

PageDown:下翻一页

PageUp:上翻一页

/字符串:向下查询字符串

?字符串:向上查询字符串

n:重复前一个查询

N:反向重复前一个查询

q:退出

head:只看头几行

-n number:当number为正数时,表示取前面number行显示,当number为负数时,表示取前几行,直到number行(不包括)

tail:只看结尾几行

-n number: 表示取最后number行显示,当number表示为+number时,表示从number行开始显示

-f:检测文件,当有数据写入就会显示出来,直到ctr+c退出该指令

od:以二进制的方式读取文件内容

当文件是非文本时,使用该指令

-t type:type如下:

a:默认类的字符输出

c:ascii字符输出

d[size]:利用十进制输出数据,每个整数占用size bytes

f[size]:利用浮点数输出数据,每个整数占用size bytes

o[size]:利用八进制输出数据,每个整数占用size bytes

x[size]:利用十六进制输出数据,每个整数占用size bytes

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

首先先了解文件的三个参数:

modification time(mtime):当文件内容改变,更新这个时间

status time(ctime):当文件状态(比如权限和属性)改变,更新该时间

access time(atime):文件的内容被取用时,更新这个时间

举例如下:

//创建新文件[[email protected] ~]#  touch /tmp/test.txt//查看最后读取时间
[[email protected] ~]# ls -l --time=atime /tmp/test.txt
-rw-r--r--. 1 root root 0 6月  28 19:22 /tmp/test.txt//查看最后状态更改时间
[[email protected] ~]# ls -l --time=ctime /tmp/test.txt
-rw-r--r--. 1 root root 0 6月  28 19:22 /tmp/test.txt
[[email protected] ~]# //读取文件
[[email protected] ~]# cat /tmp/test.txt//查看最后读取时间
[[email protected] ~]# ls -l --time=atime /tmp/test.txt
-rw-r--r--. 1 root root 0 6月  28 19:23 /tmp/test.txt
[[email protected] ~]# //更改文件权限
[[email protected] ~]# chmod u=rwx,go=r /tmp/test.txt//查看最后状态更改时间
[[email protected] ~]# ls -l --time=ctime /tmp/test.txt
-rwxr--r--. 1 root root 0 6月  28 19:23 /tmp/test.txt

touch [-acdmt] 文件

-a:仅修改访问时间atime

-c:仅修改文件的时间,文件不存在不创建新的

-t:后面可以接想要修改的日期,格式为 YYYYMMDDhhmm

-m:仅修改mtime

举例:

[[email protected] ~]# touch  -t 201302031103 /tmp/test.txt
[[email protected] ~]# ls -l /tmp/test.txt
-rwxr--r--. 1 root root 0 2月   3 2013 /tmp/test.txt

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

文件默认权限:umask

首先创建文件或目录时,有如下默认权限:

创建文件:-rw-rw-rw-          文件默认记录数据的,故默认是没有执行权限的

创建目录:drwxrwxrwx

接着用刚刚创建的文件或目录的默认权限减去umask的权限,查看umask:

[[email protected] ~]# umask
0022

第一个数字表示是特殊权限,后三个数字表示用户、用户组和其他人的权限:022表示--- -w- -w-

减去该权限得:

创建文件:-rw-rw-rw-   减   ---- -w- -w-   =    -rw- -r- -r--

创建目录:drwxrwxrwx  减  ---- -w- -w-   =   drwx r-x r-x

更改umask值

[[email protected] ~]# umask 0022

文件隐藏属性

chattr:设置文件的隐藏属性

chattr [+-=] [ASacdistu] 文件或目录名

参数:

+:增加某一个特殊参数,其他原本参数不动

-:删除某一个特殊参数,其他原本参数不动

=:仅有后面的参数

A:访问文件或目录时,不改变atime属性

S:文件的修改同步写入磁盘(默认异步写入)

a:这个文件只能增加数据,不能删除和修改数据,root才能设置该属性

c:自动压缩文件,读取时自动解压缩

i:让文件不能被删除、改名、写入和添加数据

s:文件删除后,完全从硬盘空间删除

u:文件删除后还可以找回

举例:

[[email protected] tmp]# touch attrtest//添加i属性
[[email protected] tmp]# chattr +i attrtest//尝试删除该文件
[[email protected] tmp]# rm attrtest
rm: remove regular empty file ‘attrtest’? y//即使root也无法删除该文件
rm: cannot remove ‘attrtest’: Operation not permitted//移除i属性
[[email protected] tmp]# chattr -i attrtest
[[email protected] tmp]# rm attrtest
rm: remove regular empty file ‘attrtest’? y

lsattr:显示文件隐藏属性

-a:隐藏文件的属性也显示出来

-d:如果时目录,仅列出目录本身的属性而非目录内的文件名

-R:连同子目录的数据也列出来

文件的特殊权限:SUID,SGID,SBIT

SUID

当s出现在文件所有者的x权限上,称为Set UID,简称SUID的特殊权限。具有以下功能:

  • SUID仅对二进制程序有效
  • 执行者对于该程序具有x的权限
  • 本权限仅在执行该程序的过程有效
  • 执行者将具有该程序所有者的权限

举例:

所有账户密码都存在/etc/shadow内,该文件仅有root可读且仅有root可以强制写入,但普通用户却可以通过passwd指令更改自己的用户密码,这是为什么?

  1. wuchao用户对于/usr/bin/passwd这个程序具有x权限,即可以执行passwd,并且具有特殊权限SUID
  2. passwd的拥有着是root
  3. wuchao执行passwd时会暂时获得root的权限
  4. /etc/shadow可以被passwd所更改

因此,一般用户可以修改自己在shadow内的密码,尽管用户对该文件没有访问权限。

SGID

当s出现在用户组的x上,称为Set GID,SGID

对于文件而言:

  1. SGID对二进制程序有用
  2. 程序执行者对于该程序来说,需具备x属性
  3. 执行者在执行的过程中将会获得该程序用户组的支持

对目录而言:

  1. 用户若对此目录具有r和x的权限,该用户能够进入此目录
  2. 用户在此目录下的有效用户组将会变为该目录的用户组
  3. 若用户在此目录下具有w的权限,则用户所创建的新文件的用户组与此目录的用户组相同

SBIT

Sticky Bit,第三组的x权限变为t。只针对目录有效。

    1. 当用户对于此目录具有w,x权限,即具有写入的权限时
    2. 当用户在该目录创建文件或目录时,仅有自己与root才有权力删除该文件

举例:

用户甲对于A目录具有用户组或其他人身份,并且对于该目录具有w权限,这表示用户甲对该目录内任何其他人创建的文件都可以删除、重命名和移动。如果将目录A设置SBIT权限,则用户甲只能对自己创建的文件和哦目录进行删除、重命名和移动操作。

设置特殊权限

4表示SUID

2表示SGID

1表所SBIT

chmod 4755 filename 表示文件权限为:-rwsr-xr-x

查看文件类型

file filename

命令与文件的查询

脚本文件名的查询

which(寻找执行文件)

which [-a] command

-a:列出所有有PATH目录中可以找到的命令

[[email protected] tmp]$ which ifconfig
/usr/sbin/ifconfig
[[email protected] tmp]$ which cd
/usr/bin/cd

注意:which是根据PATH变量来寻找执行文件的

文件名的查找

whereis(寻找特定文件)

whereis [-bmsu] 文件名或目录名

-b:二进制文件

-m:只找在说明文件manual路径下的文件

-s:只找source源文件

-u:查找上述三项以外的其他文件

locate

locate 文件名

注意:whereis和locate查找的是系统数据库,故速度很快,但系统数据库每天更新一次,因此和实际硬盘可能不同步。需要输入updatedb指令更新数据库。

find

find   [PATH]   [option]   [action]

参数:

1.与时间有关的参数

-mtime,-ctime,-atime

以-mtime为例:

-mtime n:表示在n天之前的一天内被更改过的文件

-mtime +n:列出在n天之前(不含)被更改过的文件

-mtime -n:列出在n天之内(含)被更改过的文件

-newer file:列出比file还新的文件

2.与用户和用户组有关的参数

-uid n:n为数字,为用户的ID,存放在/etc/passwd内

-gid n:n为数字,为用户组的ID,存放在/etc/group内

-user  name:用户账户名

-group name:用户组名

-nouser:寻找文件所有者不存在/etc/passwd的文件

-nogroup:寻找文件的所有用户组不存在/etc/group的文件

举例:

[[email protected] 桌面]# find /home -user wuchao
/home
/home/wuchao
/home/wuchao/.mozilla
/home/wuchao/.mozilla/extensions
/home/wuchao/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}...省略

3.与文件权限和名称有关的

-name filename:查找文件名为filename的文件

-size [+-] SIZE:查找比SIZE还要大(+)或还要小(-)的文件。SIZE规格:c表所byte,k表示1024bytes。比50k大表示为-size + 50

-type TYPE:查找文件类型为TYPE的,类型有:一般正规文件(f),设备文件(b,c),目录(d),连接文件(l),socket(s),FIFO(f)

-perm mode:查找文件权限刚好等于mode 的文件,比如4755

-perm -mode:查找文件权限必须包括mode 的文件

-perm +mode:查找文件权限包含任一mode 的文件

4.其他可进行的操作

-exec  command:用command指令来处理查找到的结果

-print:将结果打印(默认)

时间: 2024-10-05 06:00:19

第7章 Linux文件与目录管理的相关文章

鸟哥的Linux私房菜_基础版_学习笔记3:第七章 Linux文件与目录管理

第七章 Linux文件与目录管理 7.1目录与路径: 7.1.1相对路径与绝对路径: 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录. 相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:『cd ../man』这就是相对路径的写法啦!相对路径意指『相对於目前工作目录的路径!』 7.1.2目录的相关操作: . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录

第5章 LINUX文件及目录管理命令基础

第5章 LINUX文件及目录管理命令基础5.1 操作LINUX必知必会基础知识5.1.1 Linux命令行组成结构root @ oldboy ~ # :当前用户名 分隔符 主机名 当前用户登陆后的位置,这是个变量 提示符 5.1.2 基本的Linux命令操作语法示例5.1.3 Linux与Windows的目录结构对比5.2 Linux文件及目录核心命令5.2.1 pwd:显示当前所在位置信息"print working directory"-L:逻辑路径:-P:物理路径系统Bash命令

鸟哥私房菜第七章 Linux文件与目录管理

一.目录与路径 1.相对路径与绝对路径 2.目录的相关操作 以下为特殊目录: .        :代表此目录 ..       :代表上一层目录 -        :代表前一个工作目录 ~       :代表"目前用户身份"所在的主文件夹 ~account :代表account这个用户的主文件夹 注:根目录下上一层(..)与前(.)是同一个目录. (1)cd:切换目录(change directory) 语法: [[email protected] ~]# cd [相对路径或绝对路径]

《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案

自己整理了一下,分享给大家,这些习题确实是非常经典的! 1.什么是绝对路径与相对路径? 绝对路径是相对于/目录的路径的,比如/home/user: 相对路径是相对于当前工作目录的,比如你的系统上有个/home/user/test目录,此时你在/home/user目录下,那么./test就是相对路径. 2.如何更改一个目录的名称?例如/home/test变为/home/test2. mv /home/test /home/test2 3.PATH这个环境变量的意义是什么? 这里先看一下PATH:

【转】第七章、Linux 文件与目录管理

原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 在第六章我们认识了Linux系统下的文件权限概念以及目录的配置说明. 在这个章节当中,我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换. 创建与删除目录.创建与删除文件,还有寻找文件.查阅文件内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径 1.1 相对路径与绝对路

CentOS(九)--与Linux文件和目录管理相关的一些重要命令①

   接上一篇文章,实际生产过程中的目录管理一定要注意用户是root 还是其他用户. 一.目录与路径 1.相对路径与绝对路径 因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 "路径" 以及 "相对路径" 与 "绝对路径" 的概念. 在之前的学习中,就反复的强调了Linux的目录是 "树状目录" .假设我们需要在任意一个目录下切换到另一个目录下,通常是使用的是 cd 这个命令,此时在写切换的目录名时就有两

CentOS(十)--与Linux文件和目录管理相关的一些重要命令②

在结束了第二期的广交会实习之后,又迎来了几天休闲的日子,继续学习Linux.在上一篇随笔 Linux学习之CentOS(十七)--与Linux文件和目录管理相关的一些重要命令① 中,详细记录了与Linux文件和目录管理相关的一些重要命令,包括 目录与路径相关的命令(cd.pwd.mkdir.rmdir等).管理文件与目录的命令(ls.cp.rm.mv等).查看文件内容命令(cat.more.less等),在这一篇随笔中,将继续详细记录与Linux文件和目录管理相关的其他一些重要命令. 一.修改文

第七章、Linux 文件与目录管理

1. 目录与路径 1.1 相对路径与绝对路径 1.2 目录的相关操作: cd, pwd, mkdir, rmdir 1.3 关於运行档路径的变量: $PATH 2. 文件与目录管理 2.1 文件与目录的检视: ls 2.2 复制.删除与移动: cp, rm, mv 2.3 取得路径的文件名称与目录名称 3. 文件内容查阅: 3.1 直接检视文件内容: cat, tac, nl 3.2 可翻页检视: more, less 3.3 数据撷取: head, tail 3.4 非纯文字档: od 3.5

2. Linux文件与目录管理

一.目录与路径 1. 相对路径与绝对路径 绝对路径:路径写法[一定由根目录 / 写起],如:/usr/share/doc 相对路径:路径写法[不由 / 写起], /usr/share/doc 要到 /usr/share/man 底下时,可以写成:[cd ../man]这就是相对路径的写法啦!相对路径意指[相对於目前工作目录的路径!] 2. 目录的相关操作 . 代表此层目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表『目前使用者身份』所在的家目录 ~account 代表 account