Linux文件、目錄及相關指令學習

Linux學習筆記

1、Linux部分定義      

linux哲學思想

      1 一切皆文件,包括硬件node

      2 小型,單一用途的程序(功能儘可能單一)--------> 目標是一個程序集合多個單一功能的程序完成複雜的功能python

      3  連接程序,完成複雜的任務,須要用戶完成linux

      4 避免使人困惑的用戶界面nginx

      5 配置數據存儲在文件中git

開發接口標準       

      ABI:Application Binary Interface 描述了應用程序和OS之間的底層的接口,容許編譯好的代碼在使用兼容ABI的系統中運行       程序員

      API:Application Programming interface 定義了源代碼和庫之間中接口,所以一樣的源代碼能夠在支持這個api的任何系統中編譯算法

用戶交互界面                              shell

      GUI:Graphic User Interface 圖形用戶界面                              apache

      CLI:Command Line Interface 命令行界面編程

文件結構:倒置樹結構,全部文件路徑都從根開始

      basename 基名

      dirname 路徑名

路徑

      絕對路徑:文件路徑從根開始,指向要到達的文件。 eg:cd  /bin/bash

      相對路徑:從當前位置出發,到要到達的文件路徑。 eg:cd  bin/tmp 進程init               

進程

      程序的安全上下文,運行的程序的能訪問的資源的權限取決於發起進程的用戶的權限。

      程序運行時系統就會建立一個進程,併爲它分配資源,而後核心開始處理該進程。               

      子進程先於父進程結束。               

      殭屍進程:進程結束後,父進程才能結束,不然,父進程結束了,子進程沒有結束,可是子進程處於殭屍狀態。  

操做系統下,程序員的主要工做圍繞兩棵樹展開。

      兩棵樹,文件樹-/,進程樹-init;對其進行增刪改查四個操做。

程序=指令+數據

程序=算法+數據結構

                以算法爲中心,數據結構服務於算法:過程式編程

                以數據爲中心,算法服務於數據:對象式編程

設備終端                                 

      物理終端 /dev/console       

      虛擬終端 /dev/tty# [1-6] Ctrl+ Alt +F[1-6]       

      僞終端     /dev/pts/#    (ssh遠程鏈接,圖形界面開啓的終端)        

      圖形終端 /dev/tty7       

      串行終端 /dev/ttyS#       

查看當前的終端設備:#tty

2、Linux指令學習

bash的內部命令              

       enable command 啓用內部命令              

       enable command -n command禁用內部命令              

       enable command -n 查看禁用的內部命令                

        命令格式  【-w   /  --word  】 【參數】              

        type cmd  查看命令類型 內部命令是當前使用的shell的,其餘外部命令可經過whereis cmd或者which cmd (外部可執行命令的文件路徑獲取)查詢   

        eg:which  eg:which which        which tty

cd:change directory,改變工做會目錄,只輸入cd會回到當前用戶的家目錄,與cd~相同。

cd -:切換至上一目錄。

tty 顯示當前設備類型

whoami 顯示當前身份

w顯示全部當前用戶及操做

who顯示當前操做用戶

alias/unalias定義別名/取消定義別名,在指令最左端輸入\禁用別名。

hwclock :硬件時鐘

hwclock -s :硬件時鐘同步爲系統時鐘             

    -w :系統時鐘同步爲硬件時鐘          

date:系統時間                    

      +%a : 周幾的縮寫           

      +%A : 周幾的全寫          

      +%b :幾月的縮寫 +%h          

      +%B :幾月的全寫           

      +%c :本地日期時間          

      +%C :2018的20           

      +%d :某月的幾號 %e          

      +%D :日期 07/25/18          

      +%F : 日期 2018-07-25          

      +%g :2018的18           

      +%H :幾點-24小時制 00-23           

      +%I :幾點-12小時制 00-12           

      +%j :一年的第幾天           

      +%k : 0-23           

      +%l : 0-12           

      +%m : 月           

      +%M :分鐘           

      +%T : 08:42:11          

      +%u : 一週的第幾天 Monday是第一天 1-7           

      +%w : 一週的第幾天 SUNday是第一天 0-6          

      +%U :一年的第幾周           

      +%y : 2018 的18          

      +%Y :年           

設置時間:date [-u] [MMDDhhmm][[cc]YY][.SS]]

shutdown 關機                 

      -r重啓                  

      -h 關機          等於halt                 

      -c取消                                 

          +m延後關機

reboot重啓

 獲取幫助

help:幫助指令,使用格式           

      help [COMMAND]            [COMMAND] -h            [ COMMAND] --help

