1. 程式人生 > >6.5 2.10-2.13

6.5 2.10-2.13

cp mv 查看文檔常用命令 PATH環境變量

2.10 環境變量PATH

[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參數,執行cprm等命令時自動執行該參數,當要執行覆蓋或刪除等操作時會詢問是否執行

[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,則無法繼續移動同名的hyc1hyc2目錄下

[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 headtail默認顯示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