环境变量PATH
先介绍一个命令 which,它用于查看某个命令的所在路径命令。
echo用来输出$PATH的值。PATH前面的$是变量的前缀符号。
使用 ls2 来代表 ls
[root@cham2 ~]# ls /usr/bin/ls
/usr/bin/ls
[root@cham2 ~]# cp /usr/bin/ls /tmp/ls2
[root@cham2 ~]# /tmp/ls2 /tmp/ls2 和ls是一样的
anaconda-ks.cfg
[root@cham2 ~]# ls
anaconda-ks.cfg
[root@cham2 ~]# ls2 直接ls2不行,因为ls2并没有在PATH的目录里面
-bash: ls2: 未找到命令
[root@cham2 ~]# PATH=$PATH:/tmp/ 把它加上,重新赋值,加上/tmp/
[root@cham2 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@cham2 ~]# ls2 再运行ls2就可以执行了
anaconda-ks.cfg
[root@cham2 ~]# which ls2 我们看一下
/tmp/ls2
打开一个新终端LS2又不能用了
因为/tmp自动退出了PATH的路径。 如果想永久的把/tmp加入到/PATH的路径下,
输入命令#vi /etc/profile
然后在最后一行加入PATH=$PATH:/tmp/
然后保存退出。
想ls2不生效 删除PATH环境变量下/tmp路径
给PATH重新赋值一下 执行命令: #PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
然后把vi /etc/profile的最后一行添加PATH路径删除即可。
命令cp
1、命令语法:
cp [选项][来源文件][目的文件]
2、命令描述:
cp是copy(即复制)的简写
3、命令选项:
-r: 如果要复制一个目录,必须加-r选项,否则不能复制
-i:这是安全选项,如果遇到一个已存在的文件,会询问是否覆盖。
**小知识**在用cp命令时,所有的目录全部末尾加上"/"。cp目录时,不会询问你是否覆盖,说明当目标目录已经存在的时候,它会把原目录直接放到目标目录下面去。如果目标目录不存在,它会把原目录cp过来,并改变一个名字。
以下是命令行:
[root@cham2 ~]# cp copy ^C
[root@cham2 ~]# cp /etc/passwd /tmp/1.txt 拷贝文件 passwd到tmp/1.txt
[root@cham2 ~]# cp -r /tmp/chamlinux/ /tmp/cham 拷贝目录与要加-r 拷贝目录需要加“/”
[root@cham2 ~]# tree /tmp/chamlinux/
/tmp/chamlinux/
└── 2
└── 2.txt
1 directory, 1 file
[root@cham2 ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@cham2 ~]# ls /tmp/
1.txt ks-script-JG2UJk yum.log
cham ls2
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 ~]# ls /tmp
1.txt ks-script-JG2UJk yum.log
cham ls2
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 ~]# cp -r /tmp/chamlinux/ /tmp/cham1/ chamlinux拷贝到cham1目录
[root@cham2 ~]# tree !$ *小知识*上一条命令的最后参数
tree /tmp/cham1/
/tmp/cham1/
└── 2
└── 2.txt
1 directory, 1 file
[root@cham2 ~]# tree !$
tree /tmp/cham1/
/tmp/cham1/
└── 2
└── 2.txt
1 directory, 1 file
[root@cham2 ~]# which cp 看一下 which cp
alias cp='cp -i'
/usr/bin/cp
[root@cham2 ~]# which rm -i是安全选项,询问是否覆盖或者是否删除
alias rm='rm -i'
/usr/bin/rm
[root@cham2 ~]# cp /etc/passwd /tmp/1.txt 会询问是否覆盖
cp:是否覆盖"/tmp/1.txt"? ^C
[root@cham2 ~]# /usr/bin/cp /etc/passwd /tmp/1.txt 这样才不会询问
[root@cham2 ~]# tree /tmp/
1.txt
cham/
cham1/
chamlinux/
.font-unix/
.ICE-unix/
ks-script-JG2UJk
ls2
systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy/
.Test-unix/
.X11-unix/
.XIM-unix/
yum.log
[root@cham2 ~]# tree /tmp/cham1/
/tmp/cham1/
└── 2
└── 2.txt
1 directory, 1 file
[root@cham2 ~]# cp -r /tmp/chamlinux/ /tmp/cham1/ 拷贝目录的时候不会问是否覆盖
[root@cham2 ~]# ls /tmp/cham1/ 看一下。当目标目录已经存在的时候,会把源目录放到 目标目录下面去,如果目标目录不存在的,会把源 目录拷贝过来并改个名字
2 chamlinux
[root@cham2 ~]# tree /tmp/cham1/
/tmp/cham1/
├── 2
│ └── 2.txt
└── chamlinux
└── 2
└── 2.txt
3 directories, 2 files
[root@cham2 ~]# cp -r /tmp/chamlinux/ /tmp/cham1/ 因为chamlinx下面已经存在chamlinux
所以会存在是否覆盖
cp:是否覆盖"/tmp/cham1/chamlinux/2/2.txt"? n
命令mv
1.命令语法:
mv[选项][源文件或目录][目标文件或目录]
2.命令描述:
mv是move的简写,可以移动文件或者 重命名文件(语法为: mv [源文件名][修改后的文件名])
3.命令的几种情况:
-
目标文件是目录,但该目录不存在。
-
目标文件是目录,且该目标存在。
-
目标文件是文件,且文件不存在。
-
目标文件是文件,但该文件存在。
-
当目标文件是目录时,其存在与否,执行后的结果不一样。如果该目录存在,则会把源文件或目录移动到该目录中。如果该目录不存在,则会把源文件重命名为给定的目标文件名。
-
当目标文件是文件时,其存在与否,执行后的结果也是不一样的。如果该文件存在,则会询问是否覆盖。如果该文件不存在,则会把源文件重命名为给定的目标文件名。
命令行如下:
[root@cham2 ~]# mv move ^C
[root@cham2 ~]# ls
anaconda-ks.cfg
[root@cham2 ~]# mv anaconda-ks.cfg anaconda-ks.cfg.1 同一个目录下是改名字
[root@cham2 ~]# ls
anaconda-ks.cfg.1
[root@cham2 ~]# cd /tmp/ 进入tmp
[root@cham2 tmp]# ls
1.txt chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
cham ks-script-JG2UJk yum.log
cham1 ls2
[root@cham2 tmp]# mv 1.txt /root/2.txt 移动1.txt到root/2.txt文件不存在,把源文件 重命名为给定的目标文件名
[root@cham2 tmp]# ls /root/ 看一下
2.txt anaconda-ks.cfg.1
[root@cham2 tmp]# ls
cham ks-script-JG2UJk yum.log
cham1 ls2
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 tmp]# mv ls2 cham/
[root@cham2 tmp]# ls cham
2 ls2
[root@cham2 tmp]# touch ls2 再建一个ls2
[root@cham2 tmp]# mv ls2 cham/ 如果该文件存在,则会询问是否覆盖
mv:是否覆盖"cham/ls2"? n
[root@cham2 tmp]# which mv
alias mv='mv -i'
/usr/bin/mv
[root@cham2 tmp]# /usr/bin/mv ls2 cham/
[root@cham2 tmp]# ls
cham chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
cham1 ks-script-JG2UJk yum.log
[root@cham2 tmp]# ls cham/
2 ls2
[root@cham2 tmp]# ls
cham chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
cham1 ks-script-JG2UJk yum.log
[root@cham2 tmp]# mv cham1/ cham/
[root@cham2 tmp]# mv cham/ cham2/
[root@cham2 tmp]# ls
cham2 ks-script-JG2UJk yum.log
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 tmp]# ls
cham2 ks-script-JG2UJk yum.log
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 tmp]# mv cham2/ chamlinux/
[root@cham2 tmp]# ls chamlinux/
2 cham2
[root@cham2 tmp]# mkdir -pv cham2
mkdir: 已创建目录 "cham2"
[root@cham2 tmp]# ls
cham2 ks-script-JG2UJk yum.log
chamlinux systemd-private-5ec76fd91759498b901e85cba2554a24-vmtoolsd.service-H1l4Cy
[root@cham2 tmp]# touch cham2/1.txt
[root@cham2 tmp]# tree cham2
cham2
└── 1.txt
0 directories, 1 file
[root@cham2 tmp]# tree chamlinux
chamlinux
├── 2
│ └── 2.txt
└── cham2
├── 2
│ └── 2.txt
├── cham1
│ ├── 2
│ │ └── 2.txt
│ └── chamlinux
│ └── 2
│ └── 2.txt
└── ls2
7 directories, 5 files
[root@cham2 tmp]# mv cham2/ chamlinux/
mv:是否覆盖"chamlinux/cham2"? y
mv: 无法将"cham2/" 移动至"chamlinux/cham2": 文件已存在
[root@cham2 tmp]#
命令cat
1.命令语法 cat [参数] 文件名
2.命令描述 用于查看一个文件的内容并将其显示在屏幕上。(cat后面可以不加任何选项,直接跟文件名。)
3.命令参数 -n :查看文件时,把行号也显示在屏幕上。
-A :显示所有的内容,包括特殊字符。
命令tac
1.命令语法
tac 文件名
2.命令描述
命令tac是命令cat的反序写法,也是把文件的内容显示在屏幕上。
只不过是先显示最后一行,然后显示倒数第二行,最后才显示第一行。
小知识: #wc -l 文件名 //查看一个文件的行数
命令more
1.命令语法 more 文件名
2.命令描述
命令more也用于查看一个文件的内容,后面直接跟文件名。
当文件内容太多的时候,一屏不能全部显示时,用命令cat肯定是看不了前面的内容的,这时可以使用命令more。
当看完一屏后,按空格键可以继续看下一屏,看完所有内容后就会退出。
按Ctrl+D可以向上翻屏,按Ctrl+F可以向下翻屏(同空格)。
如果你想提前退出,按q即可。
命令less
1.命令语法
less 文件名
2.命令描述
命令less的作用和命令more一样,后面直接跟文件名,但命令less比more功能要多一点。
按空格键可以翻页。
按j键可以向下移动,按k键可以向上移动。
在使用more和less查看某个文件时,你可以按一下/键,并输入一个字符串(如root),然后回车,这样就可以查找这个字符串了。
如果是查找多个字符串,可以按n键显示下一个。
另外,也可以用?键代替/键来搜索字符串,唯一不同的是,/是在当前行向下搜索,而?是在当前行向上搜索。
命令head
1.命令语法
head 文件名
2.命令描述
命令head用于显示文件的前10行,后面直接跟文件名。
3.命令参数
-n :显示文件的前几行(n代表行数,n也可以省略)
命令tail
1.命令语法
tail 文件名
2.命令描述
和命令head类似,命令tail用于显示文件的最后10行,后面直接跟文件名。
3.命令参数
-n :显示文件的最后几行(-n后面有无空格均可,且字母n也可以省略)。
-f :它可以动态显示文件的最后10行(一般用来查看日志)。如果文件的内容在不断的增加(动态增加的内容会全部显示),使用-f选项非常方便和直观。比如tail -f /var/log/messages可以动态,实时地查看文件/var/log/messages中的内容。