2.10环境变量PATH

2.10.1我们使用which的时候可以查一个命令的时候快速的查到也可以查到有没有别名。它是怎么快速的查到的。

[root@MOMOCO-02 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

【我们能快速的查到命令的路径其实我们就是在这几个目录查的,其实我们真正用的命令是在绝对路径里面的】

[root@MOMOCO-02 ~]# gyb

-bash: gyb: 未找到命令

【如果这些目录里面没有这些命令,他就会提示你没有找到命令】

[root@MOMOCO-02 ~]# which ls

alias ls='ls --color=auto'

/usr/bin/ls

[root@MOMOCO-02 ~]# cp /usr/bin/ls /tmp/ls1

【我们拷贝一份ls命令到tmp目录下】

[root@MOMOCO-02 ~]# /tmp/ls1

anaconda-ks.cfg

[root@MOMOCO-02 ~]# ls1

-bash: ls1: 未找到命令

[root@MOMOCO-02 ~]# ls

anaconda-ks.cfg

【当我们使用绝对路径运行拷贝的命令时我们可以使用效果和ls一样。当我们直接ls1时就会提示你没有找到命令,因为你的ls1别没有在你的环境变量目录里面。】

[root@MOMOCO-02 ~]# PATH=$PATH:/tmp

【我们可以把/tmp目录添加到PATH中】

[root@MOMOCO-02 ~]# !echo

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp

[root@MOMOCO-02 ~]# ls1

anaconda-ks.cfg

[root@MOMOCO-02 ~]# which ls1

/tmp/ls1

【可以看到我改成的红色的/tmp这说明我已经添加到里面去了,从上面的操作我们能看出来ls1生效了。】

Last login: Mon Dec 18 14:21:24 2017 from 192.168.38.1

[root@MOMOCO-02 ~]# ls1

-bash: ls1: 未找到命令

【当我们再打开一个终端的时候在运行ls1它就不生效了】

[root@MOMOCO-02 ~]# vi /etc/profile

【我们可配置文件让它永久生效,我们再最后面加上PATH=$PATH:/tmp这样每次启动终端的时候它都会加载这个命令,如果你不想要了可以进到配置文件把这个命令删除掉。你把光标定位到这个命令的首行然后敲键盘的dd就删除了。】


2.11 cp命令

2.11.1 cp 全称:copy

[root@MOMOCO-02 ~]# cp /etc/passwd /tmp/1.txt

cp:是否覆盖"/tmp/1.txt"? y

【拷贝一个文件,红色为源文件,蓝色为目标文件

[root@MOMOCO-02 ~]# cp /tmp/gyb01/ /tmp/gyb02

cp: 略过目录"/tmp/gyb01/"

[root@MOMOCO-02 ~]# touch /tmp/gyb01/2/1.txt

[root@MOMOCO-02 ~]# cp -r /tmp/gyb01/ /tmp/gyb02

【-r选项是拷贝一个目录,以后我们做个约定目录我们后面都要加根号,不加也不错。】

[root@MOMOCO-02 ~]# tree !$

/tmp/gyb02/

└── 2

    ├── 1.txt

    └── 3


2 directories, 1 file

【!$代表上一个命令的最后的一个选项以空格或tab键为分割,他的意思就是[root@MOMOCO-02 ~]# tree  /tmp/gyb02/

[root@MOMOCO-02 ~]# which cp

alias cp='cp -i'

/usr/bin/cp

【-i安全选项提示:如下。不想要提示可以使用绝对路径。】

[root@MOMOCO-02 ~]# cp /etc/passwd /tmp/1.txt 

cp:是否覆盖"/tmp/1.txt"?

[root@MOMOCO-02 ~]# cp -r /tmp/gyb01/ /tmp/gyb02/

[root@MOMOCO-02 ~]# tree /tmp/

/tmp/

├── 1.txt

├── gyb01

│   └── 2

│       ├── 1.txt

│       └── 3

├── gyb02

    ├── 2

    │   ├── 1.txt

    │   └── 3

    └── gyb01

        └── 2

            ├── 1.txt

            └── 3


16 directories, 4 files

[root@MOMOCO-02 ~]# cp -r /tmp/gyb01/ /tmp/gyb02/

cp:是否覆盖"/tmp/gyb02/gyb01/2/1.txt"? 

【可以看到我们这次步骤之前已经运行过了,当目标目录已经存在的时候我们再次运行这个命令他会把源目录拷贝目标目录下。我们再次运行他会询问你是否覆盖,以为gyb02下已经有gyb01了】



2.12 mv命令

2.12.1 mv全称:move

[root@MOMOCO-02 ~]# cd /tmp/

【切换目录】

[root@MOMOCO-02 tmp]# ls

1.txt  ls

gyb    systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-chronyd.service-tBl99U

gyb01  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vgauthd.service-MEvzYK

gyb02  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vmtoolsd.service-GKWJzB

[root@MOMOCO-02 tmp]# mv 1.txt /root/

【移动一个文件,红色为源文件,蓝色为目标目录】

[root@MOMOCO-02 tmp]# ls /root/

1.txt  anaconda-ks.cfg

[root@MOMOCO-02 tmp]# mv ls gyb/

[root@MOMOCO-02 tmp]# ls

gyb    systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-chronyd.service-tBl99U

gyb01  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vgauthd.service-MEvzYK

gyb02  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vmtoolsd.service-GKWJzB

[root@MOMOCO-02 tmp]# touch ls

[root@MOMOCO-02 tmp]# mv ls gyb/

mv:是否覆盖"gyb/ls"? n

【当目标目录下已经有目标文件的时候他会提示你。因为mv有-i选项如下,不想提示就用绝对路径】

[root@MOMOCO-02 tmp]# which mv

alias mv='mv -i'

/usr/bin/mv


[root@MOMOCO-02 tmp]# mv gyb gyd

[root@MOMOCO-02 tmp]# ls

gyb01  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-chronyd.service-tBl99U

gyb02  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vgauthd.service-MEvzYK

gyd    systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vmtoolsd.service-GKWJzB

ls

【如果目标目录不存在他就会把源目录的名字改成目标目录的名字,也可以用来改文件的名字如下】

[root@MOMOCO-02 tmp]# mv ls ls1

[root@MOMOCO-02 tmp]# ls

gyb01  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-chronyd.service-tBl99U

gyb02  systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vgauthd.service-MEvzYK

gyd    systemd-private-52973ffabe3e4e15ae97f09bf182e3ac-vmtoolsd.service-GKWJzB

ls1


2.13文档查看cat-more-less-head-tail

2.13.1 cat

[root@MOMOCO-02 tmp]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

......

GYB:x:1000:1000::/home/GYB:/bin/bash

gyb:x:1001:1001::/home/gyb:/bin/bash

【cat是用来查看一个文档的命令,一下显示完,tac为倒叙查看一个文档:如下】

[root@MOMOCO-02 ~]# tac /etc/passwd

gyb:x:1001:1001::/home/gyb:/bin/bash

GYB:x:1000:1000::/home/GYB:/bin/bash

......

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

[root@MOMOCO-02 ~]# cat -n  /etc/passwd

     1root:x:0:0:root:/root:/bin/bash

     2bin:x:1:1:bin:/bin:/sbin/nologin

     3daemon:x:2:2:daemon:/sbin:/sbin/nologin

             ........

     20GYB:x:1000:1000::/home/GYB:/bin/bash

     21gyb:x:1001:1001::/home/gyb:/bin/bash

【-n选项会显示行号】

2.13.2 more

这也是一个查看文档的命令,格式:[root@MOMOCO-02 ~]# more anaconda-ks.cfg但是他不会一下子显示完,他是一屏幕一屏幕显示的,你可以按空格键向下翻页,如果你想往上看可以Ctrl+b。 

[root@MOMOCO-02 ~]# wc anaconda-ks.cfg 

  51  139 1418 anaconda-ks.cfg

【查看一个文件的有多少行】

[root@MOMOCO-02 ~]# cat /etc/passwd >> anaconda-ks.cfg 

【追加重定向的意思,把红色的文件增加到×××的文件里面】

[root@MOMOCO-02 ~]# wc anaconda-ks.cfg 

  72  168 2338 anaconda-ks.cfg

2.13.3 less

这也是一个查看文档的命令,格式:[root@MOMOCO-02 ~]# less anaconda-ks.cfg但是他不会一下子显示完,他是一屏幕一屏幕显示的,你可以按空格键向下翻页,如果你想往上看可以Ctrl+b或则Ctrl+f向下。他还支持方向键查看,当你看到最后的时候他不会自动退出来这个时候你需要按一个q键退出来。

你也可以搜索:

从上往下搜索,先按一个/然后输入你要搜索的字符按回车。他会高亮显示这个字符,按n键向下翻看下一个字符串,Shift+n向上翻看上一个字符串。
从下往上搜索先把光标定位到最后面,先按一个?然后输入你要搜索的字符按回车。他会高亮显示这个字符,按n键向上翻看上一个字符串,Shift+n向下翻看下一个字符串。【首行和行尾的定位:按一个g定位到行首,Shift+g定位到行尾】

2.13.4 head和tail


[root@MOMOCO-02 ~]# head -n 4 anaconda-ks.cfg 

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Use CDROM installation media

【显示一个文件的头4行,如果你把-n 4去掉他默认是10行】

[root@MOMOCO-02 ~]# tail -n 4 anaconda-ks.cfg 

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

chrony:x:998:996::/var/lib/chrony:/sbin/nologin

GYB:x:1000:1000::/home/GYB:/bin/bash

gyb:x:1001:1001::/home/gyb:/bin/bash

【显示一个文件的尾4行,如果你把-n 4去掉他默认是10行】

[root@MOMOCO-02 ~]# tail -f anaconda-ks.cfg

【-f选项是动态的显示一个文件,他不会退出来。你可以按一个Ctrl+c退出来。】blob.png

blob.png