2.10 环境变量PATH
2.11 cp命令
2.12 mv命令
2.13 文档查看cat/more/less/head/tail


2.10 环境变量PATH

!!!回顾

#which

可以查看命令的所处路径,有没有别名。

#find

find命令归纳总结比较好的文章:http://ask.apelearn.com/question/17771

命令是查找整个硬盘相关的路径,但是

#which 只在/usr/local/sbin:/usr/local/bin/:/usr/sbin:/usr/bin:/root/bin (:是分割位置)如果命令都在此几个目录下,就不需要键入绝对路径。

例如#rm (真正用到命令,应该使用绝对路径,命令其实也是一个文件,需要找到对应路径,才能触发他的使用)

#rm

可以直接用,

#/usr/bin/rm

也可以用绝对路径使用

一般常用命令会存放在这几个路径下:

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


而rm存放在/usr/bin/

如果我们任意键入不存在命令,系统会报错,未找到命令,

例如 

用LS作个例子 作个copy,新的copy改个新名字(其实它的功能还是跟ls一样),改作ls2

先#which ls 来寻找它所在的路径,/usr/bin/ls,

找到路径后,再作个cp,

#cp /usr/bin/ls /tmp/ls2

复制文件随后,需要把cp后的路径,加入到$PATH里面

#PATH=$PATH:/tmp/

($PATH后面带的参数,就是需要写入PATH里面的内容,此处一般带目录)

#echo $PATH

OK.发现多了一个/tmp/ 

运行ls2

#ls2

 

结果ok,跟ls功能一样 ,成功激发ls,这就是环境变量的作用与含义。


打开另一个Shell终端 发现#ls2 不生效。

如果想ls2每次在终端都生效,此时需要把ls环境变量设为永久生效

方法

#vi /etc/profile(每次开机都可以自动加载命令)(截图)

#cat

再次打开终端,

#echo $PATH

(截图)发现多了ls2的路径

#ls2

生效 

取消ls2

#echo $PATH 复制ls2的路径以外的路径,
#PATH=(粘贴ls2以外的路径,有点像反选的作用)
#ls2 不生效
再#vi /etc/profile 将之前添加ls2的路径deleted删掉,保存退出.

#ls2 不生效


进入新一个Xhshell终端页面,

#echo $PATH

路径不存在,成功取消ls2。

总结:

复制命令的大致步骤如下,

  • 先which需要复制的命令,找到对应路径,然后cp路径需要复制的命令到一个临时目录下,例如/tmp/

  • 完成复制后,修改环境变量#$PATH=:/tmp/,适当#echo $PATH查看是否成功加入参数。

  • 修改环境变量后,修改#/etc/profile 配置文件,在末端键入环境变量的路径$PATH=:/tmp/

  • 完成以上操作后,键入复制后的命令即可。

  • 取消该复制命令的话,反操作即可。


2.11 cp命令


命令#cp

cp=copy 顾名思义,复制,拷贝的意思。

作用 拷贝源文件、目标文件。

相关知识点:cp格式,源文件,源目录,目标文件,目标目录。


文件用法 ,

复制/etc/passwd到/tmp/,并将passwd改名1.txt

#cp /etc/passwd /tmp/1.txt

目录用法

#cp -r /tmp/aminglinux/ /tmp/aming

对比源与目标,一样

#tree /tmp/aminglinux/
#tree /tmp/aming

#cp copy源有“/”,目标没有“/”?

其实#cp命令在这加不加“/”都一样效果,但是在这需要统一化,加上“/”

#cp -r /tmp/aminglinux/ /tmp/aming1/

#tree !$ 

