Linux文件管理

Linux文件系統:

Linux: glibc

程序編譯方式:
    動態鏈接
    靜態編譯

進程的類型:
    終端:硬件設備,關聯一個用戶接口

    與終端相關:通過終端啓動
    與終端無關:操作引導啓動過程當中自動啓動

操作系統的組成:
    靜態:kernel,application

    文件系統:層級結構

FHS:filesystem hierarchy standard文件系統層級結構標準

    http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

    /bin : 所有用戶可用的基本命令程序文件;
    /sbin:供系統管理員使用的工具
    /boot:引導加載器必須用到的各種靜態文件:kernel,initramfs(initrd),grub等
    /dev : 存儲特殊文件或設備文件;
        設備有兩種類型:字符設備(線性設備),塊設備(隨機設備);
    /etc :系統程序的配置文件,只能爲靜態;  
    /home:普通用戶的家目錄的集中位置;一般每個普通用戶的家目錄默認爲此目錄下與用戶同名的子目錄,/home/username;
    /root:管理員的家目錄:可選;
    /lib :爲系統啓動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及內核提供內核模塊
        libc.so.*:動態鏈接的c庫
        ld*:運行時鏈接器/加載器;
        modules:用於存儲內核模塊的目錄
    /lib64:64位系統特有的存放64位共享庫的路徑;
    /media:便攜式設備掛載點,cdrom,floppy等;
    /mnt  :其他文件系統的臨時掛載點;
    /opt  :附加應用程序的安裝位置;可選路徑;
    /srv  :當前主機爲服務提供的數據;
    /tmp  :爲那些會產生臨時文件的程序提供的用於存儲臨時文件的目錄;可供所有用戶執行寫入操作;有特殊權限;
    /usr:usr hierarchy ,全局共享的只讀數據路徑;
        bin,sbin
        lib,lib64
        include:c程序頭文件
        share:命令手冊和自帶文檔的架構特有文件的存儲位置;
        local:另一個層級結構;
        X11R6:x-window程序的安裝位置
        src:程序源碼文件的存儲位置;
    /usr/local:讓系統管理員安裝本地應用程序;也通常用於安裝第三方程序;
    /var :/var hierarchy , 存儲常發生變化的數據的目錄;
        cache   應用緩存數據
        lib     可變狀態信息
        local   / usr / local的可變數據
        lock    鎖定文件
        log     日誌文件和目錄
        opt     / opt的可變數據
        run     與運行流程相關的數據
        spool   應用假脫機數據
        tmp     系統重新啓動之間保留的臨時文件

    /proc :內核和進程存儲其相關信息:他們多爲內核參數,例如net.Ipv4.ip._forward,虛擬爲net/ipv4/ip_forward,存儲於/proc/sys/,因此其完整路徑爲/proc/sys/net/ipv4/ip_forward;虛擬文件系統;
    /sys  :sysfs 虛擬文件系統提供了一種比proc更爲理想的訪問內核數據的途徑;其主要作用在於爲管理Linux設備模型的接口;內核和系統信息虛擬文件系統

    參考文檔:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html

Linux文件上的文件類型:
-:常規文件;即f;
d:directory ,目錄文件;
b:block device ,塊設備文件,支持以"block"爲單位進行隨機訪問;
c:character device ,字符設備文件,支持以"character"爲單位進行線性訪問;
major number :主設備號,用於標識設備類型,進而確定要加載的驅動程序;
minor number : 次設備號,用於標識同一類型中的不同的設備;
8位二進制:0-255
l:symbolic link,符號鏈接文件;
p:pipe,命令管道;
s:socket,套接字文件;

Linux基本命令:
命令類型:
外部命令
shell內嵌命令

    區分內外部命令:
        type commend
            內部:bulitin
            外部:顯示爲命令文件路徑;
                注意:命令可以有別名;別名可以與原名相同,此時原名被隱藏;因此要獲取原命令,則使用\command;

    命令別名:
        alias :獲取所有可用別名的定義;
        alias cmd :定義別名(注意:僅對當前shell進程有效);
        unalias name:撤銷別名; 

which:
    顯示命令完整路徑;

whereis:
    顯示二進制命令在何處,以及man手冊;
    -b:只查看二進制程序路徑;
    -m:只查看使用手冊文件路徑;
