Python筆記_第一篇_面向過程_第一部分_9.Ubuntu基礎操做

第一部分   Ubuntu簡介linux

  Ubuntu(烏班圖)是一個機遇Debian的以桌面應用爲主的Linux操做系統,聽說其名稱來自非洲南部祖魯語或科薩語的「Ubuntu」一詞,意思是「人性」、「個人存在是由於你們的存在」,是非洲傳統的一種價值觀。正則表達式

  Ubuntu的目的在於爲通常用戶提供一個最新同時又至關穩定,主要以自由軟件構建而成的操做系統。Ubuntu目前具備龐大的社區力量支持,用戶能夠方便的從社區得到幫助。shell

 

第二部分 安裝(略:參照環境配置)數據庫

 

第三部分   磁盤類型和分區(常識瞭解)ubuntu

3.1   磁盤類型:vim

 3.1.1   ATA磁盤(IDE磁盤)windows

  IDE(Integrated Drive Electronics),本意是把控制器與盤體集成在一塊兒的硬盤驅動器,是一種硬盤的傳輸結構,有另外一個名稱叫作ATA(Advanced Technology Attachment),指的是相同的東西。緩存

  圖片:安全

  特色:bash

  通常使用16-bit數據總線,每次總線處理時傳送2個字節。PATA接口通常是100Mbytes/sec帶寬,數據總線必須鎖定在50MHz,爲了減少濾波設計的複雜性,PATA使用Ultra總線,經過「雙倍數據比率」或者2個邊緣(上升沿和降低沿)時鐘機制來進行DMA傳輸。這樣在數據濾波的上升沿和降低沿都採集數據,就下降一半所需的濾波頻率。這樣帶寬就是:25MHz時鐘頻率×2雙倍時鐘頻率×16位/每個邊緣/8位/每一個字節 = 100Mbytes/sec。

  優勢:

  自問世以來,物美價廉、穩定性好、標準化程度高的特色,深得廣大中低端用戶的青睞,甚至在某些高端應用領域,如服務器應用中也有必定市場。

  缺點:

  隨着CPU時鐘頻率和內存帶寬的不斷提高,其接口協議PATA(Paralle ATA)逐漸顯現出不足來。一方面,硬盤製造技術的成熟使用ATA硬盤的單位價格逐漸下降,另外一方面,因爲採用並行總線接口,傳輸數據和信號的總線老是複用的,所以傳輸速率會受到必定的限制。若是要提升傳輸的速率,那麼傳輸的數據和信號每每會產生干擾,從而致使錯誤。當今的許多大型企業中,PATA現有的傳輸速率已經逐漸不能知足用戶的需求。

 

3.1.2   SATA磁盤

  SATA(Serial ATA)口的硬盤又叫串口硬盤,SATA以它串行的數據發送方式得名。在數據傳輸的過程當中,數據線和信號線獨立使用,而且傳輸的時鐘頻率保持獨立,所以同以往的PATA星幣,SATA的傳輸速率能夠達到並行的30倍。能夠說:SATA技術並非簡單意義上的PATA技術的改進,而是一種全新的總線架構。如今這個比較主流一些!

  圖片:

 

3.1.3   SCSI磁盤

   SCSI英文全稱:Small Computer System Interface,它出現的緣由主要是由於原來的IDE接口的硬盤轉速太慢,傳輸速率過低,所以告訴的SCSI硬盤出現了。其實SCSI並非專門爲硬盤設計的,實際上他是一種總線型接口,獨立於系統總線工做的。這個通常服務器用的多一些!不過通常用更新代的SAS磁盤,見下面3.4

  圖片:

  優勢:

  系統佔用率極低,轉速快,傳輸率高。

  缺點:

  價格高、安裝不便、還須要設置及其安裝驅動程序,所以這種接口的硬盤大多用於服務器等高端應用場合。

 

3.1.4   SAS磁盤(或者叫SCSI(s)磁盤)

  SAS(Serial Attached SCSI)即串行鏈接SCSI,是新一代的SCSI技術。和如今流行的SATA硬盤相同,都是採用串行技術已得到更高的傳輸速度,並經過縮短鏈接線改善內部空間等。SAS是並行SCSI接口滯後開發出的全新接口。此接口的設計是爲了改善存儲系統的效率、可用性和擴充性,並提供與SATA硬盤的兼容性。SAS的接口技術能夠向下兼容SATA。具體來講,兩者兼容性主要體如今物理層和協議層的兼容。

  圖片:

  優勢:

  與傳統的SCSI接口比較起來,SAS不只在接口速度上獲得顯著提高(顯著主流的Ultra 320 SCSI速度爲320MB/sec),並且因爲採用了串行線纜,步進能夠實現更長的連接距離,還可以提升抗干擾能力,而且這種細細的線纜還能夠顯著改善機箱內部的散熱狀況。

  缺點:

  貴!比同容量的Ultra 320 SCSI硬盤,SAS硬盤要貴一倍還多。

  實際傳輸速度變化不大,SAS硬盤的接口速度並不表明數據傳輸速度,受到硬盤機械結構限制,限制SAS硬盤的機械結構和SCSI硬盤幾乎同樣。目前數據傳輸的瓶頸集中在由硬盤內部機械結構、硬盤存儲技術、磁盤轉速,所決定的硬盤內部數據傳輸速度,也就是80MB/sec左右,SAS硬盤的性能提高不明顯。

  雖然SAS接口服務器和SCSI接口產品在速度上、穩定性上差很少,可是目前技術和產品都還不夠成熟。

 

3.1.5   FC

   這個平時接觸就更不太多了,英文全稱:Fibre Channel(光纖通道)。與SCSI接口同樣,管線通道最初也不是爲硬盤設計開發的接口技術,是專門爲網絡系統設計的,但隨着存儲系統對速度的需求,才逐漸引用到硬盤系統中。光纖通道硬盤是爲提升多硬盤存儲系統的速度和靈活性纔開發的,它的出現大大提升多硬盤系統的通訊速度。它以點對點或是交換的配置方式在系統之間採用了光纜連接。即硬盤不具有FC接口,插硬盤的機櫃上帶有FC接口,經過光纖與光纖交換機互聯。這個在交換機和服務器上面比較常見。

  圖片:

 

3.1.6   HDD(機械硬盤)和SSD(固態硬盤)和SSHD(混合硬盤)

  上面所講的這些硬盤都是屬於HDD(Hard Disk Drive),即硬盤驅動器,也能夠叫機械硬盤。平時咱們存儲數據的時候常常見到優盤(U盤)或者更早的軟盤。這類硬盤存儲設備沒有跟硬盤內部那種「留聲機」式的樣子,所以咱們把這類的硬盤叫作SSD固態硬盤(全稱:Solid State Disk 或者 Solid State Drive),也稱做電子硬盤或者固態電子盤,他的工做原理是由控制單元和固態存儲單元(DRAM或者Flash芯片)組成的硬盤。固態硬盤的結構規範和定義、功能以及使用方法上與普通硬盤相同,在產品外形和尺寸上也與普通硬盤一致。因爲古田硬盤沒有普通硬盤的旋轉介質,於是抗震性極佳。其新盤的工做溫度範圍很寬(-40℃~80℃)。目前普遍應用於軍事、車載、工控、視頻監控、網絡監控、航天、航空、導航、收集等領域。不過成本較高,也正在逐漸普及到DIY市場。咱們常見到的APPLE的MacBook上面基本全面蠶蛹了固態硬盤,不過容量都不不過高,由於太貴了。

  正因爲SSD容量廣泛不高(主要太貴了),另一種硬盤就是SSD+HDD混合硬盤誕生了。採用了容量較小的閃存顆粒才存儲經常使用的文件,而硬盤纔是最重要的存儲介質,閃存起到了緩衝做用,將更多的經常使用文件保存到善春內減少尋道時間,從而提高效率。

  咱們把這三種硬盤類型排一下,圖片以下:

  HDD機械硬盤,圖片:

 

  SSD固態硬盤,圖片:

 

 

  SSHD混合硬盤,圖片:

 

 

3.2   磁盤分區:

3.2.1   文件系統:

  默認爲ext4,文件系統分不少種,好比ext二、ext三、ext四、swap、Fat、NTFS等。 

  什麼是文件系統?

  文件系統是操做系統用於明確磁盤或分區上的文件的方法和數據結構;即在磁盤上組織文件的方法。(能夠理解爲何組織:社會主義制度?仍是三權分立的英美製度?仍是獨裁製度?等等這樣理解是能夠的)。

  有一個標準的定義:用於明確磁盤或分區上的文件和數據結構;即在磁盤上組織文件的方法。也指用於存儲文件的磁盤或分區,或文件系統種類。操做系統中負責管理和存儲文件信息的硬件機構稱爲未見管理系統,簡稱文件系統。文件系統由三部分組成:與文件管理有關的軟件、被管理文件以及實施文件所需數據結構。從系統角度來看,文件系統是對文件存儲空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體的說,他負責爲用戶創建文件,存儲,讀取,修改,轉儲文件,控制文件的存取,當用戶再也不使用時撤銷文件等。以什麼什麼樣的格式在硬盤上存儲起來。

  下圖是Windows的文件系統。通常一個分區必須有一個文件系統(也就是說你想幹什麼事兒,首先要在什麼社會制度下)

  

 

  如今以ext2和Fat兩種文件系統進行比較,圖示以下:

   

  在Ubuntu系統下和Windows不太同樣的是,通常會再用ext4或者swap文件系統。(windows通常是Fat和NTFS文件系統)

 

