Linux笔记 (7)

Linux笔记 (7)

标签(空格分隔): Linux


文件与目录管理

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

(1)cp 复制文件或目录

  • cp [-adfilprsu] 来源文件(source) 目标文件(destination)
  • cp [options] source1 source2 source3...directory
选项 参数
-a -dr --preserve=all
-d 若source属性为link file,则复制link file属性而非文件本身
-f 为强制(force)的意思,若目标文件已存在且无法开放,则移除后再尝试一次
-i 若目标文件已经存在时,在覆盖时先询问动作的进行
-l 进行hard link的link file建立,而非复制文件本身
-p 连同文件的属性(权限、用户、时间)一起复制过去,而非使用预设属性
-r 用于目录的复制
-s 复制成为symbolic link,即捷径档案
-u destination比source旧才更新destination,或destination不存在的情况下才复制
  • --preserve=all:除了-p的权限相关参数外,还加入SELinux属性,links,xattr等也复制了。
  • 若来源文件有两个以上,则最后一个目标文件一定要是目录才行。
  • 在预设的条件中,cp的来源文件与目标文件的权限是不同的,目标文件的拥有者通常是指令操作者本身。

(2)rm移除文件或目录

  • rm [-fir] 文件或目录
选项 参数
-f force,忽略不存在的文件,不会出现警告讯息
-i 互动模式,在删除前会询问使用者时是否动作
-r 常用在目录的删除,将目录下的所有文件包括子目录全部删掉
  • root身份预设已经加入了-i的选项。
  • 在指令前加反斜线\,可以忽略掉alias的指定选项。
  • 【touch】建立空文件。
  • 删除带-的文件时,需要rm ./-filename,即加上本目录。

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

  • mv[-fiu] source destination
  • mv [options] source1 source2 source3 ... directory
选项 参数
-f force,如果目标文件已经存在,不会询问而是直接覆盖
-i 若目标文件已经存在时,就会询问是否覆盖
-u 若目标文件已经存在,且source比较新,才会更新
  • 另一个更名指令【rename】。专门进行多个文件的同时更名。
  • 移动:mv bashrc mvtest;更名:mv mvtest mvtest2。
  • 如果有多个source或目录,则最后一个目标一定是目录。

2.取得路径的文件名称和目录名称

  • 每个文件的完整文件名包含了前面的目录与最终的文件名

(1)basename取最后的文件名

  • basename /etc/sysconfig/network
    network

(2)dirname取目录名

  • dirname /etc/sysconfig/network
    /etc/sysconfig/

3.文件内容查阅

指令 用途
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出tac是cat的倒写
nl 显示的时候,顺便输出行号
more 一页一页的显示文件内容
less 与more类似,但是比more更好的是,它可以往前翻页
head 只看头几行
tail 只看末尾几行
od 以二进位的方式读取档案内容

3.1 直接检视文件内容

(1)cat(concatenate,连续)

  • cat [-AbEnTv]
选项 参数
-A 相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
-b 列出行号,仅针对非空白行做出行号显示,空白行不标行号
-E 将结尾的断行字元$表示出来。
-n 列出行号,连同空白行也会有行号,与-b的选项不同
-T 将[Tab]按键显示为^,因为Tab和空白的效果差不多,易于分辨
-v 列出一些看不出来的字符

(2)tac(反向列示)

(3)nl(添加行号打印)

  • nl [-bnw] 文件
选项 参数
-b 指定行号指定的方式,主要有两种:
-b a 表示不论是否为空行,也同样列出行号,类似(cat -n);
-b t 如果有空行,空的那一行不要列出行号(预设值)
-n 列出行号表示的方法,主要有三种:
-n ln 行号在屏幕的最左方显示;
-n rn 行号在栏位的最右方显示,且不加0;
-n rz 行号在栏位的最右方显示,且加0
-w 行号栏位占用的字元数
  • [nl -b a -n rz -w 3 filename]
  • 列出所有行号,包括空行;
  • 行号前面补0;
  • 预设栏位是六位数000001,-w 3变成三位数001。

