Linux進階命令①
1檢視切換顯示統計目錄
1.pwd(print work directory)
[root@localhost ~]# pwd //顯示當前路徑
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月 6 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 顯示真實路徑
快捷方式 不是檔案真正的路徑
[root@localhost opt]#ln -s /opt/ky18/ /mnt/k18
#設定軟連線
[root@localhost opt]#cd /mnt/k18/
#切換到軟連線
[root@localhost k18]#ls
#
[root@localhost k18]#pwd
#顯示的是當前路徑
/mnt/k18
[root@localhost k18]#pwd -P
#檔案的真實路徑
/opt/ky18
2.cd
[root@localhost ~]# cd /etc/
[root@localhost etc]#
[root@localhost ~]# cd
[root@localhost ~]#
[root@localhost ~]# cd ~
[root@localhost ~]#
家目錄:存放使用者個性化配置檔案的地方
命令 | 效果 |
---|---|
cd cd ~ | 若不指定目標位置,切換到當前使用者的宿主目錄(家目錄) |
cd - | 到前一次目錄 |
一個點號“.”開頭(自己) | 表示以當前的工作目錄作為起點(已點開頭的是) |
兩個點號“..”開頭(上一級) | 表示以當前目錄的上一級目錄(父目錄)作為起點 |
“~使用者名稱”形式開頭 | 表示以指定使用者的宿主目錄(家目錄)作為起點 |
"."開標頭檔案 | 表示隱藏檔案 |
~ky18 (有個使用者叫ky18 家目錄為起點) | 表示以指定使用者的宿主目錄作為起點 |
— rw-r--r--. 1 root root 474 6月 27 11:33 dm.sh
— 普通型別
l 連線
b 磁碟
c 字元檔案
d 目錄
s 套接字
p 管道
3.ls
生產環境中慎重直接使用,檔案量過大會直接當機(有的伺服器上的檔案是千萬級別)
檢視當前檔案或目錄
ls [選項] [檔案或目錄… ]
-
-l 已長格式顯示檔案和目錄列表 ll=ls -l
-
-a 顯示全部包括隱藏檔案
-
-A 顯示全部檔案或隱藏檔案,但不包括 . 和..
-
-d 僅列出目錄本身,而不是列出目錄內的檔案資料
-
-h 友好顯示檔案大小(human,人性化)
-
-R 遞迴顯示該目錄及該目錄的子目錄下的所有內容
-
-t 已時間順序顯示
-
-r 倒序顯示
-
--color 顯示顏色
顏色表示的檔案型別:
- 黑色資料檔案 普通檔案
- 綠色 可執行檔案
- 黃色 塊裝置檔案硬體裝置(硬碟)
- 紅色 壓縮包
- 藍色 資料夾
- 天藍色 連線檔案(快捷方式)
-
-S 以檔案容量大小排序
4 .萬用字元
去匹配檔名(包括資料夾)ls
符號 | 效果 |
---|---|
? | 匹配一個字元 f?.txt |
* | 匹配所有非隱藏的字元無論多長多短,但不匹配 "." 開頭的檔案,即隱藏檔案 |
1到10 | |
a b c ...z | |
A B C .....Z | |
[123]([此處括號裡值代表一個字元]) | 取其中之一有就顯示沒有也無所謂 |
[a-z]單個小寫字母 | 範圍需要注意 |
[0-9]單個數字 | 匹配數字範圍(0123456789) |
\ | 轉義符,表示原來的意思 |
[[:lower:]] | 小寫字母表示 a-z |
[[:upper:]] | 大寫字母表示 A-Z |
[^zhou] | 匹配列表中的所有字元以外的字元 |
[[:digit:]] | 任意數字,相當於0-9 |
[[:alpha:]] | 任意字母 |
5.alias
臨時修改
-
alias 命令別名=’命令‘
-
unalias 別名命令 刪除別名
-
\加別名命令 (顯示原始命令)
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33 #如果不加引號無法識別 [root@localhost dev]# alias myls=ls -alh -bash: alias: -alh: 未找到 #就想使用原來的命令 [root@localhost dev]# ls [root@localhost dev]# \ls #刪除別名 [root@localhost dev]# unalias myvim [root@localhost dev]# myvim bash: myvim: 未找到命令...
6.du(disk usage)
檢視當前所在資料夾佔用了磁碟的多少單元塊。預設1單元塊為4K, 不滿4K 按4k算。
du [選項] [檔案或目錄… ]
選項 | 說明 |
---|---|
-a | 統計磁碟空間佔用時包括所有的檔案,而不僅僅只統計目錄 |
-h | 以更人性化的方式(預設以KB計數,但不顯示單位)顯示出統計結果 |
-s(--summarize) | 只統計所佔用空間總的(Summary)大小,而不是統計每個子目錄、檔案的大小 |
--max-depth=n (-d 1) | 最大顯示到第n層 |
--exclude | 不計入統計 |
注意a s無法同時使用
2 建立資料夾
-
檔名最長255個位元組
-
包括路徑在內檔名稱最長4095
-
除了斜槓和NULL,所有字元都有效.但使用特殊字元的目錄名和檔案不推薦使用,有些字元需要用引號來引用。
1 .建立目錄mkdir make directories
mkdir -p 遞迴建立 沒有資料夾 會自動遞迴建立
mkdir [選項] 目錄位置及名稱…
[root@localhost data]# mkdir a b c d
#建立多個資料夾
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/cccc
# 遞迴建立資料夾
[root@localhost data]# ls
a aaa b c d
[root@localhost data]# tree
.
├── a
├── aaa
│ └── bbb
│ └── cccc
├── b
├── c
└── d
mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
#一次建立多個檔案
touch
- touch 新檔案…(可為空) 檔名 不存在就是新建空檔案
- touch 不會破壞已有檔案 重新整理時間
2 .硬連線與軟連線檔案
硬連線: 同一個檔案取不同的名或者叫多個名字,不支援資料夾,建立一個連線數加一,多路徑訪問。
軟連線 : 類似於windows裡快捷方式,軟連線,符號連線,會指向原來的檔案(路徑使用絕對路徑)
ln 原始檔或目錄… 連結檔案或目標位置(硬連結)
[-s] 加s是軟連線
例子
ln -s 絕對路徑的原始檔 軟連線位置
ls 絕對路徑原始檔 硬連線位置
符號連線
對比項 | 硬連結 | 軟連結 |
---|---|---|
本質 | 本質是同一個檔案 | 本質不是同一個檔案 |
inode(身份證號) | 相同 | 不同 |
連線數 | 建立新的硬連結,連結數會增加,刪除硬連結,連結數減少 | 刪除,新建都不會改變 |
資料夾 | 不支援 | 支援 |
刪除原始檔 | 只是連結數減一,但連結檔案的訪問不受影響 | 無法訪問連線檔案 |
檔案型別 | 和原始檔相同 | 連結檔案,和原始檔無關 |
檔案大小 | 和原始檔相同(指向硬碟上的同一個檔案) | 原始檔的路徑的長度 |
硬連結:
[root@localhost data]# mkdir /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬連線
#不能跨分割槽建立連線 無法對資料夾建立
[root@localhost data]# ln /data/f1.txt /boot/f111.txt
ln: 無法建立硬連結"/boot/f111.txt" => "/data/f1.txt": 無效的跨裝置連線
#刪除硬連結可以繼續訪問硬連結。
#為什麼資料夾的連線數是2?
#.也是名字..也是
軟連結:
刪除原始檔無法訪問,再新建同名檔案後依然可以訪問
可以跨裝置
可以支援資料夾
相對路徑與絕對路徑 建議絕對路徑
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
總用量 8
lrwxrwxrwx. 1 root root 6 8月 26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root 66 8月 26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月 26 11:55 passwd
會認為f1111.txt 與f1.txt在同一目錄
################實際運用####################
軟體版本升級迭代
開發出 app1.0 做軟連線 app
如果有 app2.0 就把 軟連線app刪除 新建app2.0的軟連線app
$PATH 以後自行安裝軟體 系統不會自行 識別 httpd mysql ls
1將程式檔案 放入$PATH 路徑 usr/bin
2做軟連線 $PATH
3修改$PATH 路徑
3 . 複製
cp(copy)備份
- cp [選項]… 原始檔 目標 相當改名複製 資料夾 檔案相當於 改名字另存為
- cp [選項]... 原始檔... 資料夾 多個原始檔只能複製到資料夾
選項 | 說明 |
---|---|
-f | 覆蓋目標同名檔案或目錄時不進行提醒,直接強制複製 |
-i | 覆蓋目標同名檔案或目錄時提醒使用者確認 |
-p | 複製時保持原始檔的許可權、屬主及時間標記等屬性不變 |
-r | 複製目錄時必須使用此選項,表示遞迴複製所有檔案及子目錄 |
-a | 完整保留所有的資訊 |
-v | 視覺化 |
-u | 相當於增備,差異備份(只對資料夾起作用) |
[zhangsan@localhost ~]$ ll
#張三使用者新建檔案
總用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有許可權 包括軟連線檔案
[root@localhost data]# ll
總用量 0
-rw-r--r--. 1 root root 0 8月 29 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost data]# cp -r /etc/ /opt/
#複製資料夾要加 -r 不加不讓複製
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#變成 etc.bak 的子目錄
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#會問你要不要覆蓋,cp是別名 加\cp 直接覆蓋
[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt
#複製多個檔案必須要是目錄,不能是檔案,且目錄要存在。
cp: 目標"/opt/f111.txt"