2 Linux 文件与目录管理

1 目录与路径

1.1 相对路径与绝对路径

  • 绝对路径: 一定由根目录写起,如 [/usr/share/doc]
  • 相对路径: 不是由/写起
  • 相对路径的用途:切换方便
  • 绝对路径的用途:正确度好。

建议:写 shell 脚本管理系统的条件下,务必使用绝对路径(用相对路径可能因为环境不同导致一些问
题)

1.2 目录的相关操作

特殊目录

  • . 此层目录
  • .. 上层目录
  • - 前一个工作目录
  • ~ 目前登录用户的家目录
  • ~account 代表 account 这个使用者的家目录

根目录下存在. 和 ..两个目录,两个目录属性权限完全一直,根目录的 .. 和 . 是同一个目录。

目录常用命令

cd(切换目录,Change Directory)
cd ~damin:切换到 damin 的家目录
cd ~:回到自己的家目录
cd -:回到刚刚那个目录

使用相对目录切换要确认目前的路径在哪

pwd(显示当前目录,Print Working Directory)
参数: -P 显示真正路径,不是链接 link 路径
mkdir(建立一个新目录,make directory)
mkdir [-mp] 目录名称
-m: 设置文件的权限,不使用默认权限 umask, 如 mkdir -m 711 test2
-p:帮助递归创建 ,如 mkdir -p test1/test2/test3

不建议常用-p,怕打错字导致目录比较乱

rmdir(删除一个空目录,remove directory)
rmdir [-p] 目录
-p:连同上一层的“空”目录也删除

rmdir 删除要确定目录和其子目录中是空的,否则删不掉,要使用 rm -r test

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

问:为什么在任何目录都能执行/bin/ls?
答: 因为环境变量 PATH 设置。[echo $PATH],可以看到/bin 和/usr/bin 都在 PATH 变量内,在任何地方都能执行 ls 。

问:有两个 ls 命令,/usr/local/bin/ls 和/bin/ls,执行 ls 的时候执行哪个?
答:$PATH 中哪个目录先被查询,哪个先被执行。不同身份用户默认的 PATH 不同,默认能够随意执行的命令也不同。PATH 是可以修改的,使用绝对路径或相对路径直接指定某个命令来执行,会比查找 PATH 来的正确,命令应该放置在正确的目录下,执行方便。

2 文件与目录管理

2.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 文件; |:代表 FIFO 文件; 
-h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来; 
-l :长数据串行出,包含文件的属性与权限等等数据;(常用) 
-n :列出 UID 与 GID 而非使用者与群组的名称
-r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小; 
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; 
-S :以文件大小大小排序,而不是用文件名排序; 
-t :依时间排序,而不是用文件名。 
--color=never :不要依据文件特性给予颜色显示; 
--color=always :显示颜色 
--color=auto :让系统自行依据设置来判断是否给予颜色 
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出 
--time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime) 而非内容变更时间 (modification time)

2.2 复制 删除 移动

cp(copy,复制文件或目录)

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

rm(删除)

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

mv(移动文件或目录,重命名)

[root@study ~]# mv [-fiu] source destination
[root@study ~]# mv [options] source1 source2 source3 .... directory 
选项与参数: 
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; 
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! 
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
修改文件名,如 要把 mvtest 改为 mvtest2, [mv mvtest mvtest2]

2.3 获取路径的文件名与目录名称

  • basename 获取最后文件名
  • dirname 获取目录名
[root@study ~]# basename /etc/sysconfig/network 
network 
[root@study ~]# dirname /etc/sysconfig/network 
/etc/sysconfig

3 文件内容查看

3.1 查看文件

cat(由第一行开始显示文件内容)

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

tac(从最后一行显示,cat 的反义词)

没有 cat 那些参数,将内容反过来展示

nl(显示的时候,同时输出行号)

[root@study ~]# nl [-bnw] 文件 
选项与参数: 
-b :指定行号指定的方式,主要有两种: 
     -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); 
     -b t :如果有空行,空的那一行不要列出行号(默认值); 
-n :列出行号表示的方法,主要有三种: 
     -n ln :行号在屏幕的最左方显示; 
     -n rn :行号在自己字段的最右方显示,且不加 0 ; 
     -n rz :行号在自己字段的最右方显示,且加 0 ; 
-w :行号字段的占用的字符数。

more(一页一页翻动)

按键使用:
空格键:下一页
Enter:下翻一行
/字符串:查找
q: 立刻离开 more
b: 往回翻页,只对文件管用。