who:
    查看登入到前端口的用戶;
    -b:顯示系統最近一次啓動時間;
    -r:運行級別;
    -u:
w:
    who 的增強版,還可顯示做什麼,例如:CPU資源佔用....;

bash的基礎特性1:history

歷史命令:shell 進程會其會話中保存此前用戶提交執行過的命令;
    ]# history 
        定製history的功能,可通過環境變量實現;
            HISTSIZE:shell進程可保留的歷史的條數;
            HISTFLIE:持久保存命令歷史文件;
                .bash_history
            HISTFILESIZE:命令歷史文件數;

        命令用法:
            history [-c] [-d offset] [n] 
            history -anrw [filename] 
            history -ps arg [arg...]

            -c:清空命令歷史;
            -d offset:清除某條歷史命令;
            -r:從文件讀取命令歷史至歷史列表中;
            -w:把歷史列表中的命令追加至歷史文件中;
            history # :顯示最近#條命令;

        調用命令歷史列表中的命令:
            !#:調用第#條命令執行;
            !!:再一次執行上一條命令;
            !SITRING:再一次執行命令歷史列表中最近一個以SIRING(開頭字母,從下往上檢索)開頭的命令;

                注意:命令的重複執行有時候需要依賴於冪等性;

        調用上一條命令的參數:
            快捷鍵:esc+.
            字符串:!$

        控制命令歷史記錄的方式:
            環境變量:HISTCONTROL
                ignoredups:忽略重複的命令;
                ignorespace:忽略以空白字符開頭的命令
                ignoreboth:以上兩者同時生效;

            修改變量的值:
                NAME='VALUE'

總結:
FHS,命令及bash命令歷史
FHS:
/bin,/sbin,/lib,/lib64,/etc
/home,/root
/boot
/media,/mnt
/proc,/sys
/tmp
/srv 爲服務提供數據
/opt
/dev
/usr
/bin,/sbin,lib,lib64,share,local,include
/var
cache,lib,log,....
命令:which,whereis,who,w,alias,unalias
命令歷史:history

bash的基礎特性2: 命令/路徑補全
tab鍵

目錄管理類命令:mkdir,rmdir

mkdir: 創建目錄
    -p:遞歸創建目錄
    -v:顯示創建詳細過程
    -m MODE:直接給定權限

rmdir: 移除空目錄
    -p:只要目錄爲空就刪除,連續執行;(不提倡使用)
    -v:顯示過程;

實踐:
    如何創建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?
    如何創建a_c,a_d,b_c,b_d;
    創建目錄結構/tmp/mysysroot/
                    bin
                    sbin
                    etc
                        sysconfig
                            network-scripts
                    usr
                        bin
                        local
                            bin
                            etc
                        lib
                        lib64
                    var
                        cache
                        log
                        run

                ├── sysmyroot
                │   ├── bin
                │   ├── etc
                │   │   └── sysconfig
                │   │       └── network-scripts
                │   ├── sbin
                │   ├── usr
                │   │   ├── bin
                │   │   ├── lib
                │   │   ├── lib64
                │   │   └── local
                │   │       ├── bin
                │   │       └── etc
                │   └── var
                │       ├── cache
                │       ├── log
                │       └── run

bash的基礎特性3:命令行展開
~:自動展開爲用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,並能夠將其展開爲多項式;

    例如: mkdir -pv /tmp/x/{y1/{a,b},y2}
            mkdir -v {a,b}_{c,d}
            mkdir -pv /tmp/sysmyroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,local/{bin,etc},lib,lib64},var/{cache,log,run}}

tree命令:
-L level : 指定要顯示的層級;

bash的基礎特性4: 命令的執行狀態結果
命令執行的狀態結果:
bash通過狀態返回值來輸出此結果;
成功:0
失敗:1-255

    命令執行完成之後,其狀態返回值保存於 bash 的特殊變量$?中;

命令正常執行時,有的還會有命令返回值;
    根據命令及功能不同,結果個不相同;

引用命令執行結果:
    $(cmd)
    `cmd

        例如: -pv /tmp/$(date +%H-%M-%S)

bash的基本特性5:引用
強引用:''
弱引用:""
命令引用:``

bash的基礎特性6:快捷鍵
ctrl+a
ctrl+e

ctrl+u
ctrl+k

ctrl+l

文本查看命令:cat,tac,head,tail,more,less

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章