第二周第二次课(12月19日)

2.10 环境变量PATH

2.11 cp命令

2.12 mv命令

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

一 环境变量

  • 环境变量PATH
[root@xavi-001 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@xavi-001 /]# which ls 
alias ls='ls --color=auto'
	/usr/bin/ls
[root@xavi-001 /]# ls /usr/bin/ls
/usr/bin/ls
[root@xavi-001 /]# cp /usr/bin/ls /tmp/ls2
[root@xavi-001 /]# ls
1    boot  etc   lib    media  opt   root  sbin  sys  usr
bin  dev   home  lib64  mnt    proc  run   srv   tmp  var
[root@xavi-001 /]# /tmp/ls2
1    boot  etc	 lib	media  opt   root  sbin  sys  usr
bin  dev   home  lib64	mnt    proc  run   srv	 tmp  var
[root@xavi-001 ~]# ls2
bash: ls2: 未找到命令...
  • 上述代码中,我们先用which找到了ls的定义,其存放位置在/usr/bin/ls 下。(命令其实也是一个文件)我们可以复制一个ls命令,取名为ls2,把他放在/tmp文件下,于是我们执行/tmp/ls2效果等同于ls,但是执行ls2是不行的,因为/tmp不在PATH路径中,如何添加到环境变量中去呢,运行以下代码
[root@xavi-001 ~]# PATH=$PATH:/tmp/
[root@xavi-001 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/   //出现了/tmp/
[root@xavi-001 ~]# ls2
anaconda-ks.cfg  initial-setup-ks.cfg  [root@localhost
[root@xavi-001 ~]# which ls2
/tmp/ls2
  • 当你重新打开新窗口,或者再次登入是,发现ls2又失效了,是因为你没有修改到系统文件中,系统里有这样的文件,在每次开机是都会加载

mark

在/etc/profile下编辑一段指令

[root@xavi-001 ~]# vi /etc/profile

mark

  • 输入cat命令查看是否已经修改在里面保存成功
[root@xavi-001 ~]# cat /etc/profile  //输入该命令查看是否已经修改在里面保存成功,
  • 再复制一个ssh通道,输入:echo $PATH,/tmp/已经保存在PATH之下。

mark

[root@xavi-001 ~]# ls2
anaconda-ks.cfg  initial-setup-ks.cfg  [root@localhost   //ls2生效
  • 如何将ls2不生效呢,输入以下命令,重新定义PATH
[root@xavi-001 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@xavi-001 ~]# ls2
bash: ls2: 未找到命令...

mark

mark

--勘误:上图复制SSH Channel时,未正当操作,只点了复制,所以是错误示例。 ==问下老师区别复制和复制ssh Channel==

  • 彻底删除的办法是,用vi进入vi /etc/profile,把刚才的代码PATH=$PATH:/tmp/删除即可。
[root@xavi-001 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/

或者可以用vi删除,在之后的课程里面解释说明

二 cp命令

  • cp copy 拷贝文件或目录,下面拷贝文件
[root@xavi-001 ~]# touch /tmp/xavilinux/2/3/4/1.txt
[root@xavi-001 ~]# cp /etc/passwd  /tmp/1.txt
cp:是否覆盖"/tmp/1.txt"? y
[root@xavi-001 ~]# tree /tmp/xavilinux
/tmp/xavilinux
└── 2
    └── 3
        └── 4
            └── 1.txt

3 directories, 1 file
  • cp -r 拷贝目录需加上r,且被拷贝源后要加斜杠
[root@xavi-001 ~]# cp -r /tmp/xavilinux/ /tmp/xavi

mark

mark

[root@xavi-001 ~]# tree !$
tree /tmp/xavi
/tmp/xavi
└── 2
    └── 3
        └── 4
            └── 1.txt

3 directories, 1 file
[root@xavi-001 ~]# cp -r /tmp/xavilinux/ /tmp/xavi/
[root@xavi-001 ~]# ls /tmp/xavi
2  xavilinux    //复制的目标目录里不存在xavilinux时,将其负债在目标目录之下
[root@xavi-001 ~]# cp -r /tmp/xavilinux/ /tmp/xavi/
cp:是否覆盖"/tmp/xavi/xavilinux/2/3/4/1.txt"? n

三 mv命令

[root@xavi-001 ~]# mv anaconda-ks.cfg anaconda-ks.cfg.1  //这里相当于直接改名字了
[root@xavi-001 ~]# ls
anaconda-ks.cfg.1  initial-setup-ks.cfg  [root@localhost
[root@xavi-001 ~]# cd /tmp/  //切换到/tmp/目录
[root@xavi-001 tmp]# ls
1.txt
ls2
systemd-private-326256f65ea943dd8a67183d93dfe298-cups.service-AeQUKR
systemd-private-326256f65ea943dd8a67183d93dfe298-vmtoolsd.service-4S9XrS
xavi
xavi1
xavilinux
[root@xavi-001 tmp]# mv 1.txt /root/2.txt
[root@xavi-001 tmp]# mv ls2 xavi/
[root@xavi-001 tmp]# ls xavi/
2  ls2  xavilinux
[root@xavi-001 tmp]# touch ls2
[root@xavi-001 tmp]# mv ls2 xavi/
mv:是否覆盖"xavi/ls2"? n
[root@xavi-001 tmp]# which mv
alias mv='mv -i'
	/usr/bin/mv
  • 同理,如果不需要询问,可以直接输入该命令的所在目录

mark

  • 上图中xavi1已经放入在xavi目录下

mark

mark

[root@xavi-001 tmp]# mv xavi2/ xavilinux/
mv:是否覆盖"xavilinux/xavi2"? y
mv: 无法将"xavi2/" 移动至"xavilinux/xavi2": 文件已存在

四 Cat

[root@xavi-001 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
  • cat -A 在行尾加了$作为结束符
[root@xavi-001 tmp]# cat -A /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$
adm:x:3:4:adm:/var/adm:/sbin/nologin$
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
sync:x:5:0:sync:/sbin:/bin/sync$
  • more只显示一屏,剩余的不显示,按下空格显示剩余,按下ctrl+b,back看之前的 mark

  • less,输入命令,按上下光标键可以查看,按ctrl+B,ctrl+F,向前先后看,按Q退出,

  • 在less里面输入/字符串,可以按N查找相应只付出,N往下看,shift+N,可以向前查看 [root@xavi-001 tmp]# less /etc/passwd

mark

  • less里面用“?字符串”

mark

mark

  • head指令
[root@xavi-001 tmp]# head /etc/passwd
[root@xavi-001 tmp]# head -n 2 /etc/passwd  // 2 即为制定行数
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
  • tail命令
[root@xavi-001 tmp]# tail /etc/passwd
[root@xavi-001 tmp]# tail -n 2 /etc/passwd
xavidsf:x:1001:1001:xavi:/home/xavidsf:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
  • tail-f 查看摸个不断在写入的日志文件,head也有此功能。