1. 程式人生 > 實用技巧 >Linux基礎 Day2

Linux基礎 Day2

Linux-Day2

1.檔案目錄結構

  • 檔案和目錄被組織成一顆倒置的樹的結構
  • 檔案系統從根開始,“/”
  • 檔名稱嚴格區分大小寫
  • 隱藏檔案以“.”開頭
  • 路徑的分隔符為“/“

2.檔案命名規範

  • 檔案字元最長為255個字元
  • 包括路徑在內檔名稱為4095個
  • 顏色表示
    • 藍色》》表示資料夾或者目錄
    • 綠色》》表示可執行的檔案
    • 紅色》》壓縮檔案
    • 藍色》》連結檔案
    • 灰色》》表示其他檔案
    • 白色》》單獨的檔案
  • 除了斜槓和NULL,其他所有字元都可以使用
  • linux裡面對大小寫是敏感的

3.檔案系統結構

  • /boot引導檔案的存放位置,核心檔案、引導載入器都在此
  • /bin 所有的使用者都可以使用的命令
  • /sbin 管理類命令
  • /lib 啟動時程式使用的基本庫檔案.so結尾
  • /lib64 專門存放X86_64系統用到的檔案
  • /root管理員的家目錄
  • /media行動式移動裝置的掛載點
  • /mnt臨時檔案的掛載點
  • /dev 裝置檔案和特殊檔案的存放位置
  • /opt 第三方的應用的安裝
  • /tmp 臨時檔案的存放位置
  • /usr存放安裝程式
  • /var 存放經常變化的檔案,比如日誌
  • /proc存放記憶體啟動和相關虛擬檔案
  • /sys 輸出當前系統上的硬體相關的檔案
  • /srv 系統上允許的服務用的資料

4.Linux應用程式的組成

  • 二進位制的檔案
    • /bin
    • /sbin
    • /usr/bin
    • /usr/local/bin
    • /usr/local/sbin
  • 庫檔案
    • /lib
    • /lib64
    • /usr/lib
    • /usr/lib64
  • 配置檔案
    • /etc
    • /etc/name
    • /usr/local/etc
  • 幫助檔案
    • /usr/share/man

5.絕對路徑和相對路徑

  • 絕對路徑
    • 以根開始
    • 完整的檔案的存放位置
    • 可以讀取到任何一個檔案
  • 相對路徑
    • 不以根開始
    • 現對於當前的位置來決定
    • 可以簡短表示一個檔案或者資料夾
    • .當前目錄
    • ..父親目錄

6.目錄名和基名

  • basename
  • dirname
7.切換目錄
  • cd 切換目錄 change directory
    • 可以使用相對路徑
    • 可以使用絕對路徑
    • 可以直接寫cd切換到家目錄x
    • cd - 可以切換上一次的目錄

8.顯示當前的工作目錄

pwd print working directory

9.列出目錄或者檔案

ls list

命令格式: Usage:ls [OPTION]...[FILE]...

ls -a 顯示所有檔案

-rw-------. 1 root root 1743 Jul 14 15:54 anaconda-ks.cfg
-rw-r--r--. 1 root root 1791 Jul 14 15:56 initial-setup-ks.cfg
許可權         硬碟的引用次數     屬主  屬組  大小 訪問時間 檔名稱
ls -R遞迴顯示目錄
ls -d顯示目錄本身
ls -l(數字1)檔案分行顯示
ls -S 安裝檔案的大小排序
ls -r倒敘顯示
ls -t按照時間來排序
ls -lh顯示人類易讀的方式
ls -d */顯示當前目錄下的資料夾
l.只顯示隱藏資料夾

10.linux下的目錄型別

  • -用來表示檔案
  • d用來表示目錄
  • b塊裝置
  • c表示字元裝置
  • I表示符號連結檔案
  • s socket套接字

11.檢視檔案狀態

atime 訪問時間  檢視檔案內容就會發生變化
mtime 修改時間   改變內容就會發生變化
ctime 改動時間   原資料發生變化

12.建立新檔案

  • touch 建立空檔案和重新整理時間,如果檔案存在,則重新整理時間,如果檔案不存在則建立檔案
  • -a 只修改 atime和ctime
  • -m只修改mtime和ctime

13.檔案萬用字元

  • *所有
  • ?匹配的是任意單個字元
  • ~表示使用者的家目錄
  • [123]其中一個
  • [0-9]表示數字
  • ls file[a-z]字母(有坑)
  • [:lower:] 小寫字母
  • [:upper:] 大寫字母
  • [:alpha:]所有字母 a-zA-Z

14.建立目錄

mkdir建立目錄

  • -p遞迴建立
  • -pv顯示建立目錄的過程

顯示目錄樹安裝的命令

yum install -y tree

目錄樹的顯示

[root@promote c]# tree .

-d 只顯示資料夾

-L # 只顯示#層

15.建立目錄

rmdir只能是刪除非空目錄

  • -p遞迴刪除空的父錄
  • -pv顯示刪除的過程
  • rm -rf可以刪除非空目錄

16.複製檔案和資料夾

cp copy 預設情況下是別名,\cp 原來本身命令是不提示覆蓋的

