环境变量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 是原本就存在的,发现系统会提示是否覆盖该文件。

cp命令

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

  • -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这个目录加入到环境变量中

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

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

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 就生效了。

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行(一般查看日志文件一类的使用)

猜你喜欢

转载自my.oschina.net/u/3731306/blog/1826042