man:手冊頁放在/usr/share/man       

    man章節:         

      一、用戶命令         

      二、系統調用         

      三、C庫調用         

      四、設備文件以及特殊文件         

      五、配置文件格式         

      六、遊戲         

      七、雜項           ·

      八、管理類命令         

      九、linux內核API          

   man幫助段落說明:         

      NAME:名稱及簡要說明         

      SYNOPSIS:用法格式         

      DESCRIPTION:詳細描述         

      OPTIONS:選項說明         

      EXAMPLES:實例

  查看手冊:man 1 cat         

  列出全部幫助:man -a cat         

  搜索man手冊:man -k cat

      

經過在線文檔獲取幫助:第三方應用官方文檔       

      http://www.nginx.org       

      http://tomcat.apache.org       

      http://httpd.apache.org       

      http://www.python.org     

經過發行版官方的文檔光盤或網站能夠得到,安裝指南、部署指南、虛擬化指南等,紅帽知識庫和官方在線文檔       

http://kbase.redhat.com       

http://www.redhat.com/docs       

http://access.redhat.com          

3、Linux的文件管理

文件系統

文件和目錄被組織成一個單根倒置樹結構
文件系統從根目錄下開始,用「/」表示
根文件系統(rootfs):root filesystem
文件名稱區分大小寫
以.開頭的文件爲隱藏文件
路徑分隔的 /
文件有兩類數據:
 元數據:metadata(保存屬性信息)
 數據:data
文件系統分層結構:LSB  Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
 http://www.pathname.com/fhs/

文件名規則

文件名最長255個字節
包括路徑在內文件名稱最長4095個字節
藍色-->目錄   綠色-->可執行文件    紅色-->壓縮文件   淺藍色-->連接文件  灰色-->其餘文件 紫色-->套接字文件
除了斜槓和NUL,全部字符都有效.但使用特殊字符的目錄名和文件不推薦使用,有些字符須要用引號來引用它們。
標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如:MAIL, Mail, mail, mAiL
文件系統結構
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
/bin:供全部用戶使用的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
/lib64:專用於x86_64系統上的輔助共享庫文件存放位置
/etc:配置文件目錄
/home/USERNAME:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動設備掛載點(非強制)
/mnt:臨時文件系統掛載點(非強制)
/dev:設備文件及特殊文件存儲位置
 b: block device,隨機訪問
 c: character device,線性訪問
/opt:第三方應用程序的安裝位置
/srv:系統上運行的服務用到的數據
/tmp:臨時文件存儲位置,自動清除30天內未訪問的文件
/usr: universal shared, read-only data 全局共享只讀數據
     bin: 保證系統擁有完整功能而提供的應用程序
     sbin:
     lib:32位使用
     lib64:只存在64位系統
     include: C程序的頭文件(header files)
     share:結構化獨立的數據,例如doc, man等
     local:第三方應用程序的安裝位置(非關鍵)
/var: variable data files 可變數據文件
    cache: 應用程序緩存數據目錄
    lib: 應用程序狀態信息數據
    local:專用於爲/usr/local下的應用程序存儲可變數據;
    lock: 鎖文件
    log: 日誌目錄及文件
    opt: 專用於爲/opt下的應用程序存儲可變數據;
    run: 運行中的進程相關數據,一般用於存儲進程pid文件
    spool: 應用程序數據池
    tmp: 保存系統兩次重啓之間產生的臨時數據
/proc: 用於輸出內核與進程信息相關的虛擬文件系統,僞文件系統
/sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置,初學者最好關掉selinux,輸出disabled爲關閉,輸出enforcing爲開啓輸出permissive爲許可模式。
      getenforce 判斷安全系統是否開啓
                     setenforce 0 關閉安全系統
                    注意要想永久關閉要改配置文件,文件位於/etc/selinux/config,將其中SELINUX=後的參數改成disabled

Linux的文件類型

  -:普通文件
  d: 目錄文件
  b: 塊設備
  c: 字符設備
  l: 符號連接文件
  p: 管道文件pipe
  s: 套接字文件socket

文件權限:

   第一位表示文件類型,第2-4位表示屬主權限,第5-7位表示屬組權限,第8-10位表示其餘用戶權限,數字2的位置表示被硬連接的次數,後邊的兩個root表示的是屬主和屬組,後邊是大小、修改時間、文件名。文件的權限主要針對三類對象進行定義
   owner: 屬主, u
   group: 屬組, g
   other: 其餘, o
  每一個文件針對每類訪問者都定義了三種權限
權限 文件 目錄  
r: Readable    可以使用文件查看類工具獲取其內容 可使用ls查看此目錄中文件列表  
w: Writable 可修改其內容 可在此目錄中建立文件,也可刪除此目錄中的文件  
x: eXcutable  能夠把此文件提請內核啓動爲一個進程 可使用ls -l查看此目錄中文件列表,能夠cd進入此目錄  
 
 
 
 
 
文件的權限由八進制的三位數表示000-777
  文件默認的權限由管理員設定的umask碼(反向掩碼)決定。
  目錄的算法爲777-umask=用戶對目錄的權限。
  文件是666-umask=用戶隊文件的權限。
    例如:管理員umask碼爲0022,看後三位,777-022=755,這表示目錄的屬主擁有文件的所有權限,屬組和其餘用戶擁有文件的讀和執行的權限,而文件則是666-022=644,這表示root用戶有寫和讀的權限,而屬組和其餘用戶只有讀的權限。
  通常將普通用戶的umask碼默認爲002,普通用戶不要給執行的權限。
  umask碼能夠修改,普通用戶修改後只對當前shell有效。永久修改要改配置文件,文件位於當前用戶家目錄下的隱藏文件.bashrc或.bashprofile,進入加umask=0002
在centOS 6下,設置umask碼後,文件可被其餘用戶執行時,系統會自動將結果加1,取消其餘用戶的執行權限。

文件名通配符

* 匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工做目錄
~- 前一個工做目錄
[0-9]  匹配數字範圍
[a-z]:字母
[A-Z]:字母
[wang]  匹配列表中的任何的一個字符
[^wang] 匹配列表中的全部字符之外的字符

預約義的字符類:man 7 glob

 [:digit:]:任意數字,至關於0-9
 [:lower:]:任意小寫字母
 [:upper:]: 任意大寫字母
 [:alpha:]: 任意大小寫字母
 [:alnum:]:任意數字或字母
 [:blank:]:水平空白字符
 [:space:]:水平或垂直空白字符
 [:punct:]:標點符號
 [:print:]:可打印字符
 [:cntrl:]:控制(非打印)字符
 [:graph:]:圖形字符
 [:xdigit:]:十六進制字符

4、LInux的目錄管理

目錄操做指令

pwd:至關於echo $PWD,當前所處目錄的信息儲存在PWD變量下。
CWD:current working directoey 當前工做目錄
OLDPWD:上一工做目錄
cd change directory,使用絕對或相對路徑,改變工做會目錄,只輸入cd會回到當前用戶的家目錄,與cd~相同
      cd.. 返回上級目錄
      cd. 其中.表示當前目錄  eg : cd ./bin/
      cd - 切換至上一目錄,可在本目錄與上一目錄之間切換
ls 列出當前目錄的內容或指定目錄
ls -a 包含隱藏文件
ls -l 顯示額外的信息
ls -R  目錄遞歸經過
ls -ld  目錄和符號連接信息
ls -1  文件分行顯示
ls –S  按從大到小排序
ls –t   按mtime排序
ls –u   配合-t選項,顯示並按atime重新到舊排序
ls –U  按目錄存放順序顯示
ls –X  按文件後綴排序
ls-i 顯示inode號     

cd:change directory,改變工做會目錄,只輸入cd會回到當前用戶的家目錄,與cd~相同。

cd -:切換至上一目錄。

touch 建立文件和刷新時間
 touch [OPTION]... FILE...
  -a   僅改變 atime和ctime
  -m  僅改變 mtime和ctime
  -t  [[CC]YY]MMDDhhmm[.ss]     
     指定atime和mtime的時間戳
    -c  若是文件不存在,則不予建立
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
        SRC是一個文件:
       若是目標不存在:新建DEST,並將SRC中內容填充至DEST中
       若是目標存在:
            若是DEST是文件:將SRC中的內容覆蓋至DEST中
                基於安全,建議爲cp命令使用-i選項
            若是DEST是目錄:在DEST下新建與原文件同名的文件,並將SRC中內容填充至新文件中
        SRC多個文件
         DEST必須存在,且爲目錄,其它情形均會出錯;
   SRC是目錄:此時使用選項:-r(遞歸)
         若是DEST不存在:則建立指定目錄,複製SRC目錄中全部文件至DEST中;
         若是DEST存在:
             若是DEST是文件:報錯
             若是DEST是目錄:
  -i:覆蓋前提示  –n:不覆蓋,注意二者順序
  -r, -R: 遞歸複製目錄及內部的全部內容
  -a: 歸檔,至關於-dR --preserv=all
  -d:--no-dereference --preserv=links 不復制原文件,只複製連接名
  --preserv[=ATTR_LIST]
     mode: 權限
     ownership: 屬主屬組
     timestamp:
     links
     xattr
     context
     all
  -p: 等同--preserv=mode,ownership,timestamp
  -v: --verbose
  -f: --force
  -u:--update 只複製源比目標更新文件或目標不存在的文件
  --backup=numbered 目標存在,覆蓋前先備份加數字後綴

mv 移動  

  -i: 交互式    

  -f: 強制 rm 刪除,(慎用刪除,數據珍貴)

   -i: 交互式    

  -f: 強制刪除   

  -r: 遞歸           --no-preserve-root   eg:rm -rf /  刪庫。。。

tree 樹形表示目錄  

  -d: 只顯示目錄    

  -L level:指定顯示的層級數目    

  -P pattern: 只顯示由指定pattern匹配到的路徑 mkdir 建立目錄        

  -p: 存在於不報錯,且可自動建立所需的各目錄        

  -v: 顯示詳細信息        

  -m MODE: 建立目錄時直接指定權限  

  -P:無父目錄先建立父目錄

rmdir 刪除空目錄         

  -p: 遞歸刪除父空目錄       

   -v: 顯示詳細信息  

  -r 遞歸刪除目錄樹  

ln filename  [linkname ] 硬連接。   原始路徑;鏈接路徑

   硬連接:建立硬連接會增長額外的記錄項以引用文件

          對應於同一文件系統上一個物理文件

          每一個目錄引用相同的inode號

          建立時連接數遞增

          刪除文件時: rm命令遞減計數的連接

          文件要存在,至少有一個連接數

          當連接數爲零時,該文件被刪除      

      不能跨越驅動器或分區

ln -s 軟連接  

  軟連接:一個符號連接指向另外一個文件       

      ls - l的 顯示連接的名稱和引用的文件

      一個符號連接的內容是它引用文件的名稱

      能夠對目錄進行

      能夠跨分區 指向的是另外一個文件的路徑;      

      其大小爲指向的路徑字符串的長度;      

      不增長或減小目標文件inode的引用計數

file [options] <filename>...查看文件類型
  -b 列出文件辨識結果時,不顯示文件名稱
  -f filelist 列出文件filelist中文件名的文件類型
  -F 使用指定分隔符號替換輸出文件名後默認的」:」分隔符
  -L 查看對應軟連接對應文件的文件類型
  --help 顯示命令在線幫助

標準輸入和輸出

打開的文件都有一個fd: file descriptor (文件描述符),表示了文件的屬性。
Linux給程序提供三種I/O設備
標準輸入(STDIN)-0 默認接受來自鍵盤的輸入
標準輸出(STDOUT)-1 默認輸出到終端窗口
標準錯誤(STDERR)-2 默認輸出到終端窗口
I/O重定向:改變默認位置
STDOUT和STDERR能夠被重定向到文件
命令 操做符號 文件名
支持的操做符號包括:
  >  把STDOUT重定向到文件
  2> 把STDERR重定向到文件
  &> 把全部輸出重定向到文件
  > 文件內容會被覆蓋
  >| file 強制覆蓋
  >>  原有內容基礎上,追加內容
  2> 覆蓋重定向錯誤輸出數據流
  2>>  追加劇定向錯誤輸出數據流
  標準輸出和錯誤輸出各自定向至不一樣位置
    COMMAND > /path/to/file.out 2> /path/to/error.out
  合併標準輸出和錯誤輸出爲同一個數據流進行重定向
    &>   覆蓋重定向
    &>>  追加劇定向
    COMMAND > /path/to/file.out 2>&1 (順序很重要)
    COMMAND >> /path/to/file.out 2>&1
   ():合併多個程序的STDOUT
     ( cal 2007 ; cal 2008 ) > all.txt
tr  轉換和刪除字符
tr [OPTION]... SET1 [SET2]
  -c –C --complement:取字符集的補集
  -d --delete:刪除全部屬於第一字符集的字符
  -s --squeeze-repeats:把連續重複的字符以單獨一個字符表示
  -t --truncate-set1:將第一個字符集對應字符轉化爲第二字符集對應的字符
inode(index node)表中包含文件系統全部文件列表
    一個節點 (索引節點)是在一個表項,包含有關文件的信息( 元數據 ),包括:
     文件類型,權限,UID,GID
     連接數(指向這個文件名路徑名稱個數)
     該文件的大小和不一樣的時間戳
     指向磁盤上文件的數據塊指針
     有關文件的其餘數據
 bitmap 位圖
block bitmap 塊位圖
STDIN、STDOUT
管道(使用符號「|」表示)用來鏈接命令
 命令1 | 命令2 | 命令3 | …
將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN
STDERR默認不能經過管道轉發,可利用2>&1 或 |& 實現
最後一個命令會在當前shell進程的子shell進程中執行用來
組合多種工具的功能
 ls  | tr 'a-z' 'A-Z'
<<終止詞」命令從鍵盤把多行重導向給STDIN
     直到 終止詞 位置的全部文本都發送給STDIN
    有時被稱爲就地文本(heretext)
在命令尾部加-表示前一個命令的STDOUT   eg :cat  /etc/passwd|file -
tee 輸出重定向
相關文章
相關標籤/搜索