参考原文:http://linux.vbird.org/linux_basic/0220filemanager.php

目录与路径

相对路径与绝对路径

  • 绝对路径:路径的写法『一定由根目录/写起』,例如: /usr/share/doc这个目录。
  • 相对路径:路径的写法『不是由/写起』,例如由/usr/share/doc要到/usr/share/man底下时,可以写成: 『cd ../man』这就是相对路径的写法啦!相对路径意指『相对于目前工作目录的路径!』

特殊目录

image.png

$PATH

image.png

目录处理指令

image.png

  • cd (change directory, 变换目录) | [dmtsai@study ~]$ su - #先切换身份成为root看看!
    [root@study ~]# cd [相对路径或绝对路径]
    #最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!
    [root@study ~]# cd ~dmtsai
    #代表去到dmtsai这个使用者的家目录,亦即/home/dmtsai
    [root@study dmtsai]# cd ~
    #表示回到自己的家目录,亦即是/ root这个目录
    [root@study ~]# cd
    #没有加上任何路径,也还是代表回到自己家目录的意思喔!
    [root@study ~]# cd ..
    #表示去到目前的上层目录,亦即是/root的上层目录的意思;
    [root@study /]# cd -
    #表示回到刚刚的那个目录,也就是/root啰~
    [root@study ~]# cd /var/spool/mail
    #这个就是绝对路径的写法!直接指定要去的完整路径名称!
    [root@study mail]# cd ../postfix
    # 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/postfix 就这样写! | | —- |

文件与目录的管理指令

列出文件与目录(ls)

image.png

[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 等等)列出来;
-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)

cp(复制)

image.png

[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 等也复制了。
最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行!

复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大。


rm (移除文件或目录)

image.png

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

mv (移动档案与目录,或更名)

image.png

文件内容查询

直接查询

image.png

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

  • nl (添加行号打印) | [root@study ~]# nl [-bnw]档案
    选项与参数:
    -b :指定行号指定的方式,主要有两种:
    -ba :表示不论是否为空行,也同样列出行号(类似cat -n);
    -bt :如果有空行,空的那一行不要列出行号(预设值);
    -n :列出行号表示的方法,主要有三种:
    -n ln :行号在萤幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加0 ;
    -n rz :行号在自己栏位的最右方显示,且加0 ;
    -w :行号栏位的占用的字元数。 | | —- |

可翻页查看

image.png

  • more (一页一页翻动)

    无法向前翻

在more 这个程序的运作过程中,你有几个按键可以按的:

  • 空白键(space):代表向下翻一页;
  • Enter:代表向下翻『一行』;
  • /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f:立刻显示出档名以及目前显示的行数;
  • q:代表立刻离开more ,不再显示该档案内容。
  • b 或[ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用。
  • less (一页一页翻动)

在less 里头可以拥有更多的『搜寻』功能喔:

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

数据截取

image.png

  • head (取出前面几行) | [root@study ~]# head [-n number] 文件
    选项与参数:
    -n :后面接数字,代表显示几行的意思 | | —- |
  • tail (取出后面几行) | [root@study ~]# tail [-n number] 文件
    选项与参数:
    -n :后面接数字,代表显示几行的意思
    -f :表示持续侦测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的侦测 | | —- |

非纯文本文件

我们上面提到的,都是在查阅纯文本文件的内容。那么万一我们想要查阅非文本文件,举例来说,例如 /usr/bin/passwd 这个可执行文件的内容时, 又该如何去读出信息呢?事实上,由于可执行文件通常是 binary file ,使用上头提到的指令来读取他的内容时, 确实会产生类似乱码的数据啊!那怎么办?没关系,我们可以利用 od 这个指令来读取喔!
image.png

[root@study ~]# od [-t TYPE] 文件
选项或参数:
-t :后面可以接各种『类型(TYPE)』的输出,例如:
a :利用预设的字元来输出;
c :使用ASCII 字元来输出
d[size] :利用十进位(decimal)来输出资料,每个整数占用size bytes ;
f[size] :利用浮点数值(floating)来输出资料,每个数占用size bytes ;
o[size] :利用八进位(octal)来输出资料,每个整数占用size bytes ;
x[size] :利用十六进位(hexadecimal)来输出资料,每个整数占用size bytes ;

touch (修改文件时间/创建新文件)

image.png

  • 时间参数
    • modification time (mtime):当该档案的『内容资料』变更时,就会更新这个时间!内容资料指的是档案的内容,而不是档案的属性或权限喔!
    • status time (ctime):当该档案的『状态(status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。
    • access time (atime):当『该档案的内容被取用』时,就会更新这个读取时间(access)。举例来说,我们使用cat去读取/etc/man_db.conf ,就会更新该档案的atime了。

例子:

[root@study ~]# date; ls -l /etc/man_db.conf ; ls -l —time=atime /etc/man_db.conf ; \
> ls -l —time=ctime /etc/man_db.conf #这两行其实是同一行喔!用分号隔开
Tue Jun 16 00:43:17 CST 2015 #目前的时间啊!
-rw-r—r—. 1 root root 5171 Jun 10 2014 /etc/man_db.conf #在2014/06/10建立的内容(mtime)
-rw-r—r—. 1 root root 5171 Jun 15 23:46 /etc/man_db.conf #在2015/06/15读取过内容(atime)
-rw-r—r—. 1 root root 5171 May 4 17:54 /etc/man_db.conf #在2015/05/04更新过状态(ctime)
#为了要让资料输出比较好看,所以鸟哥将三个指令同时依序执行,三个指令中间用分号(;)隔开即可。
  • touch(用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

touch指令最常被使用的情况:

  • 建立一个空的档案;
  • 将某个档案日期修订为目前(mtime 与atime)

**
档案的时间是很重要的,因为,如果档案的时间误判的话,可能会造成某些程式无法顺利的运作。OK!那么万一我发现了一个档案来自未来,该如何让该档案的时间变成『现在』的时刻呢?很简单啊!就用『touch』这个指令即可!

嘿嘿!不要怀疑系统时间会『来自未来』喔!很多时候会有这个问题的!举例来说在安装过后系统时间可能会被改变!因为台湾时区在国际标准时间『格林威治时间, GMT』的右边,所以会比较早看到阳光,也就是说,台湾时间比GMT时间快了八小时!如果安装行为不当,我们的系统可能会有八小时快转,你的档案就有可能来自八小时后了。

至于某些情况下,由于BIOS的设定错误,导致系统时间跑到未来时间,并且你又建立了某些档案。等你将时间改回正确的时间时,该档案不就变成来自未来了?^_^

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

指令与文件的搜索

指令的文件名的搜索(which)

image.png

文件文件名的搜索

whereis

image.png

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

locate / updatedb

image.png

[root@study ~]# locate [-ir] keyword 选项与参数:
-i :忽略大小写的差异;
-c :不输出档名,仅计算找到的档案数量
-l :仅输出几行的意思,例如输出五行则是-l 5
-S :输出locate 所使用的资料库档案的相关资讯,包括该资料库纪录的档案/目录数量等
-r :后面可接正规表示法的显示方式

  • updatedb:根据/etc/updatedb.conf 的设定去搜寻系统硬碟内的档名,并更新/var/lib/mlocate 内的资料库档案;
  • locate:依据/var/lib/mlocate 内的资料库记载,找出使用者输入的关键字档名。

find

  1. 与时间相关

image.png

[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 还要新的档案档名
  1. 与user/group/others相关

image.png
**

  1. 与文件权限和名称相关

image.png
**

额外动作

image.png