less(一页一页翻动)

less 和 more 相似,但是可以往前翻 比 more 有弹性,
more 没办法往前翻,less 可以通过 pageup 和 pagedown 前后翻文件

空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页; 
/字串 :向下搜寻“字串”的功能; 
?字串 :向上搜寻“字串”的功能; 
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!) 
g :前进到这个数据的第一行去; 
G :前进到这个数据的最后一行去 (注意大小写); 
q :离开 less 这个程序;

head(只看前面几行)

head [-n number] 文件
-n:后面接数字,代表几行
[head -n 20 文件] 显示文件的前面 20 行
[head -n -100 文件] ,如果是负数,列出前面所有行数,但不包括后面一百行,后面 100 行不打 印

tail(只看后面几行)

tail [-n number] 文件
-n : 后面加数字,行数
-f: 持续刷新文件内容
[tail -n 20 文件] 显示文件的后面 20 行
[tail -n +100 文件] 如果是正数,列出所有行数,但是不包括前面 100 行,前面 100 行不打印
[tail -f /log/ss.log] 持续看日志

3.2 修改创建文件:touch

touch [选项]... 文件...

选项参数:
-a   或--time=atime或--time=access或--time=use  只更改存取时间。
-c   或--no-create  不建立任何文档。
-d  使用指定的日期时间,而非现在的时间。
-f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m   或--time=mtime或--time=modify 只更改变动时间。
-r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t  使用指定的日期时间,而非现在的时间。

ll 命令是[ls -l] 的意思

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

4.1 文件默认权限: umask

umask 就是指定目前用户在建立文件或目录时候的权限默认值
[umask] 0022,与权限有关的是后面三个数字
[umask -S] u=rwx,g=rx,o=rx 
查看 umask, -S 可以用符号类型的方式显示权限
umask 的数字指的是默认值需要减掉的权限,以 umask = 0022 为例,
建立文件时: (-rw-rw-rw-) - (- - - - - w - - w -) ==> -rw-r—r--
建立目录时:(drwxrwxrwx) – (d----w--w-) ==> drwxr-xr-x

4.2 文件的隐藏属性

chattr [+-=] [ASacdistu] 文件目录
常用参数:
+: 增加一个特殊参数
-:删除一个特殊参数
=:直接设置参数
a: 设置 a 后,文件只能增加数据,不能删除修改数据,只有 root 才能设置这属性
i:可以让一个文件不能被删除 改名 设置链接 也无法写入或新增数据

4.3 文件特殊权限

  • SUID、SGID、SBIT

4.4 观察文件类型:file

  • [file 文件] 通过这个 file,可以简单判断文件的格式是什么

5 命令与文件的查找

5.1 脚本文件的查找

which 查找文件

which [-a] command
-a:将所有由 PATH 目录中可以找到的命令均列出
which 默认中的是 PATH 内所设置的目录

5.2 文件的查找

首选 whereis 和 locate ,实在找不到了,采用 find,因为 find 从磁盘找,速度慢,影响磁盘性能
whereis (由一些特定目录中查找文件)

whereis [-bmsu] 文件或目录
whereis 找的是那几个特定目录,没有全系统查询,主要针对/bin/sbin 和/usr/share/man 下的 man 
page 文件

locate/updatedb

locate [-ir] keyword
输入文件部分名称后,就能得到结果,locate 查找特别快,是因为 locate 寻找的数据来自自己建立
的数据库/var/lib/mlocate,找不到的时候去 updatedb,更新数据库文件

find

find [PATH] [option] [action]
[find /etc -newer /etc/passwd] -newer 辨别两个文件的新旧关系
与使用者或者用户组有关的参数:
-gid n : n 为用户组名称的 ID
-user name: name 为使用者账号
-group name: name 为用户组账号
-nouser : 拥有者不在/etc/passwd 中
-nogroup: 拥有用户组不在/etc/group 中 如
[find /home -user dmtsai] 查找/home 下面属于 dmtsai 的文件
[find / -nouser] 查找系统中不属于任何人的文件
与文件权限及名称有关的参数
-name filename: 查看名称为 filename 的文件
-size [+-] SIZE: 查看比 SIZE 还大 小 的文件
如 
find / -name passwd 默认是全名
find / -name “*passwd*” 关键字

摘自《鸟哥的Linux私房菜》,更多精彩参考 http://cn.linux.vbird.org/

你可能感兴趣的:(2 Linux 文件与目录管理)