3.2 可翻页检视

(4)more(一页一页翻动)

按键 指令
空白键 向下翻一页
Enter 向下翻一行
/字串 在这个显示的内容当中,向下搜寻【字串】这个关键字
:f 立即显示出文件名以及目前显示的行数
q 立即离开more,不再显示该文件内容
b或[Ctrl]+b 往回翻页,这动作只对文件有用,对管线无用

(5)less(一页一页翻动)

按键 指令
空白键 向下翻一页
【PGDN】 向下翻一页
【PGUP】 向上翻一页
/字串 向下搜寻【字串】
?字串 向上搜寻【字串】
n 重复前一个搜寻
N 反向的重复前一个搜寻
g 前进到文件内容的第一行
G 前进到文件内容的最后一行
q 离开less

3.3 资料截取

(6)head(取出前面几行)

  • head [-n number] 文件
  • number代表几行的意思。
  • 预设只显示十行。
  • [head -n -100 filename] 后一百行不显示。
  • [head -n 1 filename] 只显示一行。

(7)tail(取出后面几行)

  • tail [-n number] 文件
  • -n 后面接数字,代表显示几行。
  • -f 表示持续侦测后面所接的文件内容,一有新信息就会显示在屏幕上,要等按下Ctrl+c才会结束。
  • 预设显示最后十行。
  • [tail -n +100 filename] 显示100行以后的文件内容。
  • [cat -n filename | head -n 20 | tail -n 10] 打印行号,取前20行,再取后十行,显示第11-20行。(|)的意思是:前面指令所输出的信息,请通过|交给后面的指令继续使用。

3.4 非纯文字文件 : od

  • od [-t TYPE] 文件
    【-t】 后面可接各种类型的输出,例如:
选项 参数
a 利用预设的字元来输出
c 使用ASCII字元来输出
d[size] 利用十进制(decimal)来输出,每个整数占用 size bytes;
f[size] 利用浮点数值(floating)来输出,每个数占用 size bytes;
o[size] 利用八进制(octal)来输出,每个整数占用 size bytes;
x[size] 利用十六进制(hexadecimal)来输出,每个整数占用 size bytes;
  • [od -t oCc filename] 将文件内容以八进制列出存储值与ASCII的对照表。
  • [echo password | od -t oCc] echo可以在屏幕上显示任何资讯。可得到password的ASCII code对照表。

3.5 修改文件时间或建立新文件:touch

  • modification time(mtime):当该文件的内容(非属性或权限)变更时,就会更新这个时间。

  • status time(ctime):当该文件的状态(如属性或权限)变更时,就会更新这个时间。

  • access time(atime):当该文件的内容被取用时,就会更新这个读取时间。

  • 预设情况下,ls显示出来的是该文件的mtime,也就是这个文件的内容上次被更改的时间。

  • 三个指令中间用 ; 隔开即可同时依序执行。

  • touch [-acdmt] 文件

  • touch可修改文件的日期与时间,并且可以建立一个空文件。

选项 参数
-a 仅修订access time
-c 仅修改文件的时间,若该文件不存在则不建立新文件
-d 后面可以接欲修订的日期而不是用目前的日期,也可以使用 --date=“日期或时间”
-m 仅修改mtime
-t 后面可以接欲修订的时间而不用目前的时间。格式为【YYYYMMDDhhmm】
  • 预设情况下,若touch后面有接文件,则该文件的三个时间(atime,ctime,mtime)都更新为目前的时间。若该文件不存在,则会主动建立一个新文件。
  • 复制一个文件时,复制所有的属性,但是也没办法复制ctime这个属性。
posted @ 2018-04-24 23:30  Y_momo  阅读(48)  评论(0)    收藏  举报