2.10 环境变量PATH
在linux中,PATH环境变量保存了一系列用户在输入的时候搜索命令。PATH变量的值有多个绝对路径,用:分割。在这些路径下面的命令可以直接敲出来,省略掉目录路径。每个用户都有特定的PATH环境变量(由系统级的PATH变量初始化)
查看用户环境变量:
1: echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2: env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
修改环境变量PATH方法:
修改方法一:
export PATH=$PATH:/tmp 或 PATH=$PATH:/
//配置完后可以通过echo $PATH查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
用户局限:仅对当前用户
修改方法二:
通过修改.bashrc文件:
vim ~/.bashrc
//在最后一行添上:
export PATH=$PATH:/tmp
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
修改方法三:
通过修改profile文件:
vim /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=$PATH:/tmp
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
修改方法四:
通过修改environment文件:
vim /etc/environment
加入PATH路径
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:/tmp:/root/bin
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
2.11 cp命令
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法:
cp 选项 参数
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; -f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,把目标目录中存在的相同名字文件加上指定后缀保留;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数:
源文件:指定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
实例:
当目标目录中存在相同名字文件时,把目标目录中的同名文件备份名加上指定的后缀
[root ~]# cp 1.txt zhang/
[root ~]# cp -v -S.bak 1.txt zhang/
cp:是否覆盖"zhang/1.txt"? y
"1.txt" -> "zhang/1.txt" (备份:"zhang/1.txt.bak")
[root ~]# ls zhang/
1.txt 1.txt.bak
which cp可以看到cp命令是‘cp -i’的别名,所以当目标文件存在相同名字文件时会提示是否覆盖。
cp目录到目标目录时,如果没有此目录会把源目录改名成目标目录,如果此目标目录存在则会把源目录放倒此目录下面
2.12 mv命令
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
1: 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
2: 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
语法:
mv 选项 参数
选项:
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
参数:
源文件:源文件列表
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
实例:
cd /root/
mkdir zhang
mv --target-directory=/tmp/test/ /root/zhang/
#把root下的zhang目录移动到/tmp/test/,加了此选项后,源文件与目标文件位置调换。
which mv 可以看到mv是命令‘mv -i’的别名,默认当目标文件存在相同名字时会提示是否覆盖
mv移动目录时,当目标目录中存在同名目录,如果此同名目录为空可以移动覆盖,
如果同名目录不为空则不能移动。
2.13 文档查看cat/more/less/head/tail
linux下查看文件内容命令有:
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的显示文件内容
less 和more类似,但其优点可以往前翻页,而且可以进行搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
1.cat 与 tac
cat的功能是将文件从第一行开始连续的将内容输出在屏幕上。但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容。
cat语法:cat [-n] 文件名 (-n : 显示时,连行号一起输出)
cat [-A] 文件名 (-A:显示全部字符,例如每行的结尾符$)
cat file >>file2 把file的内容追加重定向到file2
cat -b 忽略对空白行的编号
cat -s 将连续的空白行合并为一行
tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现,tac实际上是cat反过来写。这个命令也不常用。
tac语法:tac 文件名。
2.more和less(常用)
more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用“回车键”向下翻行,用“空格键”向下翻页。退出查看页面,请按“q”键。另外,more还可以配合管道符“|”(pipe)使用,例如:ls -al | more
more的语法:more 文件名
Enter 向下n行,需要定义,默认为1行;
空格键 向下滚动一屏;
Ctrl b 返回上一屏;
= 输出当前行的行号;
:f 输出文件名和当前行的行号;
v 调用vi编辑器;
! 命令 调用Shell,并执行命令;
q 退出more
选项:
-<数字>:指定每屏显示的行数;
-c:不进行滚屏操作。每次刷新这个屏幕;
+<数字>:从指定数字的行开始显示。
实例:
more -c -10 /etc/passwd 锁定屏幕每翻一屏只显示10行
more +10 /etc/passwd 从第10行开始显示
less的功能和more相似,但是使用more无法向前翻页,只能向后翻。
less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便。
less的语法:less 文件名
less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有root字符串,那么你可以这样来做:
[root etc]# less passwd
然后输入:
方式一:/root
回车
此时如果有root字符串,linux会把该字符已高亮方式显示。
按n向下搜索
按N向上搜索
方式二:?root
回车
此时如果有root字符串,linux会把该字符已高亮方式显示。
按n向上搜索
按N向下搜索
退出查看页面,请按“q”键。
使用less查看文档时,按g定位到行首,按G定位到行尾
3.head和tail
head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用。head的功能是显示文件的前几行内容
head的语法:head [-n number] 文件名 (number 显示行数)
head /etc/passwd 显示前10行
head -2 /etc/passwd 显示前2行
head -n 2 /etc/passwd 显示前2行
head -n -2 /etc/passwd 不显示最后2行
tail的功能恰好和head相反,只显示最后几行内容
tail的语法:tail [-n number] 文件名
tail /etc/passwd 显示后10行
tail -n 2 /etc/passwd 显示后2行
tail -n -2 /etc/passwd 显示后2行
tail -2 /etc/passwd . 显示后2行
tail -n +10 /etc/passwd 从第10行开始显示
下面的范例,结合了 head 与 tail 的指令,显示档案的第 11 行到第 20 行:
head -20 /etc/passwd |tail -10
head -20 /etc/passwd |tail -n +11
tail有一个很好用的参数 " -f ",动态循环读取最后几行,一般用于查看日志
tail -f /var/log/xx.log
4.nl
nl的功能和cat -n一样,同样是从第一行输出全部内容,并且把行号显示出来
nl的语法:nl 文件名
nl /etc/passwd