環境變量PATH 、cp命令 、 mv命令 、文檔查看cat/more/less/head/tail

mv命令

mv=move ,命令格式爲:mv 參數 源文件或目錄 目標文件或目錄 該命令有以下幾種狀況 ,安全

  • 目標文件是目錄,可是該目錄不存在:這種狀況會把源目錄重命名爲目標目錄名
  • 目標文件是目錄,且目錄存在:會把源目錄或文件移動到目標目錄下
  • 目標文件是文件,但該文件不存在:會把源文件重命名爲目標文件名,且移動到目標文件所在的目錄。
  • 目標文件是文件,且文件存在:會詢問是否用源文件將目標文件覆蓋。
[root@localhost lic]# mkdir /tmp/test_mv 
[root@localhost lic]# cd /tmp/test_mv/
[root@localhost test_mv]# mkdir 1 2
[root@localhost test_mv]# mv 1 3
[root@localhost test_mv]# tree 
.
├── 2
└── 3

2 directories, 0 files
[root@localhost test_mv]# mv 2 3
[root@localhost test_mv]# tree
.
└── 3
    └── 2

2 directories, 0 files
[root@localhost test_mv]# touch 3/1.txt 3/2/2.txt
[root@localhost test_mv]# tree
.
└── 3
    ├── 1.txt
    └── 2
        └── 2.txt

2 directories, 2 files
[root@localhost test_mv]# mv 3/1.txt 4.txt
[root@localhost test_mv]# tree
.
├── 3
│   └── 2
│       └── 2.txt
└── 4.txt

2 directories, 2 files
[root@localhost test_mv]# mv 4.txt 3/2/2.txt 
mv:是否覆蓋"3/2/2.txt"? y
[root@localhost test_mv]# tree 
.
└── 3
    └── 2
        └── 2.txt

2 directories, 1 file

如上圖所示,第一條命令是建立了一個測試用的目錄,這樣作是爲了保持文件和目錄的簡潔,隨後在/tmp/test_mv 目錄下建立了1 和2 兩個目錄,執行mv 1 3 結果能夠看到是將1目錄重命名爲3目錄。執行mv 2 3 結果是將2目錄移動到了已存在的3目錄當中。而後又建立了兩個文件3/1.txt 和3/2/2.txt ,執行mv 3/1.txt 4.txt 能夠看到本來4.txt 是不存在的,執行完以後發現將3/1.txt 移動到了當先目錄/tmp/test_mv 下並重命名爲4.txt ,最後一條指令 mv 4.txt 3/2/2txt ,3/2/2.txt 是本來就存在的,發現系統會提示是否覆蓋該文件。bash

cp命令

cp=copy 該命令用於複製,其參數以下less

  • -r 若是要複製一個目錄,必須使用該參數,不然不能複製
[root@localhost test_mv]# cp 3/2 3/4
cp: 略過目錄"3/2"
[root@localhost test_mv]# tree
.
└── 3
    └── 2
        └── 2.txt

2 directories, 1 file
[root@localhost test_mv]# cp -r 3/2 3/4
[root@localhost test_mv]# tree
.
└── 3
    ├── 2
    │   └── 2.txt
    └── 4
        └── 2.txt
  • -i 這是安全選項,若是遇到一個已存在的文件,會詢問是否覆蓋
[root@localhost test_mv]# cp -i 3/2/2.txt 3/4/2.txt 
cp:是否覆蓋"3/4/2.txt"?

環境變量PATH

前面提到過which命令能夠查看命令的絕對路徑和別名,理論上當咱們使用命令時須要敲命令的絕對路徑,可是咱們每每直接敲出來命令就能夠直接執行,這就是環境變量在起做用,測試

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

能夠看到,咱們使用的命令都是在上面所示的目錄裏面,若是咱們把ls命令移動到其餘目錄裏,ls就不能直接運行了,而使用ls的絕對路徑就能夠執行。日誌

[root@localhost ~]# mv /usr/bin/ls /tmp
[root@localhost ~]# ls
-bash: ls: 未找到命令
[root@localhost ~]# /tmp/ls
anaconda-ks.cfg

如何直接運行ls呢?第一個辦法就是把ls還原回去,還有就是講/tmp這個目錄加入到環境變量中code

[root@localhost ~]# PATH=$PATH:/tmp
[root@localhost ~]# ls
anaconda-ks.cfg

這是臨時的改變環境變量,當咱們從新打開一個終端時發現ls又不能生效了ast

Last login: Thu Jun  7 23:27:22 2018 from 192.168.254.1
[root@localhost ~]# ls
-bash: ls: 未找到命令

若是要它永久生效,須要更改PATH的配置文件/etc/profile,在最後新加一行PATH=$PATH:/tmp 就生效了。test

cat命令

cat 、tac,more ,less ,head ,tail 這幾個命令都是用來查看文件內容的。變量

  • cat -n ,查看文件時,會把行號也顯示在屏幕上
  • cat -A 查看文件時,會顯示全部的內容,包括特殊字符。

tac命令

tac命令跟cat命令幾乎徹底同樣,區別就是tac會將最後一行顯示在第一行,第二行是倒數第二行.......配置

more 命令

more命令查看文件時 ,當一屏幕顯示不下時,它會分屏顯示,看完第一屏可使用Ctrl+f 向下翻屏(空格鍵也能夠實現),也可使用Ctrl+D向上翻屏,若是想提早退出可使用q鍵。

less命令

less命令跟more相似,可是功能更多,按空格鍵能夠向下翻屏,j 鍵能夠向下移動,k 鍵能夠向上移動,在使用more/less時能夠按下/ 或?鍵,並輸入一串字符,就能夠在文本中查找該字符了,相似於Windows中Ctrl+f ,使用/是從光標所在行向下查找,按n鍵查找下一個。使用?鍵時是從光標所在行向上查找,按n鍵查找更上一個。

head 和tail 命令

head命令是查看文件內容的前10行,tail命令是查看文件內容的後10行,咱們也能夠指定多少行 ,用法是head -n 指定前n行,tail -n 指定顯示後n行。 若是文件在不斷增長,可使用tail -f 命令來動態顯示文件的末尾10行(通常查看日誌文件一類的使用)

相關文章
相關標籤/搜索