Linux目录和文件中的常用命令(三)
摘要 2.10 环境变量PATH2.11 cp命令2.12 mv命令2.13 文档查看cat/more/less/head/tail
一 环境变量PATH
1.基本的环境变量
基本的环境变量有5个,分别是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
![](https://img.haomeiwen.com/i9611872/9b572f24f81da761.png)
例如,使用which命令查询的环境变量路径就是来自环境变量,查询时,就是从这几个目录下查,因此速度较快
![](https://img.haomeiwen.com/i9611872/66570084e65b1270.png)
其实,真正使用一个命令的时候应当使用绝对路径,命令也是一个文件
2.将一个命令复制一份到其他路径
![](https://img.haomeiwen.com/i9611872/2fc186b9ab9563c5.png)
上图中,我将ls命令复制了一份到/tmp/ls02,当我使用/tmp/ls02时,命令有效,且与ls效果相同,但当我直接使用ls02命令时无效,原因是ls02并没有在5个基本环境变量目录里面,如果我需要使用ls02这个命令,那么就需要将环境变量改掉。
3.给PATH增加新的值
使用公式PATH=$PATH:【待新增的目录值】
![](https://img.haomeiwen.com/i9611872/1cd54e763c0e9fbf.png)
使用上述方法更改后,PATH只能临时生效
4.使修改后的PATH永久有效
使用命令编辑配置文件/etc/profile,在文件末尾加上PATH=$PATH:/tmp/这个命令,如下:
# vi /etc/profile
按下i键,使用向下按键到文件末尾,添加一行命令
PATH=$PATH:/tmp/
5.给PATH删除新增的值
直接给PATH赋值,同时删除/etc/profile文件末尾的设置
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
![](https://img.haomeiwen.com/i9611872/3e0359b08a5be7bf.png)
![](https://img.haomeiwen.com/i9611872/aa5b3fe50f161549.png)
小技巧:在编辑文件时,可以不用进入编辑模式,直接连续点击2次【d】,即可删除当前行。
二 cp命令
copy拷贝
1.拷贝文件
# cp 【源文件】 【目标文件】
![](https://img.haomeiwen.com/i9611872/ff512dce209a44c4.png)
2.拷贝目录
# cp -r 【源目录】 【目标目录】
执行命令前的目录结构
![](https://img.haomeiwen.com/i9611872/e5605d0a95a99016.png)
执行拷贝目录命令后的目录结构:
![](https://img.haomeiwen.com/i9611872/82dd0f291ddf6453.png)
注意点:1)拷贝目录需要加-r
2)!$ 表示上一条命令的最后一个参数
3) alias cp='cp -i'中的-i表示执行此命令时要提示是否覆盖***,-i其实是一个安全选项
4) /usr/bin/cp ** ** :直接执行此复制命令时就不会提示是否覆盖
5)cp -r ** **:当目标目录已经存在的时候,它会把源目录放到目标目录下;当目标目录不存在时,它会把源目录拷贝过来并改个名字
执行命令前目录结构:
![](https://img.haomeiwen.com/i9611872/bd828c5dbfbc8730.png)
执行命令后目录结构:
![](https://img.haomeiwen.com/i9611872/3f0f89d9caf3deb3.png)
6)如果目标目录下已经存在一个子目录名跟源目录一样,那么会提示是否覆盖
执行命令前目录结构:
![](https://img.haomeiwen.com/i9611872/f86715e889914b2b.png)
执行命令时提示:
![](https://img.haomeiwen.com/i9611872/8857f1ce50d54dcb.png)
三 mv命令
mv :move移动文件,
1.使用mv命令改文件名
# mv 【源文件】 【目标文件】
如果在同一个目录下,相当于改文件名
![](https://img.haomeiwen.com/i9611872/a1a95448d5952737.png)
2.移动并改名
适用于目标文件所在目录不同于源文件所在目录
![](https://img.haomeiwen.com/i9611872/c617d8976587cc2b.png)
3.源文件名与目标文件名相同时
当源文件名与目标文件名相同时,系统会提示是否覆盖,因为mv命令下面有-i选项,如果不想提示,请使用目录命令,不要使用别名
移动前:
![](https://img.haomeiwen.com/i9611872/d80b29c0ccf41e7f.png)
移动后:
![](https://img.haomeiwen.com/i9611872/1f6e18ff6e303b0a.png)
4.移动目录
# mv 【源目录】 【目标目录】
1)给目录改名字
当目标目录不存在时,相当于改名字
目录移动前:
![](https://img.haomeiwen.com/i9611872/3b7a15056534efc3.png)
目录移动后:
![](https://img.haomeiwen.com/i9611872/02be46f70faa7195.png)
2)当目标目录存在时
当目标目录存在时,执行此命令后会将源目录放到目标目录下面去,这一点和cp是一样的
执行命令前:
![](https://img.haomeiwen.com/i9611872/0ec916600bd890c4.png)
执行命令后:
![](https://img.haomeiwen.com/i9611872/7b59023e069b0af5.png)
如果目标目录的子目录中存在与源目录名相同的子目录,则系统会提示是否覆盖
四 文档查看
1.# cat 【文件名】
查看文件内容
2.# tac 【文件名】
倒序查看文件内容
3.cat的选项
# cat -A 【文件名】:显示所有文档内容
$ 表示行尾结束符
# cat -n 【文件名】 :-n表示显示行号
4.# more 【文件名】
也是查看文档内容,但不是如cat一样一下子全部显示出来,他是一屏一屏地显示
![](https://img.haomeiwen.com/i9611872/ae7f2e06751e15e7.png)
可以按空格键来显示下一屏,ctrl+b(background向后)查看前一屏
# wc -l 【文件名】:可以查看某个文件的行数
![](https://img.haomeiwen.com/i9611872/ed9a2c0f8acfd9a1.png)
cat /etc/passwd >> anaconda-ks.cfg.1 :将前面文档的内容追加到后面文档中去
5.# less 【文件名】
less:也是查看文档内容,也支持空格键和ctrl+b键,同时,还支持ctrl+f(foreground向前)查看下一屏、上下方向键来一行一行地上下翻动;但是当文档内容结束时不会像more一样自动退出来,需要按q键退出
使用less命令查看文档内容时:可以在冒号后输入/***来查询***所在的位置,同时,如果有多个***这样的字符串,可以使用n(next)下一个或shift+n(上一个);
![](https://img.haomeiwen.com/i9611872/e803fe2a8ab6d898.png)
在上面表述中的/表示从前往后搜索,如果想要从后往前搜索,需要使用? 此时也可使用n 和 N(shift+n),同时g和G(shift+g)表示定位到行首和行尾;
![](https://img.haomeiwen.com/i9611872/f8e05cb530d723a4.png)
5.# head 【文件名】
查看文件的头十行
6.# tail 【文件名】
查看文件的末尾十行
7.# head -n 2 【文件名】
查看文件的头2行
8.# tail -n 2 【文件名】
查看文件的末尾2行
9.# tail -f【文件名】
动态地显示此文件的内容,看日志的时候会用到