一. 目录与路径
1.相对路径与绝对路经
- 绝对路径:
一定要从根目录写起,例如:/zt_xavier/code/text2
- 相对路径:
不是由整个路径写起,而是当在同一目录下进行切换时例如:从/zt_xavier/code/text2
到/zt_xavier/code/text1
可以简写为cd ../text1
*目录的相关操作
在此我们需要了解几个常见的命令:
-
cd : 切换目录
-
pwd : 显示当前目录
-
mkdir : 建立一个新目录
-
rmdir : 删除一个*空目录
cd (change directory) 切换目录
1.一般用法:
-
直接敲
cd
会到自己的家目录下 -
该
cd -
命令会返回上一次的操作的路径下:
在从~/code/text2
转到~/
路径下使用cd命令又回到了*上一次 最初的路径下
-
cd /file
切换到当前目录中 -
cd ~/file
指的是在 file 所属的家目录下查找并进入code文件夹
pwd (显示所在的目录)
1.一般用法:
pwd
显示出当前工作目录:
pwd -P
显示出真正的路径,而非使用链接路径(对于连接文件而言)
从上图就可以看出其真实的路径为home/zt_xavier/zt/dd
而不是链接文件的路径
mkdir (建立新的目录)
1.一般用法:
mkdir file
建立一个目录file
以下还有两个参数:
-m | 在创建目录时,可以直接设置文件权限 |
-p | 可以递归创建所需要的目录 |
举例说明两个参数的具体使用:
-
-m参数:
在设置了权限后我们可以看到
权限已经设置成了我们所需要的 -
-p参数:
使用参数后我们可以直接递归创建目录以及目录下的子目录
通过我们一步步的cd查看发现已经创建成功了
rmdir (删除 “空” 的目录)
1.一般用法:
rmdir file
删除一个空的目录(非空不能被删除)
当使用rmdir -p file
命令时会连同上层“空”的目录一起删除
刚刚我们创建了gp/fm/ls
目录
我们发现在用参数后该目录已经被全部删除
- 如果想将该目录下所有的文件全部删除,可以使用
rm -r file
一般情况下我们要慎用。
执行文件路径的变量:$PATH
我们在使用 ls 时为什么在任何地方下都可以成功,因为我们在使用时系统会在指定的路径下寻找该命令,这便是环境变量PATH的帮助所致。
在输入指令后,我们发现出现了一串目录,这些目录由 “:” 隔开,之所以在任何地方都能执行 ls 命令是因为都会在/user/bin
下找到与之链接的 ls
2.文件与目录管理
文件与目录查看 ls
1.一般用法:ls
查看文件名或目录名称
2.选项与参数
参数 | 功能 |
---|---|
-a | 显示全部的文件以及隐藏文件(开头为.的文件) |
-A | 显示全部文件和隐藏文件(不包括开头为.或.的文件) |
-d | 列出目录本身而不是列出目录内的文件数据(常用) |
-f | 直接列出结果,而不进行排序 |
-F | 根据文件,目录等信息,给予附加数据结构 |
-h | 将文件容量以人类较容易的方式列出来 |
-i | 列出inode号码 |
-l | 详细信息显示,包含文件的属性与权限等数据(常用) |
-n | 列出 UID 与 GID 而非使用者与用户组的名称 |
-r | 将序列结果反向输出 |
-R | 递归输出,连同子目录内容一起列出来,包括该目录下的所有文件都显示出来 |
-S | 以文件容量大小排序,而不是用文件名排序 |
-t | 根据时间排序,而不是用文件名排序 |
–color=never | 不要依据文件特性给予颜色显示 |
–color=always | 显示颜色 |
–color=auto | 让系统自行依据设置来判断是否给予颜色 |
–full-time | 以完整的时间模式输出 |
-time={atime,ctime} | 输出access时间或改变权限属性时间(ctime),而非内容修改时间 |
cp (复制文件或目录)
1.一般用法:
cp /file1/source1 /file2/source2
将file1目录下的source1复制到file2中(一般我们复制时常在root权限下进行)
2.用法提示:
当我们使用 cp 命令去复制一个文件时,就cp /file/ss /file2/dd
而言若file2目录下没有 ss 则会将 ss 复制过去并改名为 dd,如果有 dd 存在则将 ss 中的内容全部复制到 dd 下.
如下图,将路径下file1/ss/ADW
ADW这个文件复制到file2
目录中可以看到文件 ADW 改名为 dd
3.选项和参数:
参数 | 功能 |
---|---|
-a | 类似 -pdr 的意思参数pdr分别为:保留权限,复制软链接本身,递归复制 |
-d | 若原文件为链接文件的属性,则复制链接文件而非文件本身 |
-f | 为强制(force)的意思,若目标文件存在且无法开启,则删除后在试一次 |
-i | 若目标文件已经存在时,在覆盖是会先询问操作的进行 |
-l | 进行硬链接(hard link)的链接文件建立,而非复制文件本身 |
-p | 连同文件的属性(权限,用户,时间)一起复制过去,而非使用默认属性 |
-r | 递归复制,用于目录的复制操作 |
-s | 复制成为符号链接文件,称”快捷方式“ |
-u | 目标文件比源文件旧时才更新目标文件,或目标文件不存在的情况下才复制 |
rm (删除文件或目录)
1.一般用法:
rm file
删除文件或目录
2.参数和选项:
参数 | 功能 |
---|---|
-f | force强制删除,忽略不存在的文件,不会出现警告信息 |
-I | 交互模式,在删除时会有提示操作 |
-r | 递归删除,常用于目录的删除,这是很危险的选项 |
这里需注意的的是如果有一个以 ”-“ 开头的文件一般不要用 rm -file-
,可以用这两种2rm -- -file-
或rm ./-file-
以防止系统误判
mv (移动文件与目录,或重命名(剪切))
1.一般用法:
-
mv flie destination
将文件移动到目标文件中 -
mv text text2
将 text 重命名为 text2 -
注意
mv file1 file2 text
若有多个源文件或目录,最后一个一定是目录
2.参数和选项
参数 | 功能 |
---|---|
-f | force强制,如果目标文件存在,不会询问,直接覆盖 |
-i | 如果目标文件存在,询问是否直接覆盖 |
-u | 若目标文件已经存在,且source比较新,才会更新 |
获取路径的文件名与目录名称
命令有:
-
basename /file1/file2/file3
最后获取的是 “file3” -
dirname /file1/file2/file3
最后获取的是"file3"的(路径)目录名"/file1/file2"
3.文件内容查看
cat (concatenate) 与 tac (反向列示)
1.一般用法:
-
cat text
从第一行来查看text的内容 -
tac text
从最后一行来查看text的内容
2.参数和选项
参数 | 功能 |
---|---|
-A | 相当于 -vET 的组合选项 |
-b | 列出行号,仅针对非空白行做行号显示,空白行不标行号 |
-E | 将结尾的换行符$显示出来 |
-n | 打印出行号,连同空白行也会有行号,与 -b 有差别 |
-T | 将tab按键以 ^I 显示出来 |
-v | 列出一些看不出来的特殊字符 |
nl (添加行号打印)
1.一般用法:nl file
2.参数和选项:
参数 | 功能 |
---|---|
-b a | 表示不论是否为空行,也同样列出行号(cat -n) |
-b t | 如果有空行,空行不显示列标 |
-n ln | 行号在屏幕的最左方显示 |
-n rn | 行号在自己栏位的最右方显示,且不加0 |
-n rz | 行号在自己栏位的最右方显示,加0 |
-w | 行号栏位的占用的字符数 |
(concatenate)
1.一般用法:cat
more 与 less (可翻页查看)
1.一般用法:
more file
less file
显示出文件内容- 两者区别:
less的用法比more更加人性化,more只可向前翻页,而less既可以向前翻页也可以向后翻页
2.具体操作:
- more
命令键 | 功能 |
---|---|
space(空格) | 下一行翻页 |
Enter | 下翻一行 |
/字符串 | 代表在这个显示的内容中,向下查找字符串这个关键词 |
f | 立即显示出文件名以及目前显示的行数 |
q | 退出并不再显示文件内容 |
b 或 ctrl-b | 返回前页,只对文件有用,对管道无用 |
- less
命令键 | 功能 |
---|---|
space(空格) | 下一行翻页 |
pagedown | 下翻一页 |
pageup | 上翻一页 |
/字符串 | 向下查找字符串这个关键词 |
?字符串 | 向上查找字符串这个关键词 |
n | 重复前一个查找(与/或?有关) |
N | 反向的重复前一个查找(与/或?有关) |
g | 前进到这个数据的第一行 |
q | 退出程序 |
G | 前进到这个数据的最后一行 |
head 与 tail(数据截取)
1.一般用法:
head file
取出文件内容前面几行head -n num file
取出文件前num行tail file
取出文件内容后面几行tail -n num file
取出文件后num行tail -f file
表示持续刷新后面文件所接的内容(当有数据持续写入时(例如日志)可以一直持续显示)按下ctrl-c结束
非纯文本文件 od
1.一般用法:
od file
读取非纯文本文件
2.选项和参数:
参数 | 功能 |
---|---|
-t a | 相当于 -vET 的组合选项 |
-t c | 列出行号,仅针对非空白行做行号显示,空白行不标行号 |
-t d[size] | 利用十进制来输出数据,每个整数占用size Bytes |
-t f[size] | 利用浮点数值来输出数据,每个整数占用size Bytes |
-t o[size] | 利用八进制来输出数据,每个整数占用size Bytes |
-t x[size] | 利用十六进制来输出数据,每个整数占用size Bytes |
修改文件时间或创建新文件 touch
我们先了解三个时间意义:
- 修改时间(modification time,mtime):当该文件的【内容数据】变更时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限
- 状态时间(status time,ctime):当文件的状态改变时,就会更新的这个时间,就如文件权限与属性被更改了都会更新这个时间
- 读取时间(access time,atime):当该文件内容被读取时,就会更新这个时间,例如我们用cat去读取文件时它的读取时间就会改变
1.一般用法:
touch file
如果该文件不存在,就创建一个file文件,否则,更新该文件的
ls -l 显示的是文件或目录的mtime,当我touch文件或目录时一般改变的是其atime与mtime,ctime一般不会改变
2.参数和选项:
参数 | 功能 |
---|---|
-a | 仅自定义access time |
-d | 后面可以接欲自定义的时间而不用目前的日期,也可以用”2 days ago“日期或时间 |
-c | 修改文件的时间,若文件不存在则不建立新文件 |
-m | 仅修改mtime |
-t | 后面可以接欲自定义的时间而不用目前的日期,格式为YYYYMMDDhhmm |
这里我们发现mm这个目录属性时间创建后没有变化,当touch后则会与当前时间相同