3.2.2   SWAP分區的做用:

  當系統的物理內存不夠用的時候,就須要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有操做的程序,這些被釋放的空間被臨時保存到SWAP空間中,等到那些程序須要運行時,再從swap中回覆保存的數據到內存中。這樣,系統老是在物理內存不夠時,才進行swap交換。

在終端窗口輸入以下命令:

sudo cat /pro/sys/vm/swappiness

返回默認設置是60

swappiness = 0的時候表示最大限度的使用物理內存,而後纔是swap空間。

swappiness = 100的時候表示積極的使用swap分區,而且把內存上的數據及時搬運到swap空間裏面。

咱們對虛擬內存進行臨時修改和永久修改。

----------臨時修改:

    sudo sysctl vm.swappiness=10

    這裏的修改已經生效,可是若是從新啓動了系統,又會變成60

----------永久修改:

    sudo vim /etc/sysctl.conf 文件裏面添加以下參數:

    vm.swappiness=10

 

第四部分   忘記密碼怎麼辦?

方法一:
長按shift鍵盤進入Ubuntu選項,選擇e進入編輯裝填,對應這linux這一項。
後面的ro quiet.....內容所有刪除改成:rw init=/bin/bash,而後ctrl+x進行從新引導。就能夠從新修改密碼了。
方法二:
進入Ubuntu,找到cat /boot/grub/grub.cfg
linux /boot/vmlinuz-4.10.0-19-generic root=UUID=bd89b027-40c6-4a28-94e7-0067e716a267 ro quiet splash $vt_handoff
「ro quiet splash $vt_handoff」這個位置改成rw init=/bin/bash,按F10重啓就能夠從新修改密碼了

 

第五部分   Linux的目錄結構

  在Linux下,一切皆文件咱們打開看看都有什麼文件。在windows下面叫文件夾,文件夾是目錄的一種。

  Linux的目錄是個大問題。下面對應每個目錄進行詳細的講解。

5.1   /  :根。全部的目錄都在此

5.2   /boot:boot配置文件、內核和其餘啓動時所需的文件。沒有它你的操做系統是啓動不起來的。

    ------ grub:多系統啓動管理程序grub的目錄,裏面存放的都是grub在啓動時所需的畫面,配置以及各階段的配置文件;其中grub.conf是grub的配置文件。(經常使用

      ------------ fonts 存放啓動時須要的字體。(經常使用

      ------------ i386-pc: 存放一些音樂文件等。

      ------------ locale:語言環境。(經常使用

      ------------ grub.cfg:是grub的配置文件。修改這裏下次啓動會執行一些程序。(經常使用

    ------ config-4.10.0-19-generic / config-4.10.0-40-generic:系統kernel的配置文件,內核編譯完成後保存的就是這個配置文件。

    ------ vmlinuz-4.10.0-19-generic / vmlinuz-4.10.0-40-generic:系統使用Kernel,很是重要。

    ------ System.map-4.10.0-19-generic / System.map-4.10.0-40-generic:系統kernel中的變量對應表(也能夠理解爲是索引文件)。

    ------ initrd.img-4.10.0-19-generic /  initrd.img-4.10.0-40-generic:是linux系統啓動時的模塊供應來源,initrd目的就是在kernel加載系統識別cpu和內核等核心信息以後,讓系統進一步知道還有那些硬件是啓動所必須的。

    ------ abi-4.10.0-19-generic / abi-4.10.0-40-generic

    ------ memtest86+.bin / memtest86+.elf / memtest86+_multiboot.bin

5.3   /etc:存放主機、系統或網絡有關的配置文件。

5.4   /home:存放普通用戶目錄。

5.5   /mnt:硬盤上手動掛在的文件系統。好比插有個優盤掛在這個文件系統上。所謂掛在就是把硬盤連接到系統上。mint單詞簡寫。

5.6   /media:自動掛在(加載)的硬盤分區以及相似CD、數碼相機等可移動介質。

5.7   /cdrom:掛在光盤。

5.8   /opt:存放一些可選程序,好比按照遊戲啥的相似於windows按照路徑不選擇C盤。若是某個程序測試版本,安裝到該目錄的程序的全部數據、庫文件都存在同個目錄下。

5.9   /root:系統管理員的目錄,對於系統來講,系統管理員比如上帝,他能夠對系統作任何操做,好比刪除你的文件,通常狀況下不要使用root用戶。

5.10   /bin:存放經常使用的程序文件(命令文件)。好比經常使用的ls ln mv mkdir touch這些linux命令都存放在這裏

5.11   /sbin:系統管理命令,這裏存放的是系統管理員使用的管理程序。

5.12   /tmp:臨時目錄,存放臨時文件,系統會定時清理該目錄下的文件。

5.13   /usr:這個目錄下,你能夠找到那些不適合放在/bin或者/etc下的額外工具。好比遊戲、打印工具等。/usr目錄包含了許多子目錄:

    ------ /bin:目錄用於存放程序;非必要可執行文件(在單用戶模式中不須要);面向全部用戶。

    ------ /include:標準包含文件。

    ------ /lib:/usr/bin和/usr/sbin中二進制文件的庫。用於存放那些不能直接運行的,可是許多程序運行所必須的一些函數庫文件。

    ------ /sbin:非必要的系統二進制文件。例如大量網絡服務的守護進程。

    ------ /share:體系結構無關(共享)數據,好比音樂文件或者圖標等。

    ------ /src:源代碼。例如:內核源碼及其頭文件。

    ------ /X11R6:X windows系統版本11,release 6.

    ------ /local:本地數據的第三城,具體到本臺主機。一般而言有進一步的子目錄:例如:bin/、lib/、share等這個目錄通常用來存放用戶自編譯安裝軟件的存放目錄;通常是經過源碼包安裝的軟件,若是沒有特別指定安裝目錄的話,通常是安裝在這個目錄中。

5.14   /var:該目錄存放那些常常被修改的文件,包括各類日誌、數據文件。

    ------ /cache: 應用程序緩存數據。這些數據是在本地生成的一個耗時的I/O或計算結果。應用程序必須可以再生或恢復數據。緩存的文件能夠被刪除而不致使數據丟失。
    ------ /lib:狀態信息。 由程序在運行時維護的持久性數據。 例如:數據庫、包裝的系統元數據等。
    ------ /lock:鎖文件,一類跟蹤當前使用中資源的文件。
    ------ /log:日誌文件,包含大量日誌文件。
    ------ /mail:用戶的電子郵箱。
    ------ /run:自最後一次啓動以來運行中的系統的信息,例如:當前登陸的用戶和運行中的守護進程。現已經被/run代替[13]。
    ------ /spool: 等待處理的任務的脫機文件,例如:打印隊列和未讀的郵件。
    ------ /spool/mail: 用戶的郵箱(不鼓勵的存儲位置)
    ------ /tmp:在系統重啓過程當中能夠保留的臨時文件。

5.15   /lib: 目錄是根文件系統上的程序所需的共享庫,存放了根文件系統程序運行所需的共享文件。這些文件包含了可被許多程序共享的代碼,以免每一個程序都包含有相同的子程序的副本,故可使得可執行文件變得更小,節省空間。

5.16   /lib32:同上。

5.17   /lib64: 同上。

5.18   /lost+found: 該目錄在大多數狀況下都是空的。但當忽然停電、或者非正常關機後,有些文件就臨時存放在。

5.19   /dev:存放設備文件。

5.20   /run: 代替/var/run目錄。

5.21   /proc: 虛擬文件系統,能夠在該目錄下獲取系統信息,這些信息是在內存中由系統本身產生的,該目錄的內容不在硬盤上而在內存裏。

5.22   /sys:和proc同樣,虛擬文件系統,能夠在該目錄下獲取系統信息,這些信息是在內存中由系統本身產生的,該目錄的內容不在硬盤上而在內存裏。

 

目錄結構樹狀圖以下

 

第六部分   語言環境

   查看是否安裝了中文支持

  locale -a(在/boot/這個目錄下)

   若是有zh_CN.utf8 則表示系統已經安裝了中文locale,若是沒有則須要安裝相應的軟件包。安裝方式以下:

  sudo apt-get install language-pack-zh-hans language-pack-zh-hans-base

 

第七部分   軟件管理(apt)和Debian(dpkg)

   軟件管理apt(Advance Packaging Tool),他能夠自動下載、配置、安裝軟件包;簡化了Linux系統上的。Debian及衍生版中都包含了apt,RedHat系列的linux的則使用yum來進行管理,其中Defora22中Centos7中開始使用dnf來替代yum。

7.1   apt經常使用命令

  在終端命令輸入:apt-get -h

  用法:apt-get [選項] 命令

     apt-get [選項] install | remov軟件包1 [軟件包2...]

     apt-get [選項] source 軟件包1 [軟件包2...]

  apt-get 能夠從認證軟件源下載軟件包以及相關信息,以便按照核升級軟件包,或者用以移除軟件包。這些過程當中,軟件包依賴會被妥善處理。

  經常使用命令:

  update - 取回更新的軟件包列表信息。

  upgrade - 進行一次升級。

  install - 安裝新的軟件包(注:軟件包名稱是libc6,而非libc6.deb)。也就是德班軟件格式不識別。

  remove - 卸載軟件包。(淺移除)

  purge - 卸載並清除軟件包的配置(深移除)。

  autoremove - 卸載全部自動安裝且再也不使用的軟件包。

  dist-upgrade - 發佈版升級

  dselect-upgrade - 根據dselect的選擇來進行升級。

  build-dep - 爲源碼包配置所需的編譯依賴關係。

  clean - 刪除全部已下載的包文件。

  autoclean - 刪除已下載的舊文件軟件。

  check - 覈對以確認系統的依賴關係的完整性。

  source - 下載源碼包文件(有些軟件經過這個source.list裏面的下載地址進行下載)。

  download - 下載制定的二進制包到當前目錄。

  changelog - 下載指定軟件包,並顯示其changgelog。

 

7.2   經常使用的安裝軟件命令

  apt-cache search package 搜索包
  apt-cache show package 獲取包的相關信息,如說明、大小、版本等
  sudo apt-get install package 安裝包
  sudo apt-get install package –reinstall 從新安裝包
  sudo apt-get -f install 強制安裝
  sudo apt-get remove package 刪除包
  sudo apt-get remove package –purge 刪除包,包括刪除配置文件等
  sudo apt-get autoremove 自動刪除不須要的包
  sudo apt-get update 更新源
  sudo apt-get upgrade 更新已安裝的包
  sudo apt-get dist-upgrade 升級系統
  sudo apt-get dselect-upgrade 使用 dselect 升級
  apt-cache depends package 瞭解使用依賴
  apt-cache rdepends package 瞭解某個具體的依賴
  sudo apt-get build-dep package 安裝相關的編譯環境
  apt-get source package 下載該包的源代碼
  sudo apt-get clean && sudo apt-get autoclean 清理下載文件的存檔
  sudo apt-get check 檢查是否有損壞的依賴

 

7.3   apt的配置文件

  /etc/apt/sources.list 設置軟件包的獲取來源
  /etc/apt/apt.conf apt配置文件
  /etc/apt/apt.conf.d apt的零碎配置文件
  /etc/apt/preferences 版本參數
  /var/cache/apt/archives/partial 存放正在下載的軟件包
  /var/cache/apt/archives 存放已經下載的軟件包
  /var/lib/apt/lists 存放已經下載的軟件包詳細信息
  /var/lib/apt/lists/partial 存放正在下載的軟件包詳細信息

 

7.4   軟件源配置文件格式:sudo cat /etc/apt/sources.list

  更新這個地址位置能夠自動下載:以下是截取部分

  deb http://security.ubuntu.com/ubuntu xenial-security main restricted
  # deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
  deb http://security.ubuntu.com/ubuntu xenial-security universe
  # deb-src http://security.ubuntu.com/ubuntu xenial-security universe
  deb http://security.ubuntu.com/ubuntu xenial-security multiverse
  # deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

  Ubuntu軟件倉庫被分爲四個部分:main(主要的),restricted(受限的),universe(普遍的),multiverse(多元的),這主要根據咱們對軟件的支持能力,以及軟件的目的是否符合咱們的自由軟件哲學。

  先看一下配置文件的一段內容:

  第一個:deb表示軟件包的格式,可使deb或de-src,前者表示所指向的存放binary格式(已編譯),後者爲sources格式(原代碼)。

  第二個:URI,即Universal Resource Identifier,通用資源標識符,可使:file(系統)、cdrom(光驅)、http、ftp、copy、rsh、ssh等幾個參數開頭的軟件包所在位置。

  第三個:Distribution指髮型的版本,能夠是:stable,testing,unstable,sarge,etch,sid等,具體可參考Debian文檔。

  後面的幾個component表示具體軟件包的分類:

    main:徹底遵循Debian自由軟件準則,即DFSG的軟件包;

    contrib:軟件包遵循DFSG自由使用原則,可是其使用了某些不符合DFSG的第三方庫;

    non-free:不符合DFSG的軟件包。

 

7.5   dpkg是Debian軟件包的管理器:

  dpgk被用於安裝、卸載和供給和.deb軟件包相關信息。dpkg自己是一個底層工具,自己並不能遠程包倉庫下載包以及處理包的依賴關係,須要將包從遠程下載後再按照。經常使用命令以下:

  dpkg -i package.deb 安裝包
  dpkg -r package 刪除包
  dpkg -P package 刪除包(包括配置文件)
  dpkg -L package 列出與該包關聯的文件
  dpkg -l package 顯示該包的版本
  dpkg –unpack package.deb 解開 deb 包的內容
  dpkg -S keyword 搜索所屬的包內容
  dpkg -l 列出當前已安裝的包
  dpkg -c package.deb 列出 deb 包的內容
  dpkg –configure package 配置包

 

第八部分   查看幫助文件:

  -h  ----- 簡單幫助文件

  info ---- 詳細的幫助

  man ---- 用的最多(manual的縮寫)

  1 可執行程序或 shell 命令
  2 系統調用(內核提供的函數)
  3 庫調用(程序庫中的函數)
  4 特殊文件(一般位於 /dev)
  5 文件格式和規範,如 /etc/passwd
  6 遊戲
  7 雜項(包括宏包和規範,如 man(7),groff(7))
  8 系統管理命令(一般只針對 root 用戶)
  9 內核例程 [非標準]

 

第九部分   時間顯示和修改:

 

 

9.1   date

  做用:用來顯示或設置系統的日期與時間。

  date //顯示當前日期
  # 日期格式化
  # %Y year
  # %m month (01..12)
  # %d day of month (e.g., 01)
  # %H hour (00..23)
  # %I hour (01..12)
  # %M minute (00..59)
  # %S second (00..60)
  date +"%Y%m%d %H%M%S"
  223856
  date +"%Y-%m-%d %H:%M:%S"
  2016-08-24 22:39:07

  date -s //設置當前時間,只有root權限才能設置,其餘只能查看。
  date -s 20061010 //設置成20061010,這樣會把具體時間設置成空00:00:00
  date -s 12:23:23 //設置具體時間,不會對日期作更改
  date -s 「12:12:23 2006-10-10″ //這樣能夠設置所有時間

# 注意: 從新設置時間後須要將時間捅不到硬件時鐘。方式以下:
hwclock -w

 

9.2   cal:

  做用:顯示一個日曆。

  cal # 實現當前月份的日曆。

  cal -y  # 顯示當年的日曆。

  cal 2016 # 顯示指定年份的日曆。

 

9.3   設置時區:

  tzselect

  或者:

  cp /usr/share/zoneinfo/Asia/Shanghai   /etc/localtime

 

第十部分   密碼的修改、註銷、重啓、關機:

 10.1   修改密碼:

  passwd  # 默認修改當前用戶的密碼

  passwd username  # 修改指定用戶的密碼,須要管理員權限。

 

10.2   忘記密碼:

  準備進入Ubuntu的時候長按shift鍵,進入grub菜單--->>按字母e進入編輯模式--->> 編輯內容--->> 啓動 進入用戶模式,從西設計用戶密碼,--->> 按照F10重啓 --->> 使用新密碼進入系統。

  圖示以下:

 

10.3   註銷、重啓、關機:

  logout   # 註銷

  reboot   # 重啓系統:須要管理員權限

  shutdown  # 關機:管理員權限。

  關於關機有幾個經常使用命令:

  shutdown  -r  now   #如今馬上重啓

  shutdown -r  +5  #五分鐘後重啓

  shutdown -r 12:12   # 在12:12時將重啓計算機

  shutdown -h now # 如今當即關機

  shutdown -h +5  「The System will shutdown after 3 minutes」 # 提示使用者將在三分鐘後關機

  shutdown -h +5  # 5分鐘後關機

  shutdown -h 12:00  # 12點鐘關機

  shutdown -c  # 取消關機操做

 

第十一部分   經常使用的查找、建立命令:

11.1   cd:切換目錄:

  cd # 回到當前用戶的家目錄
  # ~ 可用於表示用戶家目錄
  cd /etc # 切換到/etc目錄

  cd -
  # 切換到上一次的目錄

 

11.2   pwd:查看當前工做路徑:

 

11.3   mkdir:建立目錄:

  # mkdir 目錄名

  mkdir my_dir

  # -p  :遞歸建立目錄,用於同時建立多級目錄

  mkdir -p a/b/c

 

11.4   獲取幫助文件:-h --help info man:

  man man # 查看man命令的手冊
  man cd
  man pwd
  man 5 passwd
  man -k passwd # 模糊查找
  man -f passwd # 精確查找

 

11.5   touch:改變文件或目錄的時間,文件不存是會建立一個空文件:

  touch file1 # file1 不存在時被建立
  touch -c file1 # 不建立文件
  touch -r ref_file file1 更新file1.txt的時間戳和ref+file相同
  touch -t 201210120505.25 file1

  # -t time 使用指定的時間值 time 做爲指定文件相應時間戳記的新值.此處的 # # time規定爲以下形式的十進制數:
  # [[CC]YY]MMDDhhmm[.SS]
  # 這裏,CC爲年數中的前兩位,即」世紀數」;YY爲年數的後兩位,即某世紀中的年數.若是不給出CC的值,則touch 將把年數CCYY限定在1969--2068以內.MM爲月數,DD爲天將把年數CCYY限定在1969--2068以內.MM爲月數,DD爲天數,hh 爲小時數(幾點),mm爲分鐘數,SS爲秒數.此處秒的設定範圍是0--61,這樣能夠處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時 間.因爲系統的限制,早於1970年1月1日的時間是錯誤的。

  注意:若是文件以 "." 開頭,則表示文件是隱藏文件

 

11.6   rm:刪除命令:

  rm -f file: # 強制刪除文件

  rm -r a/b/file  # 刪除指定目錄及其下的全部文件和目錄

  rm -rf a/b/file #  強制刪除指定目錄及其下的全部文件和目錄

  # rm 命令太危險,不建議使用。

 

11.7   mv:移動或重命名文件或目錄:若是都是當前文件,表示重命名。

  mv test.log test.txt # 文件類型改動

  mv test1.txt dir1/ # 移動文件

  mv test1.txt  test2.tx  test3.tx  dir1/  # 移動多個文件。

 

11.8  cp:複製文件:

  cp SOURCE DEST # 複製文件。

  cp -i SOURCE DEST # 若是遇到須要覆蓋的狀況,則提示。
  cp -r dir1 dir2 # 若給出的源文件是一目錄文件,此時cp將遞歸複製該目錄下全部的子目錄和文件。此時目標文件必須爲一個目錄名。
  cp -p file1 file2 # 此時cp除複製源文件的內容外,還將把其修改時間和訪問權限也複製到新文件中。

  cp -rp dir1 dir2

 

11.9   stat:查看文件相關信息:

  stat filename
  # Access time(atime):是指取用文件的時間,所謂取用,常見的操做有:使用編輯器查看文件內容,使用cat命令顯示文件內容,使用cp命令把該文件(即來源文件)複製成其餘文件,或者在這個文件上運用grep sed more less   tail head 等命令,凡是讀取而不修改文件的操做,均衡改變文件的Access time.
  # Modify time(mtime):是指修改文件內容的時間,只要文件內容有改動(如使用轉向輸出或轉向附加的方式)或存盤的操做,就會改變文件的Modify time,日常咱們使用ls –l查看文件時,顯示的時間就是Modify time
  # Change time(ctime):是指文件屬性或文件位置改動的時間,如使用chmod,chown,mv指令集使用ln作文件的硬是鏈接,就會改變文件的Change time。

 

11.10   cat:連接文件後輸出文件內容到屏幕上,cat=catch,其實就是查看文件內容:

  cat file  # 顯示file的文件內容

  cat file1  file2  # 顯示file1和file2的文件內容

  cat -n file1  # 顯示由1表示初始行號的內容

  cat -s file # 當遇到連續2行以上的空白行,只保留一行空白行。

 

11.11   tac:反轉行的輸出:

 

11.12   wc:統計指定文件的字節數、字數、行數、並將統計結果顯示輸出:

  -c   統計字節數。

  -l   統計行數。

  -m 統計字符數。這個標誌不能與-c標誌一塊兒使用。

  -w  統計字數。一個字被定義爲由空白、跳格或換行字符分割的字符串。

 

11.13   sort :排序:

  sort [-fbMnrtuk] [file or stdin]
  選項與參數:
  -f :忽略大小寫的差別,例如 A 與 a 視爲編碼相同;
  -b :忽略最前面的空格符部分;
  -n :使用『純數字』進行排序(默認是以文字型態來排序的);
  -r :反向排序;
  -u :就是 uniq ,相同的數據中,僅出現一行表明;
  -t :分隔符,默認是用 [tab] 鍵來分隔;
  -k :以那個區間 (field) 來進行排序的意思

 

11.14   uniq:忽略或報告重複行:

  uniq [-icu]

  選項語參數:

  -i   忽略大小寫字符的不一樣

  -c   進行計數

  -u   只顯示惟一的行

 

11.15   cut:能夠從一個文本文件或者文本流中提出文本的列:

  選項與參數:

  -d   後面接分割字符。與-f 一塊兒使用

  -f   依據-d分割字符將一段信息分割成爲數段,用-f去除第幾段的意思

  -c   以字符character的單位去除固定字符區間

 

11.16   tee: 讀取標準輸入的數據,並將其內容輸出成文件:

  cat sec.log | tee file1 # 讀取sec.log ,並生成file1文件   

  cat sec.log | tee - a file1 # 讀取sec.log ,並追加  

  cat sec.log |tee file1 file2

 

11.17   history: 查看執行過的命令:

  history # 顯示最近1000條歷史命令

  history 5 # 顯示最後5條命令

  !number# number爲history以後命令前的序號:執行該條命令

  !cat # 執行最後一條以cat開頭的命令

 

11.18   more:查看文件內容:

 

11.19   less:查看文件內容:

 

11.20   head:輸出文件的開始的部分, 能夠指定行數 , 默認顯示10行:

  head -n 5 file

 

11.21   tail:查看文件尾部內容;默認顯示最後10行:

  tail file  

  tail -n 5 file

  tail -f file  # 動態監控文件

 

11.22   which:查找其餘命令的位置:

  which ls  # 查找ls這個命令所在的位置

 

11.23   ls:列出目標目錄中全部的子目錄和文件:

  格式:ls [選項] [目錄名] 

  -a 用於顯示全部文件和子目錄(保羅點文件)。

  -l 除了文件名以外,還將文件的權限、全部者、文件大小等信息詳細列出來。

  -r 將目錄的內容清單以英文字母順序的逆序顯示。

  -t 按文件修改時間進行排序,而不是按文件名進行排序。

  -A 同-a,但不列出「.」(表示當前目錄)和「..」(表示當前目錄的父目錄)。

  -F 在列出的文件名和目錄名後添加標誌。例如,在可執行文件後添加「*」,在目錄名後添加「/」以區分不一樣的類型。

  -R 若是目標目錄及其子目錄中有文件,就列出全部的文件。

  . ..

  . 表示當前目錄

  .. 表示父目錄

  ls # 列出當前目錄下的文件和目錄
  ls . # 列出當前目錄下的文件和目錄
  ls .. # 列出當前目錄的父目錄下的文件和目錄
  ls /etc # 列出/etc目錄下的文件和目錄

  ls -l # 以長格式顯示文件信息
  總用量 76
  -rwxrwxrwx 1 will will 78 5月 13 18:11 ss_start.sh

 

11.24   tree:用樹形結構列出文件目錄:

  若是默認Ubuntu沒有安裝,安裝tree的插件。

 

第十二部分   文件類型和文件權限:

12.1   文件類型:

  -  普通文件

  d  目錄文件

  b 塊設備文件

  c  字符設備文件

  l  連接文件

  p 管道文件

  s  socket文件

  ls -l /dev # 能夠查看字符設備文件和塊設備文件

  ls -l /run # 能夠找到socket文件

  ls -l /run/systemd/inhibit/ # 能夠查看到管道文件

 

12.2   文件權限:

  rwxrwxr-- : 三組rwx 分別表示 全部者、全部組、其餘人 的權限。

  r : 表示可讀, 能夠用數字 4 來表示
  w : 標識可寫 ,能夠用數字 2 來表示
  x : 表示可執行 , 能夠用數字 1 來表示
  - :表示沒有相應權限  能夠用數字 0 來表示

  修改權限的方法: 

  chmod o+w file1
  chmod g-w file1
  chmod go-w file1
  chmod u=rwx file1

  chmod 755 file1 # -rwxr-xr-x (755) 只有全部者纔有讀,寫,執行的權限,組羣和其餘人只有讀和執行的權限
  chmod 644 # -rw-r--r-- (644) 只有全部者纔有讀和寫的權限,組羣和其餘人只有讀的權限

  # 其中:
  # u 表明全部者(user)
  # g 表明全部者所在的組羣(group)
  # o 表明其餘人,但不是u和g (other)
  # a 表明所有的人,也就是包括u,g和o

 

  目錄上的權限:

  r : 表示是否能夠讀取目錄下的文件名

  w : 表示是否能夠在目錄下建立修改文件

  x : 表示目錄是否能夠被搜索

  有x權限後,就可使用 ./a.py 的方式執行文件。

  chown : 更改文件的全部者和全部組

  chown root:root file
  chown root file
  chown :root file

 

  特殊權限:

  SUID: 讓通常用戶在執行某些程序的時候,可以暫時具備該程序擁有者的權限,SUID對目錄是無效的

  SGID : 文件:若是SGID設置在二進制文件上,則不論用戶是誰,在執行該程序的時候,它的有效用戶組(effective group)將會變成該程序的用戶組全部者(group id); 目錄:若是SGID是設置在某目錄上,則在該目錄內所創建的文件或目錄的用戶組,將會是該目錄的用戶組。 SGID多用在特定的多人團隊的項目開發上,在系統中用得較少

  STICKY : 只針對目錄有效,在具備SBit的目錄下,用戶若在該目錄下具備w及x權限,則當用戶在該目錄下創建文件或目錄時,只有文件擁有者與root纔有權力刪除。

  rwsrw-r-- 代表有suid標識,

  rwxrws--- 代表有sgid標識,
  rwxrw-rwt 代表有stick標識,
  當設置了特別權限位時,若是原來這個位上有x,那麼這個特殊標示就顯示爲小寫字母s,s,t ,否者就顯示爲大寫S,S,T,此時他們不生效。

 

第十三部分   用戶和用戶組:

13.1   linux使用文件保存用戶信息 :

  文件                
  # /etc/passwd 用戶帳戶信息。
  # /etc/shadow 安全用戶帳戶信息。
  # /etc/group 組帳戶信息。
  # /etc/gshadow 安全組帳戶信息。
  # /etc/default/useradd 帳戶建立的默認值。
  # /etc/skel/ 包含默認文件的目錄。
  # /etc/login.defs Shadow 密碼套件配置。

 

13.2   useradd: 添加用戶:

  # -c 備註 加上備註。並會將此備註文字加在/etc/passwd中的第5項字段中
  # -d 用戶主文件夾。指定用戶登陸所進入的目錄,並賦予用戶對該目錄的的徹底控制權
  # -e 有效期限。指定賬號的有效期限。格式爲YYYY-MM-DD,將存儲在/etc/shadow
  # -f 緩衝天數。限定密碼過時後多少天,將該用戶賬號停用
  # -g 主要組。設置用戶所屬的主要組 www.cit.cn
  # -G 次要組。設置用戶所屬的次要組,可設置多組
  # -M 強制不建立用戶主文件夾
  # -m 強制創建用戶主文件夾,並將/etc/skel/當中的文件複製到用戶的根目錄下
  # -p 密碼。輸入該賬號的密碼
  # -s shell。用戶登陸所使用的shell
  # -u uid。指定賬號的標誌符user id,簡稱uid

  useradd user1 # 添加用戶 user1
  useradd -d /home/userTT user2

13.3   userdel : 刪除用戶

  userdel user1 #
  userdel -r user1

  # -r, --remove 用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一塊兒刪除。在其它文件系統中的文件必須手動搜索並刪除。
  # -f, --force 此選項強制刪除用戶帳戶,甚至用戶仍然在登陸狀態。它也強制刪除用戶的主目錄和郵箱,即便其它用戶也使用同一個主目錄或郵箱不屬於指定的用戶

13.4   usermod : 修改用戶信息:

  # -c<備註>  修改用戶賬號的備註文字。
  # -d登入目錄>  修改用戶登入時的目錄。
  # -e<有效期限>  修改賬號的有效期限。
  # -f<緩衝天數>  修改在密碼過時後多少天即關閉該賬號。
  # -g<羣組>  修改用戶所屬的羣組。
  # -G<羣組>  修改用戶所屬的附加羣組。
  # -l<賬號名稱>  修改用戶賬號名稱。
  # -L  鎖定用戶密碼,使密碼無效。
  # -s<shell>  修改用戶登入後所使用的shell。
  # -u<uid>  修改用戶ID。

  # -U  解除密碼鎖定。

  usermod -G staff user2 # 將 newuser2 添加到組 staff 中
  usermod -l newuser1 newuser # 修改 newuser 的用戶名爲 newuser1
  usermod -L newuser1 # 鎖定帳號 newuser1
  usermod -U newuser1 # 解除對 newuser1 的鎖定
  
13.5   groupadd: 添加組:

  groupadd group1
  groupadd -g 1000 group1 # 指定gid
  groupdel : 刪除組

  groupdel group1 # 刪除組

 

第十四部分   用戶權限:

14.1   susudo

  su : 切換用戶,沒有參數時,默認切換爲root用戶;

  su # 切換爲root

  ## 推薦
  su - # 切換爲root 並加載user1的環境配置
  su - user1 # 切換爲user1 並加載user1的環境配置
  sudo : 讓當前用戶暫時以管理員的身份root來執行命令。

  Ubuntu 默認沒有啓用root用戶, 普通用戶執行一些特殊的操做時,使用sudo就可讓普通用戶以root用戶的身份執行命令

  sudo有一個配置文件: /etc/sudoers ; 經過修改配置文件可讓指定用戶使用sudo命令

man sudoers # 查看man手冊
  看下面幾行:
  # Host alias specification # 配置Host_Alias:就是主機的列表
  Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
  # User alias specification # 配置User_Alias:就是具備sudo權限的用戶的列表
  User_Alias USER_FLAG = user1, user2, user3

  # Cmnd alias specification # 配置Cmnd_Alias:就是容許執行的命令的列表,命令前加上!表示不能執行此命令.命令必定要使用絕對路徑,避免其餘目錄的同名命令被執行,形成安全隱患 ,所以使用的時候也是使用絕對路徑!
  Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4

  # 配置Runas_Alias:就是用戶以什麼身份執行(例如root,或者oracle)的列表
  Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

  # User privilege specification
  # 配置權限的格式以下:
  # USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG

  root ALL=(ALL:ALL) ALL
  若是不須要密碼驗證的話,則按照這樣的格式來配置
  USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG


  格式爲:用戶名(用戶別名) 主機名(主機別名)=[(運行用戶或是Runas_Alias)可選] [tag可選] 能夠執行的命令(或Cmmd_Alias) 這樣描述語法很生硬,不易理解,舉例子
  user1 host1 = /bin/kill # user1 能夠在host1上使用命令/bin/kill
  user1 host1 = NOPASSWD: /bin/kill # user1 能夠在host1上使用命令/bin/kill 同時能夠沒必要輸入密碼(這裏就是使用了NOPASSWD # 這個tag,默認是PASSWD)
  user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 能夠在host1上使用命令/bin/kill無需輸入密碼,可是使用/bin/ls則須要輸入密碼
  user1 host1 = (opterator) /bin/kill # user1 能夠在host1上使用命令/bin/kill可是必須是以operator用戶運行這個命令,等價於# su -u opertor /bin/kill
  user1 host1 = (:group_name) /bin/kill # user1 能夠在host1上使用命令/bin/kill,且必須以group_name這個用戶羣組裏面的用戶來運行。
  %group_name host1 = /bin/kill # 全部group_name裏面的用戶均可以在host1上執行/bin/kill(Linux中通常表明整個用戶羣組用# %group_name)
  再舉個實際例子:以前對sudo su這個命令不理解,爲何我能夠直接就su到root用戶了呢,連密碼都不須要?查看了一下sudoers文件才知道原來裏面有這麼一行:
  xxx ALL=NOPASSWD: /bin/su

 

第十五部分   給命令其別名:

  alias : 給命令起別名

  alias ll='ls -alF'
  alias la='ls -A'
  alias l='ls -CF'
  若是須要別名永久生效,須要保存到 .bashrc 文件

 

第十六部分   shell和bash:

  咱們用到的終端默認使用的shell 是bash 其餘的shell 有dash 、csh 、tcsh、zsh等等

  Shell自己是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋樑,用戶的大部分工做都是經過Shell完成的。Shell既是一種命令語言,又是一種程序設計語言。做爲命令語言,它交互式地解釋和執行用戶輸入的命令;做爲程序設計語言,它定義了各類變量和參數,並提供了許多在高級語言中才具備的控制結構,包括循環和分支。

  自定義帳戶的個性化環境的三個重要文件

  .bash_history .bash_logout .bashrc

  剛登陸Linux時,首先啓動 /etc/profile 文件 , ~/.bash_profile、 ~/.bash_login、 ~/.profile。 若是 ~/.bash_profile文件存在的話,通常還會執行 ~/.bashrc文件。

  關於各個文件的做用域,在網上找到了如下說明:
  (1) /etc/profile: 此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。
  (2) /etc/bashrc: 爲每個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取(即每次新開一個終端,都會執行bashrc)。
  (3) ~/.bash_profile: 每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該文件僅僅執行一次。默認狀況下,設置一些環境變量,執行用戶的.bashrc文件。
  (4) ~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登陸時以及每次打開新的shell時,該該文件被讀取。
  (5) ~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該文件. 另外,/etc/profile中設定的變量(全局)的能夠做用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承 /etc/profile中的變量,他們是"父子"關係。(6) ~/.bash_profile: 也多是 .profile 是交互式、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的一般兩者設置大體相同,因此一般前者會調用後者。

 

第十七部分   PATH變量路徑的設置:

  env : 查看當前環境變量

  export : 設置或顯示環境變量。

  source ::在當前bash環境下讀取並執行FileName中的命令。該filename文件能夠無"執行權限"

  env
  export name = "SN"
  source /etv/profile

 

第十八部分   echo命名:

  echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開並在最後加上換行號。

   -n 不要在最後自動換行
   -e 若字符串中出現如下字符,則特別加以處理,而不會將它當成通常
       文字輸出:
       \a 發出警告聲;
       \b 刪除前一個字符;
       \c 最後不加上換行符號;
       \f 換行但光標仍舊停留在原來的位置;
       \n 換行且光標移至行首;
       \r 光標移至行首,但不換行;
       \t 插入tab;
       \v 與\f相同;

 

第十九部分   管道符合重定向:

19.1   管道符:

  管道符 就是 |  :他的做用是 將前一個命令的結果 交給後一個命令使用

 

19.2   重定向  :

  >   重定向,若是的文件存在,則覆蓋文件內容,文件不存在時建立文件

  >> 重定向,若是的文件存在,則向文件追加內容,文件不存在時建立文件

  1>  標準正確輸出,同上

  1>> 標準正確輸出,同上  

  2> 標準錯誤輸出,同上

  2>> 標準錯誤輸出,同上

  &> 標準正確輸出和標準錯誤輸出,同上

 

第二十部分   查找文件:

20.1   locate  查找文件:

  locate /etc/sh # 搜索etc目錄下全部以sh開頭的文件。
  locate ~/a # 搜索用戶主目錄下,全部以a開頭的文件。
  locate -i ~/a # 搜索用戶主目錄下,全部以a開頭的文件,而且忽略大小寫。

20.2   find 查找文件:

  使用方法:
  find path -option [-print ] [ -exec -ok command ] {} \;

  ###### 根據文件名查找 #######
  find / -name filename 再根目錄裏面搜索文件名爲filename的文件
  find /home -name "*.txt"
  find /home -iname "*.txt" # 忽略大小寫

  ###### 根據文件類型查找 #######
  find . -type 類型參數
  f 普通文件
  符號鏈接
  d 目錄
  c 字符設備
  b 塊設備
  s 套接字
  p Fifo

  ###### 根據目錄深度查找 #######
  find . -maxdepth 3 -type f # 最大深度爲3
  find . -mindepth 2 -type f # 最小深度爲2

  ######### 根據文件的權限或者大小名字類型進行查找 ###########

  find . -type f -size (+|-)文件大小 # +表示大於 -表示小於
  b —— 塊(512字節)
  c —— 字節
  w —— 字(2字節)
  k —— 千字節
  M —— 兆字節
  G —— 吉字節

  ######### 按照時間查找 ############

  -atime(+|-)n # 此選項表明查找出n天之前被讀取過的文件。
  -mtime(+|-)n # 此選項表明查找出n天之前文件內容發生改變的文件。
  -ctime(+|-)n # 此選項表明查找出n天之前的文件的屬性發生改變的文件。
  -newer file # 此選項表明查找出全部比file新的文件。
  -newer file1 ! –newer file2 # 此選項表明查找比file1文件時間新可是沒有file2時間新的文件。

  # 注意:
  # n爲數字,若是前面沒有+或者-號,表明的是查找出n天之前的,可是隻是一天以內的範圍內發生變化的文件。
  # 若是n前面有+號,則表明查找距離n天以前的發生變化的文件。若是是減號,則表明查找距離n天以內的全部發生變化的文件。
  # -newer file1 ! –newer file2中的!是邏輯非運算符

  ######### 按照用戶/權限查找 ############

  -user 用戶名:根據文件的屬主名查找文件。
  -group 組名:根據文件的屬組名查找文件。
  -uid n:根據文件屬主的UID進行查找文件。
  -gid n:根據文件屬組的GID進行查找文件。
  -nouser:查詢文件屬主在/etc/passwd文件中不存在的文件。
  -nogroup:查詢文件屬組在/etc/group文件中不存在的文件
  -perm 777: 查詢權限爲777的文件

  來自: http://man.linuxde.net/find

  ######## 查找時指定多個條件 ############

  -o:邏輯或,兩個條件只要知足一個便可。
  -a:邏輯與,兩個條件必須同時知足。

  find /etc -size +2M -a -size -10M

  ######### 對查找結果進行處理 #############
  -exec shell命令 {} \;
  -ok shell命令 {} \;
  其中-exec就是表明要執行shell命令,後面加的是shell指令,再後面的「{}」表示的是要對前面查詢到的結果進行查詢,最後的「\;」表示命令結束。須要注意的是「{}」和「\」之間是要有空格的。而-ok選項與-exec的惟一區別就是它在執行shell命令的時候會事先進行詢問,-print選項是將結果顯示在標準輸入上

  find /home -name 「*.txt」 -ok ls -l {} \;
  find /home -name 「*.txt」 -ok rm {} \;

 

第二十一部分   其餘幾個經常使用命令: 

21.1   df

  -T : 顯示文件系統類型
  -h : 以能顯示的最大單位顯示

  df -Th

 

21.2   du

  -s : 若是後面是目錄,只顯示一層
  -h : 以能顯示的最大單位顯示

  du dirname # 顯示dirname下全部目錄及其子目錄的大小

  du -sh dirname 顯示dirname的大小

21.3   mount / umount 3 掛載和卸載設備:

  mount # 查詢掛在設備及屬性

  # 掛載光盤
  mount -t iso9660 /dev/cerom /mnt
  mount /dev/sr0 /mnt

  # 從新掛載設備
  mount -o remount,rw /mnt # 從新掛載設備並設置rw屬性

  # 掛載iso文件
  mount a.iso -o loop /mnt


  umount /mnt # 卸載設備
  umount -l /mnt # 強制卸載

 

21.4   crontab

  * * * * * command to be executed
  - - - - - -
  | | | | | |
  | | | | | --- 預執行的命令
  | | | | ----- 表示星期0~7(其中星期天能夠用0或7表示)
  | | | ------- 表示月份1~12
  | | --------- 表示日期1~31
  | ----------- 表示小時1~23(0表示0點)
  ------------- 表示分鐘1~59 每分鐘用*或者 */1表示


  -u user:用來設定某個用戶的crontab服務;
  -e:編輯某個用戶的crontab文件內容。若是不指定用戶,則表示編輯當前用戶的crontab文件。
  -l:顯示某個用戶的crontab文件內容,若是不指定用戶,則表示顯示當前用戶的crontab文件內容。
  -r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,若是不指定用戶,則默認刪除當前用戶的crontab文件。
  -i:在刪除用戶的crontab文件時給確認提示

21.5   tar 壓縮和解壓縮命令:

  -c :創建一個壓縮文件的參數指令(create 的意思);
  -x :解開一個壓縮文件的參數指令!
  -t :查看 tarfile 裏面的文件!
  特別注意 c/x/t 同時僅能存在一個,由於不可能同時壓縮與解壓縮。
  -z :是否同時具備 gzip 的屬性?亦便是否須要用 gzip 壓縮?
  -j :是否同時具備 bzip2 的屬性?亦便是否須要用 bzip2 壓縮?
  -v :壓縮的過程當中顯示文件!這個經常使用,但不建議用在背景執行過程!
  -f :使用檔名,請留意,在 f 以後要當即接文件名
  -p :使用原文件的原來屬性(屬性不會依據使用者而變)
  -P :可使用絕對路徑來壓縮!
  -N :比後面接的日期(yyyy/mm/dd)還要新的纔會被打包進新建的文件中!


  # 將當前目錄下全部.txt文件打包並壓縮歸檔到文件this.tar.gz
  tar czvf this.tar.gz ./*.txt
  # 將當前目錄下的this.tar.gz中的文件解壓到當前目錄
  tar xzvf this.tar.gz ./


  # 將整個 /etc 目錄下的文件所有打包成爲 /tmp/etc.tar
  tar -cvf /tmp/etc.tar /etc # 僅打包,不壓縮!
  tar -zcvf /tmp/etc.tar.gz /etc # 打包後,以 gzip 壓縮
  tar -jcvf /tmp/etc.tar.bz2 /etc # 打包後,以 bzip2 壓縮

  # 解壓文件
  tar -xf a.tar.gz #
  tar -xf a.tar.gz -C /tmp # 指定解包路徑

 

21.6   grep:抓取命令:

  格式:
  grep [OPTIONS] PATTERN [FILE...]
  grep [OPTIONS] [-e PATTERN] [FILE...]
  參數:
  -c --count #計算符合樣式的列數
  -l --file-with-matches #列出文件內容符合指定的樣式的文件名稱。
  -v --revert-match #顯示不包含匹配文本的全部行。
  -i --ignore-case #忽略字符大小寫的差異。
  -o # 只顯示匹配到的關鍵字
  -n # 現實行號

  -E 使用正則表達式

第二十二部分   初識正則表達式:

  ^ : 匹配開頭
  $ : 匹配結尾
  [] : 範圍匹配
  [a-z] : 匹配有小寫字母
  [A-Z] : 匹配全部大寫字母
  [0-9] : 匹配全部數字
  . : 匹配單個字符
  * : 表示*前面的內容出現0次或屢次
  + : 表示+前面的內容出現1次或屢次
  ? : 表示?前面的內容出現0次或1次

  cat a.txt |grep hat$ # 匹配以hat結尾的行
  cat a.txt |grep ^hat # 匹配以hat開頭的行
  cat a.txt | grep -E "[0-9]*" # 匹配有0到多個數字的行
  cat a.txt | grep -E "[0-9]+" # 匹配有至少有1個數字的行
  cat a.txt | grep -E "[0-9]?" # 匹配有0到1個數字的行

 

第二十三部分   sedawk

23.1   sed : 流編輯器,一次處理一行內容

  sed [-nefr] [動做] [文件]
  選項與參數:
  -n :使用安靜(silent)模式。在通常 sed 的用法中,全部來自 STDIN 的數據通常都會被列出到終端上。但若是加上 -n 參數後,則只有通過sed 特殊處理的那一行(或者動做)纔會被列出來
  -e :直接在命令列模式上進行 sed 的動做編輯
  -f :直接將 sed 的動做寫在一個文件內, -f filename 則能夠運行 filename 內的 sed 動做
  -r :sed 的動做支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
  -i :直接修改讀取的文件內容,而不是輸出到終端。

  動做說明: [n1[,n2]] 動做:
  n1, n2 :不必定存在,通常表明選擇進行動做的行數,好比,若是個人動做是須要在 10 到 20 行之間進行的,則10,20[動做行爲]

  動做:
  #a :新增, a 的後面能夠接字串,而這些字串會在新的一行出現(目前的下一行)
  #c :取代, c 的後面能夠接字串,這些字串能夠取代 n1,n2 之間的行!
  #d :刪除,由於是刪除啊,因此 d 後面一般不接任何咚咚;
  sed "3d" file # 刪除第三行
  sed "1,3d" # 刪除前三行
  sed "1d;3d;5d" # 刪除一、三、5行
  sed "/^$/d" #刪除空行
  sed "/abc/d" #刪除全部含有abc的行
  sed "/abc/,/def/d" #刪除abc 和 def 之間的行,包括其自身
  sed "1,/def/d" #刪除第一行到 def 之間的行,包括其自身
  sed "/abc/,+3d " # 刪除含有abc的行以後,在刪除3行
  sed "/abc/,~3d" #從含有abc的行開始,共刪除3行
  sed "1~2d" # 從第1行開始,每2行刪除一行, 刪除奇數行
  sed "2~2d" # 從第2行開始,每2行刪除一行, 刪除奇數行
  sed "$d" # 刪除最後一行
  sed "/dd\|cc/d" 刪除有dd或者cc的行

  #i :插入, i 的後面能夠接字串,而這些字串會在新的一行出現(目前的上一行);
  #p :列印,亦即將某個選擇的數據印出。一般 p 會與參數 sed -n 一塊兒運行
  sed -n "3p" file # 顯示第三行
  sed -n "1,3p" # 顯示前三行
  sed -n "2,+3p" # 顯示第二行,及後面的三行
  sed -n "$p" # 顯示最後一行
  sed -n "1p;3p;5p" # 只顯示文件一、三、5行
  sed -n "$=" # 顯示文件行數
  #s :替換,能夠直接進行取代的工做。一般這個 s 的動做能夠搭配正規表示法,例如 1,20s/old/new/g's/old/new/g' 
  sed "s/\(all\)/bb/"
  sed -r "s/(all)/bb/"

 

23.2   awk : 一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤其強大。

  簡單來講awk就是把文件逐行的讀入,以空格爲默認分隔符將每行切片,切開的部分再進行各類分析處理。

  # 命令行調用方式
  awk [-F field-separator] 'commands' input-file(s)

  # commands 是真正awk命令,[-F域分隔符]是可選的。 input-file(s) 是待處理的文件。 在awk中,文件的每一行中,由域分隔符分開的每一項稱爲一個域。一般,在不指名-F域分隔符的狀況下,默認的域分隔符是空格。

  # awk工做流程:
  # 讀入有'\n'換行符分割的一條記錄,而後將記錄按指定的域分隔符劃分域,填充域,$0則表示全部域,$1表示第一個域,$n表示第n個域。默認域分隔符是"空白鍵" 或 "[tab]鍵",因此$1表示登陸用戶,$3表示登陸用戶ip,以此類推。

  cat /etc/passwd |awk -F ':' '{print $1}'
  cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'

  awk 經常使用內置變量
  ARGC 命令行參數個數
  ARGV 命令行參數排列, ARGV[0] ARGV[1]
  ENVIRON 支持隊列中系統環境變量的使用
  FILENAME awk瀏覽的文件名
  FNR 瀏覽文件的記錄數
  FS 設置輸入域分隔符,等價於命令行 -F選項
  NF 瀏覽記錄的域的個數
  NR 已讀的記錄數
  OFS 輸出域分隔符
  ORS 輸出記錄分隔符
  RS 控制記錄分隔符

  # 統計/etc/passwd:文件名,每行的行號,每行的列數,對應的完整行內容:
  #awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd

  # 使用printf替代print,可讓代碼更加簡潔,易讀
  awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd

第二十四部分   vi/vim編輯器:

 

24.1   進入vi的命令:
  vi filename :打開或新建文件,並將光標置於第一行首
  vi +n filename :打開文件,並將光標置於第n行首
  vi + filename :打開文件,並將光標置於最後一行首
  vi +/pattern filename:打開文件,並將光標置於第一個與pattern匹配的串處
  vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
  vi filename....filename :打開多個文件,依次進行編輯

 

24.2   移動光標類命令:
  h :光標左移一個字符
  l :光標右移一個字符
  space:光標右移一個字符
  Backspace:光標左移一個字符
  k或Ctrl+p:光標上移一行
  j或Ctrl+n :光標下移一行
  Enter :光標下移一行
  w或W :光標右移一個字至字首
  b或B :光標左移一個字至字首
  e或E :光標右移一個字至字尾
  ) :光標移至句尾
  ( :光標移至句首
  }:光標移至段落開頭
  {:光標移至段落結尾
  nG:光標移至第n行首
  n+:光標下移n行
  n-:光標上移n行
  n:光標移至第n行尾H:光標移至屏幕頂行M:光標移至屏幕中間行L:光標移至屏幕最後行0:(注意是數字零)光標移至當前行首:光標移至第n行尾H:光標移至屏幕頂行M:光標移至屏幕中間行L:光標移至屏幕最後行0:(注意是數字零)光標移至當前行首:光標移至當前行尾

 

24.3   屏幕翻滾類命令 :
  Ctrl+u:向文件首翻半屏
  Ctrl+d:向文件尾翻半屏
  Ctrl+f:向文件尾翻一屏
  Ctrl+b;向文件首翻一屏
  nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。

 

24.4   插入文本類命令 :
  i :在光標前
  I :在當前行首
  a:光標後
  A:在當前行尾
  o:在當前行之下新開一行
  O:在當前行之上新開一行
  r:替換當前字符
  R:替換當前字符及其後的字符,直至按ESC鍵
  s:從當前光標位置處開始,以輸入的文本替代指定數目的字符
  S:刪除指定數目的行,並以所輸入文本代替之
  ncw或nCW:修改指定數目的字
  nCC:修改指定數目的行

 

24.5   刪除命令 :
  ndw或ndW:刪除光標處開始及其後的n-1個字
  do:刪至行首
  d:刪至行尾ndd:刪除當前行及其後n−1行x或X:刪除一個字符,x刪除光標後的,而X刪除光標前的Ctrl+u:刪除輸入方式下所輸入的文本搜索及替換命令/pattern:從光標開始處向文件尾搜索pattern?pattern:從光標開始處向文件首搜索patternn:在同一方向重複上一次搜索命令N:在反方向上重複上一次搜索命令:s/p1/p2/g:將當前行中全部p1均用p2替代:n1,n2s/p1/p2/g:將第n1至n2行中全部p1均用p2替代:g/p1/s//p2/g:將文件中全部p1均用p2替換選項設置all:列出全部選項設置狀況term:設置終端類型ignorance:在搜索中忽略大小寫list:顯示製表位(Ctrl+I)和行尾標誌(:刪至行尾ndd:刪除當前行及其後n−1行x或X:刪除一個字符,x刪除光標後的,而X刪除光標前的Ctrl+u:刪除輸入方式下所輸入的文本搜索及替換命令/pattern:從光標開始處向文件尾搜索pattern?pattern:從光標開始處向文件首搜索patternn:在同一方向重複上一次搜索命令N:在反方向上重複上一次搜索命令:s/p1/p2/g:將當前行中全部p1均用p2替代:n1,n2s/p1/p2/g:將第n1至n2行中全部p1均用p2替代:g/p1/s//p2/g:將文件中全部p1均用p2替換選項設置all:列出全部選項設置狀況term:設置終端類型ignorance:在搜索中忽略大小寫list:顯示製表位(Ctrl+I)和行尾標誌()
  number:顯示行號
  report:顯示由面向行的命令修改過的數目
  terse:顯示簡短的警告信息
  warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
  nomagic:容許在搜索模式中,使用前面不帶「\」的特殊字符
  nowrapscan:禁止vi在搜索到達文件兩端時,又從另外一端開始
  mesg:容許vi顯示其餘用戶用write寫到本身終端上的信息

 

24.6   最後行方式命令 :
  :n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
  :n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
  :n1,n2 d :將n1行到n2行之間的內容刪除
  :w :保存當前文件
  :e filename:打開文件filename進行編輯
  :x:保存當前文件並退出
  :q:退出vi
  :q!:不保存文件並退出vi
  :!command:執行shell命令command
  :n1,n2 w!command:將文件中n1行至n2行的內容做爲command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容做爲command的輸入
  :r!command:將命令command的輸出結果放到當前行

 

24.6   寄存器操做: 
  "?nyy:將當前行及其下n行的內容保存到寄存器?中,其中?爲一個字母,n爲一個數字
  "?nyw:將當前行及其下n個字保存到寄存器?中,其中?爲一個字母,n爲一個數字
  "?nyl:將當前行及其下n個字符保存到寄存器?中,其中?爲一個字母,n爲一個數字
  "?p:取出寄存器?中的內容並將其放到光標位置處。這裏?能夠是一個字母,也能夠是一個數字
  ndd:將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中。

1、插入文本
  i  在當前字符前插入文本  
  I  在行首插入文本      
  a  在當前字符後添加文本  
  A  在行末添加文本     
  o  在當前行後面插入一空行 
  O  在當前行前面插入一空行 
  R  以改寫方式輸入文本   

2、移動光標
  j或下箭頭 向下移動一行
  k或上箭頭 向上移動一行
  h或左箭頭 左移一個字符
  l或右箭頭 右移一個字符
  w     右移一個詞
  W     右移一個以空格分隔的詞
  b     左移一個詞
  B     左移一個以空格分隔的詞
  0     移到行首
  Ctrl-F  向前翻頁
  Ctrl-B  向後翻頁
  nG    到第n行
  G     到最後一行

3、替換文本
  $     到行尾
  (     到句子的開頭
  )     到句子的末尾
  {     到段落的開頭
  }     到段落的末尾

4、刪除文本

  r   替換一個字符
  c   修改文本直到按下Esc健
  cw  修改下一個詞
  cnw  修改接下來的n個詞

5、文本編輯
  yy 將一行文本移到缺省緩衝區中
  yn 將下一個詞移到缺省緩衝區中
  ynw 將後面的n個詞移到缺省緩衝區中
  p  若是缺省緩衝區中包含一行文本,則在當前行後面插入一個空行井將缺省緩衝區中的內容粘貼到這一行中;若是缺省緩衝區中包含多個詞,把這些詞粘貼到光標的右邊。  

  P  若是缺省緩衝區中包含一行文本,則正當前前面插入一個空行井將缺省緩衝區中的內容粘貼到這一行中;若是缺省緩衝區中包含多個詞,把這些詞粘貼到光標的左邊。    

6、保存退出
  zz          保存並退出
  :w filename      寫入文件
  :W          寫入文件
  :x          保存(若是當前文件修改過)並退出
  :q!          不保存文件,直接退出
  :q          退出vi

 

24.7   vi編輯器的啓動與退出:
  直接進入編輯環境
  $ vi

  進入編輯環境並打開(新建)文件
  $ vi myfile

  退出vi編輯環境
  輸入末行命令放棄對文件的修改,並退出編輯器
  :q!

  保存文件
  保存對vi編輯器中已打開文件的修改
  :w

  另存爲文件
  將vi編輯器中的內容另存爲指定文件名
  :w myfile

  退出vi編輯器的多種方法
  未修改退出
  沒有對vi編輯器中打開的文件進行修改,或已對修改進行了保存,直接退出vi編輯器
  :q

  對vi編輯器中的文件進行保存並退出vi編輯器
  :wq

  不保存退出
  放棄對文件內容的修改,並退出vi編輯器
  :q!

 

24.8   光標的移動和翻頁操做:
  h向左移動光標
  l向右移動光標
  k向上移動光標
  j向下移動光標
  翻頁Ctrl + f向前翻整頁
  Ctrl + b向後翻整頁
  Ctrl + u向前翻半頁
  Ctrl + d向後翻半頁

行內快速跳轉
  ^將光標快速跳轉到本行的行首字符
  $將光標快速跳轉到本行的行尾字符
  w將光標快速跳轉到當前光標所在位置的後一個單詞的首字母
  b將光標快速跳轉到當前光標所在位置的前一個單詞的首字母
  e將光標快速跳轉到當前光標所在位置的後一個單詞的尾字母文件內行間快速跳轉

 

24.9   命令功能:
  :set nu 在編輯器中顯示行號
  :set nonu 取消編輯器中的行號顯示
  1G跳轉到文件的首行
  G跳轉到文件的末尾行
  #G跳轉到文件中的第#行

 

24.10   進入輸入模式:
  i在當前光標處進入插入狀態
  a在當前光標後進入插入狀態
  A將光標移動到當前行的行末,並進入插入狀態
  o在當前行的下面插入新行,光標移動到新行的行首,進入插入狀態
  O在當前行的上面插入新行,光標移動到新行的行首,進入插入狀態
  cw刪除當前光標到所在單詞尾部的字符,並進入插入狀態
  c$刪除當前光標到行尾的字符,並進入插入狀態
  c^命令刪除當前光標以前(不包括光標上的字符)到行首的字符,並進入插入狀態

 

24.11   輸入模式的編輯鍵操做: 
  方向鍵進行上下左右方向的光標移動
  Home快速定位光標到行首
  End快速定位光標到行尾
  PageUp進行文本的向上翻頁
  PageDown進行文本的向下翻頁
  Backspace刪除光標左側的字符
  Del刪除光標位置的字符

 

24.12   刪除操做: 
  x刪除光標處的單個字符
  dd刪除光標所在行
  dw刪除當前字符到單詞尾(包括空格)的全部字符
  de刪除當前字符到單詞尾(不包括單詞尾部的空格)的全部字符
  d$刪除當前字符到行尾的全部字符
  d^刪除當前字符到行首的全部字符
  J刪除光標所在行行尾的換行符,至關於合併當前行和下一行的內容

 

24.13   替換操做:

  :s/old/new 將當前行中查找到的第一個字符「old」 串替換爲「new」

  :s/old/new/g 將當前行中查找到的全部字符串「old」 替換爲「new」

  :#,#s/old/new/g 在行號「#,#」範圍內替換全部的字符串「old」爲「new」

  :%s/old/new/g 在整個文件範圍內替換全部的字符串「old」爲「new」

  :s/old/new/c 在替換命令末尾加入c命令,將對每一個替換動做提示用戶進行確認

 

24.14   撤消操做:

  u取消最近一次的操做,並恢復操做結果

  能夠屢次使用u命令恢復已進行的多步操做

  U取消對當前行進行的全部操做

  Ctrl + r對使用u命令撤銷的操做進行恢復

 

24.15   複製與粘貼操做:

  yy複製當前行整行的內容到vi緩衝區

  yw複製當前光標到單詞尾字符的內容到vi緩衝區

  y$複製當前光標到行尾的內容到vi緩衝區

  y^複製當前光標到行首的內容到vi緩衝區

  p讀取vi緩衝區中的內容,並粘貼到光標當前的位置(不覆蓋文件已有的內容)

 

24.16   字符串查找操做:

  /word從上而下在文件中查找字符串「word」

  ?word 從下而上在文件中查找字符串「word」

  n定位下一個匹配的被查找字符串

  N定位上一個匹配的被查找字符串

 

第二十五部分   Linux經常使用的快捷鍵:

  ctrl-a : 把光標移動到命令行最開始的地方。
  ctrl-e : 把光標移動到命令行末尾。
  ctrl-u : 清除命令行中光標所處位置以前的全部字符。
  ctrl-k : 清除從提示符所在位置到行末尾之間的字符
  ctrl-w : 清除左邊的字段
  ctrl-y : 將會貼上被ctrl-u 或者 ctrl-k 或者 ctrl-w清除的部分。
  ctrl-r : 將自動在命令歷史緩存中增量搜索後面入的字符。
  tab : 命令行自動補全-自動補全當前的命令行。若是啓用自動補全腳本命令參數和選項也能夠自動補齊。

  ctrl+alt+t:打開命令終端。

  ctrl+I:命令終端內清屏。

相關文章
相關標籤/搜索