Linux進階命令

红荼發表於2024-03-28

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)備份

  1. cp [選項]… 原始檔 目標 相當改名複製 資料夾 檔案相當於 改名字另存為
  2. 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" 



相關文章