1、PATH 环境变量

在讲环境变量之前,先介绍一个命令 which , 它用来查找某个命令所在的路径以及该命令有没有别名。 上图中,很多命令都是直接输入命令,而没有去使用这些命令的绝对路径。这是因为环境变量PATH在起作用。输入 echo $PATH 命令,这里的echo其实就是打印的意思,而PATH前面的$表示后面接的是变量。 ‘rm’ 和 ‘ls’ 是两个特殊的命令,使用 alias 命令做了别名。我们用的 ‘rm’ 实际上是 ‘rm -i’ 加上 ‘-i’ 选项后,删除文件或者命令时都会问一下是否确定要删除,这样做比较安全。 ‘alias’ 可以设置命令的别名也可以设置文件的别名。 ‘which’ 这个命令一般只用来查询某个命令的绝对路径,不常使用。 which 的路径是从哪里查到的呢,而且很快就能查出来?上图中, 命令 $PATH 下显示了一连串的目录,这些目录用冒号做了分割, which 查找的路径就在这些红色框框的目录里。也就是说,如果我们使用的命令在这些目录里,敲命令的时候就可以不用写出绝对路径。 举个例子,现在随便输入一个命令 abcd ,结果显示未找到命令,这是因为命令不在红色框框的目录里。 上图中,用 ls 查看之后,用 cp 命令拷贝一份到目录 tmp 下面,并改目录名字为 ls2 ,然后发现,敲命令 /tmp/ls2 和命令 ls 的结果是一样的。既然这样,我们试着直接敲命令 ls2 看行不行,结果发现未找到命令,这是因为 ls2 这个命令不在红色框框的目录里面。 如果我们想直接使用 ls2 这个命令,就需要更改一下环境变量,既然 ls2 在目录 tmp 里面,就可以考虑将 tmp 这个目录增加到 PATH 变量里面。我们需要重新给 PATH 赋值,见下图, 可以看到,重新赋值之后,目录 /tmp/ 就增加到 PATH 变量里面,现在重新输入命令 ls2 ,命令可以执行,结果与之前的命令 ls 结果是一样的。用 which 查看,也能直接找到路径。 现在,重新打开一个同样的 Xshell 窗口, 然后输入命令 ls2 ,发现命令不能生效, 要是想让命令 ls2 永久生效,需要怎么做呢?要把环境变量改成永久的,输入命令 vi /etc/profile ,见下图, 按字母“i”进入编辑模式,用向下的方向键,进入到最下方,插入上图红色框框的内容,然后点“Esc”,再输入 :wq 保存并退出。 用命令 cat /etc/profile 来查看,可以看到最后一行就是我们刚刚添加的内容,现在再重新打开一个同样的 Xshell 窗口, 上图中,用命令 echo $PATH 查看,可以看到目录 tmp 有在环境变量里,再输入命令 ls2 ,可以生效。这就是让一个拷贝的目录命令永久生效的方法。 现在,比如我们又不想要这个命令了,怎么办呢?重新给 PATH 赋值,赋值的时候去掉目录 /tmp/ 即可,可以看到命令 ls2 又不能生效了, 再次进入命令 vi /etc/profile ,将我们刚刚增加的 PATH=$PATH:/tmp/ 这一行内容删掉,再保存退出即可。命令 ls2 就可以永久失效了。 将后面打开的两个 Xshell 窗口关闭掉,重新在打开一个新的窗口, 用命令 echo $PATH 查看之后,可以看到目录 /tmp/ 没有了。

以上就是关于环境变量PTAH的用法。

2、cp 命令

cp 是 copy 的缩写,命令用法就是将原文件拷贝为目标文件。下图举个例子, 在上图的红色框框当中,可以发现拷贝的源目录加了 / ,而拷贝的目标目录没有加 / 。 拷贝目录需要加 -r 命令,拷贝目录需要带 / ,而拷贝文件可以不用,一般情况下,普通的命令当中,加不加 / ,其实是无所谓的,没有区别,见下图, 但是 cp 这个命令,就一定要加 / ,即使目录不存在也要加上,请看一下实验, 上面又用到了一个新的特殊符号 !$ ,它表示上一条命令中以空格键分割的最后一个参数,即 /tmp/lys1/ ,可以看到 tree /tmp/lys1/ 和 tree !$ 的结果是一样的。 接着用 which cp 来看一下,发现 cp 有别名 cp -i 。再看一下 rm ,rm 也有一个别名 rm -i , 由此可见, -i 这个别名会产生询问,是一个安全选项,如果我们不想要这个询问,可以使用命令 /usr/bin/cp /etc/passwd /tmp/1.txt ,执行之后就会看到没有产生询问。 继续做实验,详见下图, 上面在拷贝一个已有的文件的时候,会产生询问,但是上图中,在拷贝目录的时候,没有产生询问。使用命令 ls 查看之后,发现该命令直接在目录 /tmp/lys1/ 下面创建了一个新的目录 /lyslinux/ ,接着用命令 tree 查看的时候,发现目录 /lyslinux/ 里面还有一个目录 /2/ 和一个文件 2.txt ,这说明当目标目录已经存在的时候, 这个命令会把原目录直接放在目标目录下面去,如果目标目录不存在,就会把原目录拷贝过来,并且改一个名字。 接下来继续拷贝,详见下图, 可以看出,执行同样的命令之后,又跳出了询问,这是因为在目录 /tmp/lys1/ 下面已经有一个 /lyslinux/ 目录了。

cp 命令就这么多,格式:cp /原目录/原文件/ /目标目录/目标文件/ ,拷贝目录的话,还要在 cp 后面加上 -r 。

3、mv 命令

mv 是 move 的缩写,相当于是把文件挪动地方,如果在同一个文件下,mv 命令相当于是改名字,见下图例子, 同样的,也可以把一个文件放到一个目录里,或是把一个文件放到另外一个分区下,同时改名字。详见下图例子, 上图中,又出现了询问,用 which 查看,果然有别名 -i ,如果不想出现询问,可以使用绝对命令 /usr/bin/mv ls2 lys/ ,确实没有出现询问了。 mv 命令其实并不难,一个是改名字,一个是挪地方。 上图中,首先把 lys1 挪到 lys ,然后查看当前目录下没有 lys2 ,再把 lys 挪到不存在的 lys2 中,看看结果,实际上是改名字了,把 lys 改为 lys2 。 如果目标目录存在,mv 命令就会把原木录放到目标目录下面去,这个和 cp 是一样的。见下图, 继续做实验,见下图 跳出了询问,这是因为相当于把 目录lys2 放到 目录 lyslinux 下面去了,而目录 lyslinux 中已经存在目录 lys2 了。 如果我回复 y ,就会发现文件已存在,无法移动。

以上就是 mv 命令的用法,和 cp 命令用法很像。在同一个目录下面就是改名字。如果目标目录的文件已经存在,就会询问是否覆盖。如果目标是一个目录且目录不存在,就会改原目录的名字。如果目标目录已经存在,就会把这个目录放到目标目录文件去。