[root@hyc-01-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Which会从以上环境变量PATH列出的目录中去查找需要查找的内容;
通常使用的命令会被包含在PATH环境变量列出的路径中,如果没有则需要输入命令的绝对路径来执行命令;
[root@hyc-01-01 ~]# which ls which查看ls绝对路径
alias ls='ls --color=auto'
/usr/bin/ls
[root@hyc-01-01 ~]# cp /usr/bin/ls /tmp/ls2 复制ls并改名为ls2
[root@hyc-01-01 ~]# /tmp/ls2 使用ls2的绝对路径与使用ls效果相同
anaconda-ks.cfg
[root@hyc-01-01 ~]# ls
anaconda-ks.cfg
在环境变量中添加新的路径:
[root@hyc-01-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@hyc-01-01 ~]# PATH=$PATH:/tmp/ 在PATH中添加新路径
[root@hyc-01-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@hyc-01-01 ~]# which ls2 which查找ls2
/tmp/ls2
[root@hyc-01-01 ~]# ls2
anaconda-ks.cfg
打开新终端发现原来修改的PATH环境变量不再生效
[root@hyc-01-01 ~]# vi /etc/profile
…
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
PATH=$PATH:/tmp/ 在/etc/profile的末尾新加一行输入,使修改的环境变量永久生效(编辑后要重启终端才能生效)
从PATH环境变量中去掉/tmp/路径
[root@hyc-01-01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 编辑后立即生效
[root@hyc-01-01 ~]# ls2 此时在当前终端下,/tmp/路径被去掉,ls2无法正常执行,其他终端ls2仍可以正常执行
-bash: ls2: 未找到命令
[root@hyc-01-01 ~]# vi /etc/profile 编辑删除PATH环境变量中的tmp路径
[root@hyc-01-01 ~]# ls2
anaconda-ks.cfg 编辑后在当前终端不生效
[root@hyc-01-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
[root@hyc-01-01 ~]# init 6
重启后:
[root@hyc-01-01 ~]# ls2 重启后生效
-bash: ls2: 未找到命令
总结:
直接在命令行定义的环境变量会立即生效,但仅对当前终端产生影响;
在/etc/profile下编辑的环境变量不会立即生效,但会对以后打开的所有终端生效;
2.11 cp命令
[root@hyc-01-01 ~]# cp /etc/passwd /tmp/1.txt 拷贝文件并改名
[root@hyc-01-01 ~]# cp -r /home/hyc /tmp/hyc1 拷贝目录并改名
[root@hyc-01-01 ~]# cp -r /home/hyc /tmp/hyc1
[root@hyc-01-01 ~]# tree !$ 表示上一条命令的最后一个参数
tree /tmp/hyc1
/tmp/hyc1
└── 1
└── 2
└── 3
└── 4
└── 5
5 directories, 0 files
-i
是一个安全参数,由于别名中携带了-i参数,执行cp、rm等命令时自动执行该参数,当要执行覆盖或删除等操作时会询问是否执行
[root@hyc-01-01 tmp]# rm -r /tmp/hyc1
rm:是否进入目录"/tmp/hyc1"? y
rm:是否删除普通文件 "/tmp/hyc1/.bash_logout"?n
rm:是否删除普通文件 "/tmp/hyc1/.bash_profile"?n
rm:是否删除普通文件 "/tmp/hyc1/.bashrc"?n
rm:是否进入目录"/tmp/hyc1/1"? n
[root@hyc-01-01 tmp]# which rm
alias rm='rm -i'
/usr/bin/rm
目标目录存在则将拷贝的目录放到目标目录下
[root@hyc-01-01 tmp]# cp -r /home/hyc /tmp/hyc1
[root@hyc-01-01 tmp]# ls /tmp/hyc1
1 hyc
目标目录不存在则将目标目录放到该路径下并改名
[root@hyc-01-01 tmp]# rm -rf /tmp/hyc1
[root@hyc-01-01 tmp]# cp -r /home/hyc /tmp/hyc1
[root@hyc-01-01 tmp]# ls -d /tmp/hyc1
/tmp/hyc1
hyc1目录下已经有了hyc目录,此时拷贝会询问是否覆盖原来的目录
[root@hyc-01-01 tmp]# ls /tmp/hyc1
1 hyc
[root@hyc-01-01 tmp]# cp -r /home/hyc /tmp/hyc1
cp:是否覆盖"/tmp/hyc1/hyc/.bash_logout"? n
cp:是否覆盖"/tmp/hyc1/hyc/.bash_profile"? n
cp:是否覆盖"/tmp/hyc1/hyc/.bashrc"? n
2.12 mv命令
改名
[root@hyc-01-01 ~]# mv anaconda-ks.cfg anaconda-ks.cfg.1
[root@hyc-01-01 ~]# ls
anaconda-ks.cfg.1 在同一目录下使用mv修改文件名
移动位置并改名
[root@hyc-01-01 /]# mv 1.txt /root/2.txt
[root@hyc-01-01 /]# ls /root/
2.txt anaconda-ks.cfg.1
移动文件位置
[root@hyc-01-01 tmp]# mv ls2 /root/ 移动文件位置
[root@hyc-01-01 tmp]# ls /root
2.txt anaconda-ks.cfg.1 ls2
[root@hyc-01-01 tmp]# touch ls2
[root@hyc-01-01 tmp]# mv ls2 /root
mv:是否覆盖"/root/ls2"? n
由于tmp下已经存在ls2,所以会询问是否要覆盖;
[root@hyc-01-01 tmp]# which mv mv别名中包含了询问的-i参数
alias mv='mv -i'
/usr/bin/mv
若不想被询问则可以使用绝对路径;
[root@hyc-01-01 tmp]# /usr/bin/mv ls2 /root
[root@hyc-01-01 tmp]# ls /root
2.txt anaconda-ks.cfg.1 ls2
目标目录不存在,默认修改目录名称
[root@hyc-01-01 tmp]# ls
1.txt
hyc
hyc1
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-chronyd.service-NivrOU
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-vgauthd.service-tOI3yN
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-vmtoolsd.service-Dmal7Q
systemd-private-68e903313c14409eacbfe6cd62bb86f1-chronyd.service-OLfg6k
systemd-private-68e903313c14409eacbfe6cd62bb86f1-vgauthd.service-QmAF2a
systemd-private-68e903313c14409eacbfe6cd62bb86f1-vmtoolsd.service-mhDObv
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-chronyd.service-oVr265
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-vgauthd.service-ejJeNJ
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-vmtoolsd.service-mTGiss
[root@hyc-01-01 tmp]# mv hyc hyc2
[root@hyc-01-01 tmp]# ls
1.txt
hyc1
hyc2
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-chronyd.service-NivrOU
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-vgauthd.service-tOI3yN
systemd-private-1a74390875ee4c98ad59a45fa70b6dde-vmtoolsd.service-Dmal7Q
systemd-private-68e903313c14409eacbfe6cd62bb86f1-chronyd.service-OLfg6k
systemd-private-68e903313c14409eacbfe6cd62bb86f1-vgauthd.service-QmAF2a
systemd-private-68e903313c14409eacbfe6cd62bb86f1-vmtoolsd.service-mhDObv
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-chronyd.service-oVr265
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-vgauthd.service-ejJeNJ
systemd-private-fb38c0e27d9549b79f65eea8141c6a7a-vmtoolsd.service-mTGiss
目标目录存在,则会将源目录放到目标目录下
[root@hyc-01-01 tmp]# mv hyc1 hyc2
[root@hyc-01-01 tmp]# ls hyc2
1 hyc1
目标目录hyc2下已存在hyc1,则无法继续移动同名的hyc1到hyc2目录下
[root@hyc-01-01 tmp]# mkdir hyc1
[root@hyc-01-01 tmp]# mv hyc1 hyc2
mv:是否覆盖"hyc2/hyc1"? y
mv: 无法将"hyc1" 移动至"hyc2/hyc1": 文件已存在
2.13文档查看cat_more_less_head_tail
cat
[root@hyc-01-01 /]# cat /etc/passwd
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
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
…
cat –A 查看文件的所有字符
[root@hyc-01-01 /]# 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$
[root@hyc-01-01 /]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash cat的同时显示行号
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
…
tac 倒序查看文件
[root@hyc-01-01 /]# tac /etc/passwd
hyc:x:1000:1000::/home/hyc:/bin/bash
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
…
more 一屏一屏显示文件内容,所有内容查看完会自动退出
[root@hyc-01-01 ~]# wc -l anaconda-ks.cfg.1
51 anaconda-ks.cfg.1 文件共有51行
[root@hyc-01-01 ~]# cat /etc/passwd >> anaconda-ks.cfg.1
[root@hyc-01-01 ~]# cat /etc/passwd >> anaconda-ks.cfg.1 追加重定向查看到的内容到目标文件中
使用more命令时,按空格键向下翻屏;按ctrl+B向上翻屏
less
与more相同支持空格向下翻屏、ctrl+B向上翻屏;
支持上下方向键查看上一行或下一行;
支持ctrl+F向下翻屏;
退出命令需要按q否则不会自动退出;
less下查找指定字符(串):
/会从前向后查找匹配的项
输入/cdrom即/后跟要查找的字符后回车即可;
匹配的内容会高亮显示;
支持按N键向下查看,按shift+N向上查看;
所有匹配项查看完后会出现提示Pattern not found;
?会从后向前查找匹配的项
此时按N键会向上查看,按shift+N会向下查看;
其他用法相同;
快捷键
敲g会定位到首行,敲shift+g会定位到行尾;
head 查看文件开头的几行
[root@hyc-01-01 ~]# head anaconda-ks.cfg.1 head和tail默认显示10行
#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@hyc-01-01 ~]# tail anaconda-ks.cfg.1
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
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
hyc:x:1000:1000::/home/hyc:/bin/bash
-n参数 指定要查看的行数
[root@hyc-01-01 ~]# head -12 anaconda-ks.cfg.1 查看文件的头12行
#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
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
用tail查看动态文件
[root@hyc-01-01 ~]# tail -f anaconda-ks.cfg.1 会发现并没有退出命令,
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
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
hyc:x:1000:1000::/home/hyc:/bin/bash
…
[root@hyc-01-01 ~]# cat /etc/passwd >> anaconda-ks.cfg.1
此时另起一个终端,在新终端下向anaconda-ks.cfg.1追加内容会发现tail –f下显示的内容在动态增加
原文:http://blog.51cto.com/12216458/2125303