210 环境变量PATH
环境变量作用
所有的命令其实使用时应该使用它的绝对路径,例如
[root@mylinux ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
这里的ls命令应该是使用 /usr/bin/ls,但是我们能直接使用命令,就是因为添加了环境变量
我们看到下面打印出来的环境变量
[root@mylinux ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin (这里就是我们存放的环境变量)
暂时改变环境变量
只有当我们的命令在环境变量里面就能让系统找到该命令,下面我们演示一下
[root@mylinux ~]# ls
anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# cp /usr/bin/ls /root/ls2 (复制ls并且改名为ls2到当然root家目录下面来)
[root@mylinux ~]# ls
anaconda-ks.cfg frp_0.11.0_linux_amd64 ls2 (已经有ls2了)
[root@mylinux ~]# ls2
-bash: ls2: 未找到命令 (我们直接使用发现ls2并不能生效)
[root@mylinux ~]# /root/ls2 (必须使用绝对路径才能生效)
anaconda-ks.cfg frp_0.11.0_linux_amd64 ls2
[root@mylinux ~]# PATH=$PATH:/root/ (我们把ls2所在绝对路径目录加入到环境变量中)
[root@mylinux ~]# echo $PATH (打印环境变量)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/ (发现最后出现了:/root/)
[root@mylinux ~]# ls2 (再来直接使用ls2就生效了)
anaconda-ks.cfg frp_0.11.0_linux_amd64 ls2
永久改变环境变量
上述的方法并不能实现对环境变量的永久改变,我们看下图我重新连接了一个客户端之后ls2就已经不生效了
[root@mylinux ~]# vi /etc/profile (更改每次终端连接都会加载的文件)
并在文件最后加上PATH=$PATH:/root/并保存就可以使之永久生效
重新开启终端发现已经生效
需要删除的话可以直接删除文件里面的PATH=$PATH:/root/
211 cp命令
拷贝一个文件到某处并改名
[root@mylinux ~]# cp /root/2/1.txt /root/3/2.txt (拷贝1.txt到3文件夹下面并且改名为2.txt)
[root@mylinux ~]# ls /root/3/
2.txt
拷贝一个文件到某处并覆盖里面的某一个文件
[root@mylinux ~]# cp /root/2/1.txt /root/3/2.txt
cp:是否覆盖"/root/3/2.txt"? y
[root@mylinux ~]# ls /root/3
2.txt
拷贝目录到某处
[root@mylinux ~]# cp -r /root/2/ /root/3/ (建议所有目录结尾的路径都加上/)
[root@mylinux ~]# tree /root/3/
/root/3
├── 2
│ └── 1.txt
└── 2.txt
1 directory, 2 files
也可以
[root@mylinux ~]# tree !$ (!$表示上一条命令里面的最后一个参数)
tree /root/3
/root/3
├── 2
│ └── 1.txt
└── 2.txt
1 directory, 2 files
[root@mylinux ~]# which cp
alias cp='cp -i' (我们发现cp是cp -i的别名,这里面的-i表示询问是一个安全参数,即上面我们看到的是否覆盖就是因为这个参数)
/usr/bin/cp
[root@mylinux ~]# which rm
alias rm='rm -i' (rm 也有 -i 安全参数)
/usr/bin/rm
[root@mylinux ~]# ls
2 3 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# cp -r ./2/ ./3/(拷贝目录如果目标目录下有该目录了就会询问是否覆盖)
cp:是否覆盖"./3/2/1.txt"? n
[root@mylinux ~]# cp -r ./3/ ./2/ (如果没有就不会询问)
[root@mylinux ~]# ls
2 3 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# ls ./2/
1.txt 3
212 mv命令
修改文件名字
[root@mylinux ~]# ls
2 3 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# mv ./2/ ./4/ (修改目录名称)
[root@mylinux ~]# ls
3 4 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# touch 1.txt
[root@mylinux ~]# mv ./1.txt ./2.txt (修改文件名称)
[root@mylinux ~]# ls
2.txt 3 4 anaconda-ks.cfg frp_0.11.0_linux_amd64
移动文件(或目录)并且更改名字或者只移动文件(文件或目录)
[root@mylinux ~]# ls
2.txt 3 4 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# mv 2.txt ./3/ (只更移动文件)
[root@mylinux ~]# ls ./3/
2.txt
[root@mylinux ~]# ls
3 4 anaconda-ks.cfg frp_0.11.0_linux_amd64
[root@mylinux ~]# mv ./3/2.txt ./5.txt
[root@mylinux ~]# ls
3 4 5.txt anaconda-ks.cfg frp_0.11.0_linux_amd64
移动时如果文件或者文件夹重名会询问是否覆盖,目标目录如果不存在相当于改名字
213 文档查看cat_more_less_head_tail命令
cat命令
cat顺序查看文件
tac倒序查看文件
[root@mylinux ~]# cat -A 5.txt ($行位符号)
1$
2$
$
[root@mylinux ~]# cat -n 5.txt (显示行号)
1 1
2 2
3
[root@mylinux ~]#
more命令
查看文件,按屏幕分页,并显示当前所看百分比。(按空格键向下翻页,Ctrl + B 可以回翻)
[root@mylinux ~]# wc -l anaconda-ks.cfg (查看文件内容行数)
51 anaconda-ks.cfg
>>符号
通过 >> 符号可以使前面的文件内容追加到后面的文件里面去(这里是从最后写入进去)
[root@mylinux ~]# cat 1.txt
a b c
[root@mylinux ~]# cat 5.txt
1 2 3 4
[root@mylinux ~]# cat 1.txt >> 5.txt
[root@mylinux ~]# cat 5.txt
1 2 3 4
a b c
less命令
[root@mylinux ~]# less anaconda-ks.cfg (和more差不多,但是支持方向键一行一行的向下翻看和向上回看,也支持空格翻页,Ctrl + B 回翻,到最后需要按q键退出)
在lees中还有搜索功能,可以输入/然后后面跟上字符串搜索字符串,搜索出来的字符串高亮显示,这是可以按n查看下一个,Shift + n 可以查看上一个。
输入/然后后面跟上字符串搜索字符串,搜索出来的字符串高亮显示,这是可以按n查看上一个,Shift + n 可以查看下一个。
Shift + g定位到末尾,g定位到文首
head命令
查看文件内容的头十行
[root@mylinux ~]# head -n 2 anaconda-ks.cfg (查看头两行)
[root@mylinux ~]# head anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
tail命令
查看文件内容的末尾十行
[root@mylinux ~]# tail -f anaconda-ks.cfg (查看动态文件)
[root@mylinux ~]# tail anaconda-ks.cfg
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end