Linux文件与目录操作

(整理自《鸟哥的Linux私房菜》书籍)

1.目录与路径

1.1目录的相关操作

先介绍几个比较特殊的目录:

 

 需要特别注意的是:在所有目录底下都会存在的两个目录,分别是『.』与『..』 分别代表此层与上层目录的意思。

几个常见的处理目录的指令:

•        cd:变换目录

•        pwd:显示当前目录

•        mkdir:建立一个新的目录

•        rmdir:删除一个空的目录

 

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

PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)来隔开, 每个目录是有『顺序』之分的。它类似我们windows系统中的环境变量的意思。

•        不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同(如 root 与 dmtsai);

•        PATH 是可以修改的;

•        使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻 PATH 来的正确;

•        指令应该要放置到正确的目录下,执行才会比较方便;

•        本目录(.)最好不要放到 PATH 当中。

 

2.文件与目录管理

2.1文件与目录的查看:ls

当你下达 仅仅【ls】这么一个命令 时,默认显示的只有:非隐藏档的档名、 以档名进行排序及文件名代表的颜色显示。

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

1cp

复制(cp)指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p 的选项,大家可以通过man指令去查看一下。

在复制时,你必须要清楚的了解到:

•        是否需要完整的保留来源文件的信息?

•        来源文件是否为连结档 (symbolic link file)?

•        来源档是否为特殊的文件,例如 FIFO, socket 等?

•        来源文件是否为目录?

2rm

这是移除的指令(remove),要注意的是,通常在 Linux 系统下,为了怕文件被 root 误杀,所以很多 distributions 都已经默认加入 -i 这个选项了!而如果要连目录下的东西都一起杀掉的话, 例如子目录里面还有子目录时,那就要使用 -r 这个选项了!不过,使用『 rm -r 』这个指令之前,请千万注意了,因为该目录或文件『肯定』会被 root 杀掉。不过,如果你确定该目录不要了,那么使用 rm -r 来循环杀掉是不错的方式。

3mv

 这是移动文件的指令。

 

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

取得文件名或者是目录名称,一般的用途应该是在写程序的时候用来判断之用。

 

2.4文件内容查看

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

 cat 是 Concatenate (连续) 的简写, 主要的功能是将一个文件的内容连续的印出在屏幕上面!例如上面的例子中,我们将 /etc/issue 印出来!如果加上-n 或 -b 的话,则每一行前面还会加上行号。不过一般不建议使用,毕竟当你的文件内容的行数超过 40 行以上,根本来不及在屏幕上看到结果。

(2)tac :从最后一行开始显示,可以看出 tac 是 cat 的倒着写

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

nl 可以将输出的文件内容自动的加上行号!其预设的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

(4)more:一页一页的显示文件内容

使用more之后,有几个按键可以操作:

•        空格键 (space):代表向下翻一页;

•        Enter :代表向下翻『一行』;

•        /字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;

•        :f  :立刻显示出文件名以及目前显示的行数;

•        q:代表立刻离开 more ,不再显示该文件内容。

•        b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

要离开 more 这个指令的显示工作,可以按下 q 就能够离开了。而要向下翻页,就使用空格键即可。

(5)less :与 more 类似,但是比 more 更好的是,他可以往前翻页

less 的用法比起 more 又更加的有弹性,在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。

除此之外,在 less 里头可以拥有更多的『搜寻』功能!不止可以向下搜寻,也可以向上搜寻。

基本上,可以输入的指令有:

•        空格键    :向下翻动一页;

•        [pagedown]:向下翻动一页;

•        [pageup]  :向上翻动一页;

•        /字符串     :向下搜寻『字符串』的功能;

•        ?字符串     :向上搜寻『字符串』的功能;

•        n         :重复前一个搜寻 (与 / 或 ? 有关!)

•        N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)

•        g         :前进到这个资料的第一行去;

•        G         :前进到这个数据的最后一行去 (注意大小写);

•        q         :离开 less 这个程序;

(6)head :只看头几行

若没有加上 -n 这个选项时,默认只显示十行,若只要一行那就加入『 head -n 1 filename 』即可!另外那个 -n 选项后面的参数如果接的是负数,例如上面范例的-n -100 时,代表列前的所有行数, 但不包括后面 100 行。

(7)tail :只看尾巴几行

这个 tail 的用法跟 head 的用法差不多类似,只是显示的是后面几行。默认也是显示十行,若要显示非十行,就加 -n number 的选项即可。当下达『tail -n +100 /etc/man_db.conf』代表该文件从 100 行以后都会被列出来。

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

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

 利用这个指令,可以将 data file 或者是 binary file 的内容数据给他读出来。 虽然读出的来数值预设是使用非文本文件,亦即是 16 进位的数值来显示的, 不过,我们还是可以透过 -t c 的选项与参数来将数据内的字符以 ASCII 类型的字符来显示。

 

2.5修改文件时间和创建新文件:touch

每个文件在 linux 底下都会记录许多的时间参数, 其实是有三个主要的变动时间:

•        modification time (mtime)

当该文件的『内容数据』变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!

•        status time (ctime)

当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。 

•        access time (atime)

当『该文件的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取/etc/man_db.conf , 就会更新该文件的 atime 了。

 

在默认的情况下,ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。

猜你喜欢

转载自www.cnblogs.com/ericz2j/p/12044452.html