-i 顯示提示資訊
-n 不覆蓋
-r 遞迴複製
-d 只複製連結檔案,不復制原始檔
-a 歸檔
-v 顯示過程
-b 在複製的過程中進行備份
[root@localhost test]# \cp -b file1 f1
[root@localhost test]# ls -l
total 12
-rw-r--r--. 1 root root 24 Jul 16 11:50 f1
-rw-r--r--. 1 root root 24 Jul 16 09:06 f1~
-rw-r--r--. 1 root root 24 Jul 16 09:05 file1
-rw-r--r--. 1 root root  0 Jul 16 09:02 file10
-rw-r--r--. 1 root root  0 Jul 16 09:02 file2
-rw-r--r--. 1 root root  0 Jul 16 09:02 file3
-rw-r--r--. 1 root root  0 Jul 16 09:02 file4
-rw-r--r--. 1 root root  0 Jul 16 09:02 file5
-rw-r--r--. 1 root root  0 Jul 16 09:02 file6
-rw-r--r--. 1 root root  0 Jul 16 09:02 file7
-rw-r--r--. 1 root root  0 Jul 16 09:02 file8
-rw-r--r--. 1 root root  0 Jul 16 09:02 file9
[root@localhost test]# cat f1
zhuxiayu111
zhuxiayu111
--backup==number備份檔案加數字
-p複製保留原來的屬性

  • 如果原始檔是檔案的話
    • 目標檔案是檔案
      • 目標檔案如果不存在的話,則新建目標檔案,並把內容寫到目標檔案中
      • 如果目標檔案存在的話,本來的命令是直接覆蓋,建議使用-i來提示使用者
    • 目標檔案是資料夾
      • 在資料夾中建立一個同名的檔案,並把檔案內容寫到新檔案中
  • 如果原始檔為多個檔案的話
    • 目標必須是資料夾,資料夾必須存在,其他的情況則必須報錯
  • 如果原始檔是資料夾的話
    • 目標檔案是檔案:不可以
    • 目標檔案必須是資料夾,必須使用-r選項
    • 如果目標檔案不存在:則直接建立目標資料夾,並把原始檔夾的資料都複製到目標資料夾
    • 如果目標檔案存在
      • 如果是檔案的話,則報錯
      • 如果是資料夾:則在目標資料夾中建立同名資料夾,並把所有資料都複製到新的資料夾

17.移動資料夾還可以重新命名

mv move

-i 提示
-f 強制
-b 備份
--backup=number 備份後面加數字
-v  顯示過程

18.刪除

rm remove

-i  提示
-r -R 遞迴刪除
-f 強制刪除
rm -rf 慎用

19.連結

軟連結(相當於windows得快捷方式)

  • 建立命令 ln -s 原始檔 目標檔案
  • 可以對目錄做軟連線
  • 指向另外一個檔案或者目錄的路徑,大小是路徑的長度的字元
  • 對磁碟應用次數沒有影響
  • 可以跨分割槽
  • 原始檔發生改變,目標軟連線會發生改變
  • 原始檔刪除,軟連線將不能訪問

硬連線

  • 磁碟引用次數會發生變化
  • 只想的是硬碟上的同一塊區域
  • 磁碟的引用數會隨著贏連結次數來增加
  • 不能對目錄做硬連線
  • 不能跨越分割槽
  • 原始檔發生改變,目標硬連線會發生改變
  • 原始檔刪除,硬連線將沒有影響

20.檢視檔案型別

輸入和輸出

  • 標準輸入 預設是來自鍵盤的輸入 stdin 0
  • 標準輸出 預設輸入到終端視窗 stdout 1
  • 標準錯誤輸出 預設輸出到終端視窗 stderr2

I/0重定向

  • 2> 將錯誤輸出重定向到檔案中
  • >將標準輸出重定向到檔案中
  • &>將所有的輸出都重定向到檔案中

禁止、允許覆蓋

  • 禁止覆蓋 set -C
  • 允許覆蓋 set+C

>>追加

/>>將標準輸出追加到資料夾中

2>>將錯誤輸出追加到檔案中

&>>將所有輸出追加到檔案中

20.將錯誤和正確的輸出分開

cat log.log
cat error.log

21.合併所有的輸出

  • &>覆蓋重定向
  • &>>追加重定向
  • command>file2>&1
  • command >>file2>&1
  • ():合併多個檔案的輸出
  • /dev/null是linux裡面無限資源的黑洞

22.從檔案匯入stdin

  • tr 替換

    [root@bogon test]# cd ~
    [root@bogon ~]# tr 'a-z' 'A-Z'
    DSFFfsf
    DSFFFSF
    
  • 多行檔案匯入stdin

    [root@bogon test]# cat >file1<<EOF
    > DSFS
    > FSFSDF
    > FSFS
    > SFF
    > EOF 最後的結尾必須與輸入結尾相同
    [root@bogon test]# cat file1
    DSFS
    FSFSDF
    FSFS
    SFF
    #其中eof是約定俗稱的
    

23.管道

管道使用“|”來表示

命令1|命令2|命令3

  • 把命令1的輸出結果當成命令2的輸入結果把命令2的輸出結果當命令3的輸出結果

    [root@bogon test]# ls file1|tr 'a-z' 'A-Z'
    FILE1
    
  • 預設情況下,管道只能傳送標準輸出

  • 如果需要吧錯誤輸出也傳遞,則需要|&

  • 一般用來組合多個命令

  • 有一些命令是不接受管道的

24.作業

  • 建立多層級目錄(利用中括號)

    mkdir -p /mnt/{bin,boot/dev,etc/{netbook,ssh/{sshd_config},sysconfig},sbin}
    [root@localhost ~]# cd /mnt
    [root@localhost mnt]# tree mnt
    mnt [error opening dir]
    
    0 directories, 0 files
    [root@localhost mnt]# cd
    [root@localhost ~]# tree /mnt
    /mnt
    ├── bin
    ├── boot
    │   └── dev
    ├── etc
    │   ├── netbook
    │   ├── ssh
    │   │   └── {sshd_config}
    │   └── sysconfig
    └── sbin