环境变量PATH 、cp命令 、 mv命令 、文档查看cat/more/less/head/tail

mv命令

mv=move ,命令格式为:mv 参数 源文件或目录 目标文件或目录 该命令有以下几种状况 ,安全

  • 目标文件是目录,可是该目录不存在:这种状况会把源目录重命名为目标目录名
  • 目标文件是目录,且目录存在:会把源目录或文件移动到目标目录下
  • 目标文件是文件,但该文件不存在:会把源文件重命名为目标文件名,且移动到目标文件所在的目录。
  • 目标文件是文件,且文件存在:会询问是否用源文件将目标文件覆盖。
[root@localhost lic]# mkdir /tmp/test_mv 
[root@localhost lic]# cd /tmp/test_mv/
[root@localhost test_mv]# mkdir 1 2
[root@localhost test_mv]# mv 1 3
[root@localhost test_mv]# tree 
.
├── 2
└── 3

2 directories, 0 files
[root@localhost test_mv]# mv 2 3
[root@localhost test_mv]# tree
.
└── 3
    └── 2

2 directories, 0 files
[root@localhost test_mv]# touch 3/1.txt 3/2/2.txt
[root@localhost test_mv]# tree
.
└── 3
    ├── 1.txt
    └── 2
        └── 2.txt

2 directories, 2 files
[root@localhost test_mv]# mv 3/1.txt 4.txt
[root@localhost test_mv]# tree
.
├── 3
│   └── 2
│       └── 2.txt
└── 4.txt

2 directories, 2 files
[root@localhost test_mv]# mv 4.txt 3/2/2.txt 
mv:是否覆盖"3/2/2.txt"? y
[root@localhost test_mv]# tree 
.
└── 3
    └── 2
        └── 2.txt

2 directories, 1 file

如上图所示,第一条命令是建立了一个测试用的目录,这样作是为了保持文件和目录的简洁,随后在/tmp/test_mv 目录下建立了1 和2 两个目录,执行mv 1 3 结果能够看到是将1目录重命名为3目录。执行mv 2 3 结果是将2目录移动到了已存在的3目录当中。而后又建立了两个文件3/1.txt 和3/2/2.txt ,执行mv 3/1.txt 4.txt 能够看到本来4.txt 是不存在的,执行完以后发现将3/1.txt 移动到了当先目录/tmp/test_mv 下并重命名为4.txt ,最后一条指令 mv 4.txt 3/2/2txt ,3/2/2.txt 是本来就存在的,发现系统会提示是否覆盖该文件。bash

cp命令

cp=copy 该命令用于复制,其参数以下less

  • -r 若是要复制一个目录,必须使用该参数,不然不能复制
[root@localhost test_mv]# cp 3/2 3/4
cp: 略过目录"3/2"
[root@localhost test_mv]# tree
.
└── 3
    └── 2
        └── 2.txt

2 directories, 1 file
[root@localhost test_mv]# cp -r 3/2 3/4
[root@localhost test_mv]# tree
.
└── 3
    ├── 2
    │   └── 2.txt
    └── 4
        └── 2.txt
  • -i 这是安全选项,若是遇到一个已存在的文件,会询问是否覆盖
[root@localhost test_mv]# cp -i 3/2/2.txt 3/4/2.txt 
cp:是否覆盖"3/4/2.txt"?

环境变量PATH

前面提到过which命令能够查看命令的绝对路径和别名,理论上当咱们使用命令时须要敲命令的绝对路径,可是咱们每每直接敲出来命令就能够直接执行,这就是环境变量在起做用,测试

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

能够看到,咱们使用的命令都是在上面所示的目录里面,若是咱们把ls命令移动到其余目录里,ls就不能直接运行了,而使用ls的绝对路径就能够执行。日志

[root@localhost ~]# mv /usr/bin/ls /tmp
[root@localhost ~]# ls
-bash: ls: 未找到命令
[root@localhost ~]# /tmp/ls
anaconda-ks.cfg

如何直接运行ls呢?第一个办法就是把ls还原回去,还有就是讲/tmp这个目录加入到环境变量中code

[root@localhost ~]# PATH=$PATH:/tmp
[root@localhost ~]# ls
anaconda-ks.cfg

这是临时的改变环境变量,当咱们从新打开一个终端时发现ls又不能生效了ast

Last login: Thu Jun  7 23:27:22 2018 from 192.168.254.1
[root@localhost ~]# ls
-bash: ls: 未找到命令

若是要它永久生效,须要更改PATH的配置文件/etc/profile,在最后新加一行PATH=$PATH:/tmp 就生效了。test

cat命令

cat 、tac,more ,less ,head ,tail 这几个命令都是用来查看文件内容的。变量

  • cat -n ,查看文件时,会把行号也显示在屏幕上
  • cat -A 查看文件时,会显示全部的内容,包括特殊字符。

tac命令

tac命令跟cat命令几乎彻底同样,区别就是tac会将最后一行显示在第一行,第二行是倒数第二行.......配置

more 命令

more命令查看文件时 ,当一屏幕显示不下时,它会分屏显示,看完第一屏可使用Ctrl+f 向下翻屏(空格键也能够实现),也可使用Ctrl+D向上翻屏,若是想提早退出可使用q键。

less命令

less命令跟more相似,可是功能更多,按空格键能够向下翻屏,j 键能够向下移动,k 键能够向上移动,在使用more/less时能够按下/ 或?键,并输入一串字符,就能够在文本中查找该字符了,相似于Windows中Ctrl+f ,使用/是从光标所在行向下查找,按n键查找下一个。使用?键时是从光标所在行向上查找,按n键查找更上一个。

head 和tail 命令

head命令是查看文件内容的前10行,tail命令是查看文件内容的后10行,咱们也能够指定多少行 ,用法是head -n 指定前n行,tail -n 指定显示后n行。 若是文件在不断增长,可使用tail -f 命令来动态显示文件的末尾10行(通常查看日志文件一类的使用)

相关文章
相关标签/搜索