2.10环境变量PATH
which 命令可以查看一个命令的路径,和是否有别名.
which查询很快,which查询的路径,是从echo $PATH下面的路径中查找的,这些目录用冒号:做了一个分割。如果你想查询的命令在这些目录的下面,那么你敲这个命令的时候就不需要,敲绝对路径。比如rm,在echo $PATH几个目录下面,敲命令的时候就不需要敲绝对路径/bin/rm。不过敲命令其实还是应该敲绝路径。命令也是一个文件,用这个命令也要先找到这个命令在哪里。随便敲一个命令,不存在的,是从echo $PATH中找的。
对ls做个特殊处理,which ls,ls +绝对路径,显示出绿色的绝对路径
cp拷贝,将原来的路径改个名字为ls2
cp /bin/ls /tmp/ls2
/tmp/ls2和ls效果相同
ls2执行不了
如果想直接使用ls2,需要改一下环境变量。ls2在目录tmp下,可以把tmp加入到echo $PATH下的几个目录里。
具体做法:对环境变量PATH进行赋值,PATH=$PATH:/tmp/,然后通过echo $PATH查询,就能看新增的/tmp/了
再复制一个SSH终端,敲ls2,失败
改成永久的方法:vi /etc/profile可以让系统开机和每次打开终端,都需会去加载这个命令的。最后一行添加:PATH=$PATH:/tmp/,保存。cat一下,看有没有加上。再复制一个SSH终端,敲入ls2。
echo $PATH
不想让ls2生效的方法:把PATH下面的目录除了/tmp之外,其他的再敲一遍
PATH=/usr/local/sbin/:/usr/local/bin:/usr/sbin/:/usr/bin
或者vi编辑进行删除:
vi /etc/profile
删除PATH=$PATH:/tmp/,快捷方式:在命令模式下敲2次dd,剪切功能。
关闭窗口,快捷退出的方法:第一次Ctrl+d是退出登录,第二次退出时关闭窗口。复制ssd渠道,发现echo $PATH里面没有了/tmp/
2.11CP命令
cp即copy,拷贝,源文件拷贝成目标文件
比如将文件/etc/passwd/拷贝到/tmp/下并改个名字,/tmp/1.txt
拷贝目录/tmp/nihuipinglinux到/tmp/nihuiping,用命令cp –r
两者效果是一样的
附:拷贝目录应该是带 / 的,目录是类似于windows的文件夹,文件夹下面有东西就可以带 / ,敲入/tmp,Tab键会自动补齐 /,应该做一个统一化的约定,后面的课程中,有一个命令加不加 斜杠 是有区别的。建议用cp命令的时候,目录都加上斜杠,即使目录不存在也要加上斜杠
eg: cp -r /tmp/nihuipinglinux/ /tmp/nihuiping1/
tree !$ 表示上一条命令的最后一个参数,以空格或者Tab分割
!tree是指上一条命令里面以tree结尾的最新的最后一条命令
cp有别名
-i的意思是,rm -i,删除一个文件的时候会问,这是一个安全参数,是一个安全选项。如果希望不被询问,用绝对路径:/usr/bin/cp /etc/passwd /tmp/1.txt
拷贝文件的时候会问是否会被覆盖,拷贝目录的时候则不会询问是否会覆盖
这说明目标目录存在的时候,源目录直接放到目标目录下去。
如果目标目录不存在,它会把源目录拷贝过来,改个名字。
接着拷贝,会询问是否要覆盖,因为nihuiping1下面已经有了nihuipinglinux目录了
2.12mv命令
mv,move,把文件挪动地方。
同一个文件下,相当于是更改文件名
eg:把 文件anaconda-ks.cfg改名为anaconda-ks.cfg.1
也可以把一个文件放到另外一个分区下,同时再改个名字
eg:把tmp下的1.txt放到root下,改名为2.txt
把ls2放到nihuiping/下面去
一种较为特殊的情况:新建ls2文件,再次把ls2放到nihuiping/下,则会提示是否要覆盖,这是因为mv也有-i安全选项,若不想被提示,可以用绝对路径
eg:把nihuiping1/ 放到nihuiping/ 下面去,接着将nihuiping/ 移动到一个不存在的nihuiping2/下,其实相当于是改了个名字
如果目标用户存在,则会把源目录放到目标用户下。eg把nihuiping2/放到已经存在的nihuipinglinux/下。这一点和copy类似
新建目录nihuiping2,在其下面新建文件1.txt,树形显示nihhuiping2和nihuipinglinux
nihuipinglinux目录下已经有nihuiping2目录了,继续将刚刚新建的nihuiping2移动到nihuipinglinux下面去。结果被询问,是否要覆盖
总结:
如果是在是在同一个目录下面,相当于是改名字。
如果源文件移动到目标文件下,目标文件已有源文件,就会询问是否覆盖。
源目录移动到目标目录下,目标目录不存在,目标目录就会改个名字。
源目录移动到目标目录下,目标目录存在,则会把原目录放到目标目录里面去。
2.13文档查看cat_more_less_head_tai
cat用来查看文件内容的命令
tac倒叙查看文件内容
man cat
-A显示所有字符每一行后面有一个$符号,表示行的结尾,结束符
-n,会在行首显示每一行 的行号
more和cat差不多,但是more是一屏一屏的显示,按空格键下翻,结束会自动退出
wc用于查看一个文件的行数
可以手动的增加文件的长度,eg:将/etc/passwd的内容追加到anaconda-ks.cfg.1下面去。anaconda-ks.cfg.1是一个用于自动装系统的文件,一般用不到
长度增加的足够了,用more命令,效果更明显,一屏一屏往下显示
往回看,Ctrl+b,b表示background
less和more差不多,也可以空格键一屏一屏的往下翻,且支持方向键往上看,空格键往下,Ctrl+b往上,Ctrl+f往下,不会自动退出,q键退出
less还可以用于搜索字符串
eg:搜索lpd
/lpd,结果会高亮显示。想继续显示其他的lpd,按 n 键,表示next
比如搜索bin
n键往下翻
shift+n长按 是往前翻的
/是从前往后搜索
?是从后往前搜索。对于? n是往前翻,shift+n是往后翻
g定位行首,shift+g,即G定位到行尾
head命令可以查看一个命令的头10行
tail命令可以查看一个命令的后10行
head和tail可以指定行数,eg:head -n 2 文件名
tail -n 2 文件名
tail还有一个特殊用法,用于查看一个动态的文件,这个文件被不断写进内容,经常用于查看日志
tail -f默认的是查看后10行,不会退出命令
tail -f一个文件,复制SSH渠道,用cat命令在复制的SSH渠道对文件进行追加操作,原文件实现追加的操作
head追加前2行,原文件会相应的增加2行
tail追加后2行,源文件会相应的增加2行