(此处标星,!$上一条命令的最后一个参数,相当于

#cp -r /tmp/aminglinux/ /tmp/aming1/

上面的/tmp/aming1/,即是说#tree !$等于#tree /tmp/aming1/,

此处#tree !$区别与!tree,!tree是上次最新,最后的tree的命令)

拷贝文件,

#which rm 别名,#rm -i
#which cp 有别名#cp -i(-i其实就是一个安全询问)

#cp /etc/passwd /tmp/1.txt 发现会询问是否删除,其实是-i的作用


如果不需要询问,可以直接用绝对路径命令

#/usr/bin/cp /etc/passwd /tmp/1.txt


#cp -r /tmp/aminglinux/ /tmp/aming1/
#ls /tmp/aming1
#tree /tmp/aming1

拷贝目录,是不会询问“是否覆盖”类提示消息。*当目标目录已经存在的时候,它会把源目录直接放到目标目录下面,如果目标目录不存在,它会把源目录拷贝过来,并且改个名字。



2.12 mv命令



相当于把文件摞动到别的地方

同一个目录下使用#mv,此时功能是改名。

例如

#ls /root 
#mv anaconda-ks.cfg2 anaconda-ks.cfg.1
#ls
anaconda-ks.cfg.1

改名成功。

移动文件,并改名用法。

#cd /tmp/
#mv /tmp/1.txt /root/2.txt
#ls /root/
2.txt

同样,我们可以这样,得出如下结果

#mv ls2 aming/
#ls aming/
2 ls2


!!!!!!!注意!!!!!!!

#touch ls2
#mv ls2 aming/
mv:是否覆盖 ... n

因为aming/下面已经有了ls2 ,所以n.(mv之所以会提示,是因为也有“-i”,如果不想出现,提示,跟cp一样,,#which出路径,使用绝对路径)

#usr/bin/mv ls2 aming/

直接覆盖,不再询问。


mv命令两点用途:改名,移动地方。

特殊用法

#mv aming1/ aming/  把aming1/放到aming/下面去
#mv aming/ aming2/ (aming2/是不存在的)

#ls 发现aming/被改成aming2/,

此处可以理解成,当aming2/不存在时 源目录aming/会被改成aming2/,改名作用。也就是说,当目标目录不存在的时候,相当于将源目录的名称改成目标目录名称。

#mv aming2/ aminglinux/
#ls aminglinx/
2 aming2/

此用法相当于cp的用法。

#mkdir aming2(此处作比较作用,无意义)
#mv

如果在同一个目录下面,改名

如果目标文件存在,是否覆盖

如果目标是目录,且目录不存在,源也是目录,此时会把源的名字改了。

如果目标目录已存在,源也是一个目录,那他就会把这目录放到目标目录里面去。





2.13 文档查看cat_more_less_head_tail

#cat

(q退出)查看文件内容

tac与cat对应,tac是倒序查看文件内容,cat是正序。

详细用法

#man cat

#cat -A 显示文件路径的结束,用$结尾
#cat -n 显示文件行列行号


#more (q退出)

一屏一屏显示 按“空格”显示下一屏

#wc -l ancond-ks.cfg.1 查看行数

把/etc/passwd 的内容 增加到anaconda-ks.cfg.1 下面去

#cat /etc/passwd >>anaconda-ks.cfg.1
#wc -l anaconda-ks.cfg.1


再用more 可以看到数据每页只显示个别数据,more的作用是现实满屏数据,不完全显示。

往后翻,ctrl-B(back)


#less (q退出)

less和more差不多,不过less支持方向键移动走位查看。

  • ctrl-b 往后

  • ctrl-f 往前

搜索

  • "/" 搜索 高亮显示  "n"(next) 下一个 shift n 上一个

  • 倒序搜索(看最后)“?”

  • shift g 末行

  • g 首行


#head 头10行  #tail 尾10行
#head -n 2 前2行
#tail -n 2 后2行


*tail查看动态文件用法多,例如日志。

#tail -f 动态使用文件内容

例如 先

#tail -f anaconda-ks.cfg.1

复制1个终端窗口,在新的窗口打开查看

#tail -n 2 /etc/passwd >>anaconda-ks.cfg.1

返回,发现anaconda-ks.cfg.1 文件越来越多,动态显示(截图)