6月5日任务
2.10 环境变量PATH
2.11 cp命令
2.12 mv命令
2.13 文档查看cat/more/less/head/tail
2.10 环境变量PATH
[root@arron-01 ~]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@arron-01 ~]# which rmdir
/usr/bin/rmdir
** 之前有提到 find 命令, 会将该目录下的文件和目录遍历一遍, 但是 which 不会,
## 如果命令在如下环境的路径里, 那么就不需要敲绝对路径, 使用一个命令, 一般要敲绝对路径, 命令也是文件, 如果要敲命令, 要先看命令的路径,
[root@arron-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
## 复制命令路径
[root@arron-01 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@arron-01 ~]# cp /usr/bin/ls /tmp/ls2
## 如果想改用命令 ls2, 就要更改 ls2 的环境路径
[root@arron-01 ~]# ls
anaconda-ks.cfg
[root@arron-01 ~]# /tmp/ls2
anaconda-ks.cfg
[root@arron-01 ~]# ls2
-bash: ls2: 未找到命令
更改环境变量, 让 ls2 能直接使用
[root@arron-01 ~]# PATH=$PATH:/tmp/
[root@arron-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@arron-01 ~]# ls2
anaconda-ks.cfg
如果想在该终端的复制终端使用 ls 命令, 发觉不行; 想让一个命令在打开终端时生效, 可以在 /etc/profile 里边设置
## 加一行 PATH=$PATH:/tmp/ 实现打开终端时让命令生效
[root@arron-01 ~]# vi /etc/profile
........
unset -f pathmunge
PATH=$PATH:/tmp/
在另一个复制终端里查看更改的环境变量是否生效
- 本终端
- 复制终端
如何取消新增的环境变量呢 ?
方法 :
## 在 /etc/profile 里边删除 PATH=$PATH:/tmp/
[root@arron-01 ~]# vi /etc/profile
[root@arron-01 ~]# less /etc/profile
.........
unset i
unset -f pathmunge
## 在当前终端下还是可以用 ls2 命令, 那是因为变量还没有完全消除
[root@arron-01 ~]# ls2
anaconda-ks.cfg
[root@arron-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
## 将环境变量在界面下更改后, ls2 命令就不能使用了
[root@arron-01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@arron-01 ~]# ls2
-bash: ls2: 未找到命令
##在复制的终端也没有 PATH 了
[root@arron-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.11 cp命令
- 拷贝目录时, 目录后都要加上 / , !$ 是上一条命令的最后一个参数, 拷贝文件时直接 cp , 拷贝目录时要加 -r , 即 cp -r
- cp = copy ,
## 拷贝目录时, 目录后都要加上 / , !$ 是上一条命令的最后一个参数
[root@arron-01 ~]# tree /tmp/arronlinux/
/tmp/arronlinux/
└── 2
1 directory, 0 files
[root@arron-01 ~]# cp -r /tmp/arronlinux/ /tmp/arron
[root@arron-01 ~]# tree /tmp/arronlinux/
/tmp/arronlinux/
└── 2
1 directory, 0 files
[root@arron-01 ~]# tree /tmp/arron
/tmp/arron
└── 2
1 directory, 0 files
## 再做试验
[root@arron-01 ~]# cp -r /tmp/arronlinux/ /tmp/arron1/
[root@arron-01 ~]# tree /tmp/arron1
/tmp/arron1
└── 2
1 directory, 0 files
- 了解 <font color=blue size=2> cp </font> 命令
[root@arron-01 ~]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@arron-01 ~]# which rm
alias rm='rm -i'
/usr/bin/rm
## -i 参数, 是一个交互的参数, 也可以说是一个安全参数, 如果不想让他交互, 用命令的绝对路径 == /usr/bin/cp
[root@arron-01 ~]# man cp
..........
-i, --interactive
prompt before overwrite (overrides a previous -n option)
## 如何让它不询问呢 ?
[root@arron-01 ~]# cp /etc/passwd /tmp/1.txt
cp:是否覆盖"/tmp/1.txt"? ^C
[root@arron-01 ~]# /usr/bin/cp /etc/passwd /tmp/1.txt
## 拷贝目录时, 当目标目录不存在时, 会会将目标目录更名; 当目标目录存在时, 会将原目录放到目标目录下边去
[root@arron-01 ~]# ls /tmp/
1.txt
arron
arron1
arronlinux
ls2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-chronyd.service-ydjya2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vgauthd.service-ejHJei
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vmtoolsd.service-z50eBN
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-chronyd.service-TYLrFf
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vgauthd.service-tiTQV7
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vmtoolsd.service-144Gp0
systemd-private-5ee241633daf42138ecd9a9d102f753a-chronyd.service-MPNBkm
systemd-private-5ee241633daf42138ecd9a9d102f753a-vgauthd.service-8rGyNW
systemd-private-5ee241633daf42138ecd9a9d102f753a-vmtoolsd.service-4KFzpE
[root@arron-01 ~]# cp -r /tmp/arronlinux/ /tmp/arron2
[root@arron-01 ~]# ls /tmp/
1.txt
arron
arron1
arron2
arronlinux
ls2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-chronyd.service-ydjya2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vgauthd.service-ejHJei
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vmtoolsd.service-z50eBN
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-chronyd.service-TYLrFf
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vgauthd.service-tiTQV7
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vmtoolsd.service-144Gp0
systemd-private-5ee241633daf42138ecd9a9d102f753a-chronyd.service-MPNBkm
systemd-private-5ee241633daf42138ecd9a9d102f753a-vgauthd.service-8rGyNW
systemd-private-5ee241633daf42138ecd9a9d102f753a-vmtoolsd.service-4KFzpE
[root@arron-01 ~]# tree /tmp/arron2
/tmp/arron2
└── 2
1 directory, 0 files
[root@arron-01 ~]# cp -r /tmp/arronlinux/ /tmp/arron2
[root@arron-01 ~]# tree /tmp/arron2
/tmp/arron2
├── 2
└── arronlinux
└── 2
3 directories, 0 files
- <font color=red size=3>视频最后有个 cp -r /tmp/arronlinux/ /tmp/arron2/ 时会出现交互, 但是我的没有</font>
2.12 mv命令
- 同一个目录下, mv 命令时会更改文件名; 也可以把一个文件放到另一个目录或者分区下,
[root@arron-01 ~]# mv /tmp/1.txt /tmp/2.txt
[root@arron-01 ~]# ls /tmp/arron/
2
[root@arron-01 ~]# mv /tmp/ls2 /tmp/arron/
[root@arron-01 ~]# ls /tmp/arron/
2 ls2
## 如果目标文件跟源文件一样, 会交互; 不想交互, 跟 cp 命令一样用绝对路径
[root@arron-01 ~]# mv /tmp/ls2 /tmp/arron
mv:是否覆盖"/tmp/arron/ls2"? n
[root@arron-01 ~]# which mv
alias mv='mv -i'
/usr/bin/mv
[root@arron-01 ~]# /usr/bin/mv /tmp/ls2 /tmp/arron
- mv 时, 如果目标目录存在, 会将源目录放到目标目录下, 如果目标目录不存在, 会将源目录改名
[root@arron-01 tmp]# mv arron/ arron2/
[root@arron-01 tmp]# ls
2.txt
arron1
arron2
arronlinux
systemd-private-20f26587756742b5b8c11e6cfcec0d91-chronyd.service-ydjya2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vgauthd.service-ejHJei
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vmtoolsd.service-z50eBN
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-chronyd.service-TYLrFf
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vgauthd.service-tiTQV7
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vmtoolsd.service-144Gp0
systemd-private-5ee241633daf42138ecd9a9d102f753a-chronyd.service-MPNBkm
systemd-private-5ee241633daf42138ecd9a9d102f753a-vgauthd.service-8rGyNW
systemd-private-5ee241633daf42138ecd9a9d102f753a-vmtoolsd.service-4KFzpE
[root@arron-01 tmp]# ls arron2/
2 2.txt arron arronlinux
[root@arron-01 tmp]# mv arron1/ arron3/
[root@arron-01 tmp]# ls
2.txt
arron2
arron3
arronlinux
systemd-private-20f26587756742b5b8c11e6cfcec0d91-chronyd.service-ydjya2
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vgauthd.service-ejHJei
systemd-private-20f26587756742b5b8c11e6cfcec0d91-vmtoolsd.service-z50eBN
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-chronyd.service-TYLrFf
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vgauthd.service-tiTQV7
systemd-private-20fce72d2c7e4eccaeebdf9a071d59ce-vmtoolsd.service-144Gp0
systemd-private-5ee241633daf42138ecd9a9d102f753a-chronyd.service-MPNBkm
systemd-private-5ee241633daf42138ecd9a9d102f753a-vgauthd.service-8rGyNW
systemd-private-5ee241633daf42138ecd9a9d102f753a-vmtoolsd.service-4KFzpE
## 如果目标目录与原目录一样时, 会询问
[root@arron-01 tmp]# ls arron2/
2 2.txt arron arronlinux
[root@arron-01 tmp]# tree arronlinux/
arronlinux/
└── 2
└── 2.txt
1 directory, 1 file
[root@arron-01 tmp]# mv arronlinux/ arron2/
mv:是否覆盖"arron2/arronlinux"?
2.13 文档查看cat/more/less/head/tail
几个和文本文档相关的命令,
- cat 和 tac 用法一样, 不过 tac 是倒序查看
## cat -A 的结尾比 cat 输出时多 $ 符号
[root@arron-01 tmp]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
....
[root@arron-01 tmp]# cat -A /etc/passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
## cat -n 会输出每行的行号
[root@arron-01 tmp]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
.....
- wc -l filename 查看一个文件的行数
[root@arron-01 ~]# wc -l anaconda-ks.cfg.bak
51 anaconda-ks.cfg.bak
## >> 追加
[root@arron-01 ~]# cat /etc/passwd >> anaconda-ks.cfg.bak
## 追加后 more 命令查看文档
- more 命令, 空格键一屏一屏的乡下查看, ctrl+b 一屏一瓶的向上查看, ctrl+f 一屏一屏的向下看, 有查看的百分比显示, 不支持方向键, 看完后就退出了, 不过在中途按 q 键一样可以退出
[root@arron-01 ~]# wc -l anaconda-ks.cfg.bak
177 anaconda-ks.cfg.bak
[root@arron-01 ~]# more anaconda-ks.cfg.bak
- less 命令, 空格键一屏一屏的乡下查看, ctrl+b 一屏一瓶的向上查看, ctrl+f 一屏一屏的向下看, 支持上下方向键查看文档, 没有查看的百分比显示, 且按字母<font color=blue size=3 > q </font> 键退出, 不占屏显, ** / 是向后看, /character 就会高亮显示文档中的 character, n 键向下高亮显示所选字符, shift+n(N 键) 向上高亮显示所选字符; ? 是向前看, ?character 按键 n 的功能也会反过来.**, G 翻到文档的篇首, gg 翻到文档的篇首; 相对来说, less 会更好用一些, ctrl+u 从命令行尾部清到头部, ctrl+k 从命令行头部清到尾部
[root@arron-01 ~]# less anaconda-ks.cfg.bak
- head, tail 分别查看文档的前十行和后十行,
## head -n number 从文档的头部开始查看, number >= 1, <=10
[root@arron-01 ~]# head -n 5 anaconda-ks.cfg.bak
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
## tail -n number 从文档的尾部开始查看, number >= 1, <=10
[root@arron-01 ~]# tail -n 3 anaconda-ks.cfg.bak
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
arron:x:1000:1000::/home/arron:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
- tail -f 动态显示文档内容的最后十行
[root@arron-01 ~]# tail -f anaconda-ks.cfg.bak
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
arron:x:1000:1000::/home/arron:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
## 给文档追加几行, 显示如下
[root@arron-01 ~]# head -n 2 /etc/passwd >> anaconda-ks.cfg.bak
[root@arron-01 ~]# tail -n 2 /etc/passwd >> anaconda-ks.cfg.bak
[root@arron-01 ~]# tail -f anaconda-ks.cfg.bak
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
arron:x:1000:1000::/home/arron:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
arron:x:1000:1000::/home/arron:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash