6.5 2.10-2.13
[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 復制
[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下顯示的內容在動態增加
6.5 2.10-2.13