环境变量PATH
1、什么是环境变量PATH
环境变量PATH是一个变量,这个变量里面有多个绝对路径,用:分割。 在这些路径下面的命令是可以省略掉目录路径,直接敲出来使用。
2、如何查看环境变量
2.1、echo $PATH 查看环境变量
#echo
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。
linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到,echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
#echo $PATH //显示环境变量内容
2.2、which xx查看命令路径
用#which查看#rm命令可见,rm命令实际上是alias命令设置的带有-i选项的别名,#rm的绝对路径是/usr/bin/rm。
如果没有加选项,命令和绝对路径效果是一样的。
命令其实就是绝对路径的可执行文件,不过是命令加上了一些选项(可执行文件执行时会执行的一些参数)。想要执行命令,就要找到命令在什么路径,而系统会在环境变量的几个目录中寻找有没有输入的命令;
2.3、which查找的原理是查环境变量
随便输入一个没有的命令,因为环境变量的路径中没有找到这个命令,所以会显示未找到命令;
我们把/usr/bin/ls文件复制一份到/tmp/ls2,然后执行/tmp/ls2,结果和/usr/bin/ls效果一样,但是如果我们直接用ls2命令,会告诉我们没有找到命令,用which查看会显示
/usr/bin/which: no ls2 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
意思是/usr/bin/which查询结果是在 (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)中没有找到ls2,而括号里面的一串绝对路径就是环境变量$PATH。在这里也可以知道which查询路径的时候是在环境变量PAHT的一堆路径变量里查询的。
所以也就是说如果想要用ls2命令,而不是用/tmp/ls2,就需要把ls2的路径也添加进环境变量PATH才行。
3、如何添加环境变量
3.1、命令行添加临时环境变量
#PATH=$PATH:/XXX/ //把目录/XXX/添加到环境变量中;
用# PATH=$PATH:/tmp/命令把/tmp/目录添加到PATH环境变量中去,#echo $PATH发现末尾/tmp/路径已经添加进来了,PATH中的变量用冒号分割。
再用ls2命令就可以执行了,#which也能查看ls2的路径了(因为PATH中有了ls2的路径)
但是当我们打开一个新的终端的时候就发现,#ls2又不能用了,#echo $PATH查询环境变量发现之前添加的/tmp/路径有没有了,但是查看/tmp/ls2文件是在的。
所以# PATH=$PATH:/tmp/只能临时添加环境变量,并没有永久把这个变量添加进去,想要永久把这个变量添加进去就要修改 配置文件重新启动了。
3.2、修改配置文件永久添加环境变量
/etc/profile是个每次开机或者打开终端都会去加载的文件,如果我们把# PATH=$PATH:/tmp/命令写入这个文件,那就相当于每次开机或打开中断都会重新把/tmp/这个路径添加进PATH变量中去,这样就能实现打开新的终端或重启后都能使用这个ls2命令了。
通过vi命令去修改/etc/profile,在文件最后添加上# PATH=$PATH:/tmp/命令。
打开新的终端,查看环境变量当中有了/tmp/,#ls2命令也能用了。
3.3、命令行临时删除环境变量
当我们不像在使用ls2时要去掉环境变量的相应目录,给PATH重新赋值,
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
回显发现PATH中的/tmp/路径没有了,#ls2命令也不能用了。
3.4、修改配置文件永久删除环境变量
刚才的修改只是临时的,/etc/profile文件中的那条命令还在,每次打开新的终端或重启后又会把/tmp/加入PATH,想要永久不能使用要把添加的命令删除掉。
命令cp
#cp -r /tmp/a/ /home/b/
-r,只有在拷贝目录的时候需要加上,拷贝文件的时候不需要加;
如果目标目录b/不存在,那命令会把源目录a/拷贝过来并重命名为b/;
如果目标目录b/已经存在,那命令会把源目录a/拷贝到目录b/下,形成b/a/;
如果目标目录b/下已经存在a/,即存在目录b/a/,则会提示是否要覆盖/home/b/a/;
-i是个提示性质的安全选项,好像是inform/information,很多地方会做出提示。
!$表示上一条命令的最后一个参数,以空格或者Tap分割的最后一个参数。
如果目标目录b/不存在,那命令会把源目录a/拷贝过来并重命名为b/;
如果目标目录b/已经存在,那命令会把源目录a/拷贝到目录b/下,形成b/a/;
如果目标目录b里面有和源目录a中相同名字的文件,会询问是否覆盖,不同名的文件被直接拷贝进去;
命令mv
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。
源文件被移至目标文件有两种不同的结果:
1、如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
2、如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
#mv /tmp/a/ /tmp/b/
//如果目标目录b/存在,命令会把a/放到目标目录中,形成/tmp/b/a/
//如果目标目录b/不存在,命令会把a/直接该名成b/
//如果目标目录b/存在,命令会把a/放到目标目录中,形成/tmp/b/a/
//如果目标目录b/不存在,命令会把a/直接该名成b/
文档查看cat/more/less/head/tail
1、命令cat
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。
因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。
按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
cat(选项)(参数)
选项:
-n或-number:输出所有行从1开始行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-A:显示不可打印字符,行尾显示“$”;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
参数:
文件列表:指定要连接的文件列表。
cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)
cat m1 m2 > file (将文件ml和m2合并后输出到文件file中)
cat m1 >> m2(将文件ml里面的内容追加到m2中)
cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)
cat m1 m2 > file (将文件ml和m2合并后输出到文件file中)
cat m1 >> m2(将文件ml里面的内容追加到m2中)
2、命令tac
tac命令用于将文件以行为单位的反序输出,即第一行最后显示,最后一行先显示。
3、命令wc
wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。
如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
3 | 5 | 25 | test.txt |
行数 | 单词数 | 字节数 | 文件名 |
4、命令less
less(按屏幕)命令的作用与more(按百分比)十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按q键,不会像more一样自动退出。
空格键 滚动一屏幕
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
G - 移动到最后一行
g - 移动到第一行
n:重复前一个搜索(与 / 或 ? 有关,搜索后使用)
N:反向重复前一个搜索(与 / 或 ? 有关,搜索后使用)
q 退出
5、命令head
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
-n<数字>:指定显示头部内容的行数;显示文件的前n行
head命令默认显示文件的头10行内容。
head -n 5 3.txt
6、命令tail
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行
选项:
-n或——line=:输出文件的尾部N(N位数字)行内容。
-f(常常用来查看一个动态文件,会不断显示文件末端添加进来的内容)
tail -n 5 file (显示文件的最后5行内容)
tail -n +9 file (显示文件file的内容,从第9行至文件末尾)
tail命令默认在屏幕上显示指定文件的末尾10行
tail -n 5 file (显示文件的最后5行内容,最后一行因为有回车)
tail -n -5 file (显示文件的最后5行内容)
tail -n +9 file (显示文件file的内容,从第9行至文件末尾)
-f(常常用来查看一个动态文件,会不断显示文件末端添加进来的内容)
tail -f b.txt
此种用法常常用来显示一个动态的.log文件。
每次在终端1中执行一次cat a.txt >> b.txt ,就会把a.txt中的内容追加到b.txt中一次,在另外一个终端中可以看到b.txt中的内容在尾部不断的随cat a.txt >> b.txt命令运行而增加。