Linux基礎入門(實驗樓實驗)

實驗一 Linux系統簡介

Linux和windows、Mac OS同樣是一種操做系統。最先流行起來的操做系統是UNIX,但因爲其過分商業化,價格昂貴,所以在校園裏人們大多選擇MINIX。1991年,Linux之父Linus Torvalds從MINIX入手,計劃開發一個性能更好的操做系統。他第一次發行的版本吸引了不少黑客,這使它很快具備了一些吸引人的特性。 Linux自己只是操做系統的內核,它沒有本身去開發應用程序,而是使用已有的自由軟件,這減小了搭建開發環境花費的工做量,Linux中許多重要的軟件都來自於自由軟件基金GNU項目。
Linux發展到今天已經成爲了具備免費、穩定、安全、資源佔用少、定製性高、具備多種可選擇圖形用戶界面的優秀系統。所以儘管Linux沒有特定的支持廠商,缺乏對遊戲娛樂和專業軟件的支持,但仍然在世界範圍內受到開發人員的普遍歡迎。Linux如今擁有Debian、Ubuntu、CentOS等多個發行版。linux

實驗二 基本概念及操做

Linux桌面環境

Linux自己是沒有圖形界面的,咱們看到的圖形界面其實是運行在 Linux上的一套軟件,這些實現了客戶端功能的桌面環境有KDE,GNOME,XFCE,LXDE,用戶能夠根據本身的喜愛選擇不一樣的桌面環境,定製本身的桌面。實驗樓目前使用XFCE桌面環境。
正則表達式

Linux終端

概念

咱們與Linux系統的交互經過一個叫Shell的中間程序完成,在圖形界面下Linux系統還爲咱們提供了一個叫終端模擬器的程序----Terminal。終端本質上對應着Linux上的/dev/tty設備,Linux的多用戶登陸實際上就是經過不一樣的/dev/tty設備完成。Linux默認提供6個Terminal。shell

Shell

對應於Linux內核,shell是linux系統提供給咱們的「殼」,它之因此被稱做shell是由於它隱藏了操做系統的底層細節。Shell既是用戶交互的界面,也是控制系統的腳本語言,在Linux中常見的shell有bash、zsh、ksh、csh等,Ubuntu終端默認使用的是bash,實驗樓中的終端則使用zsh。apache

命令行操做初體驗

建立空文件、查看目錄
vim

運用通配符批量操做

windows

在使用終端進行交互的過程當中,會有命令打起來麻煩,容易打錯,終端用起來很累的感受,熟練使用快捷鍵能夠大大提升終端的使用效率,linux下的快捷鍵如tab補全命令、目錄、文件名等都很好用,詳細能夠參考Linux快捷鍵大全。
tomcat

做業

實驗三 用戶及文件權限管理

Linux用戶管理

Linux是能夠多用戶登陸的,他們共享一部分主機資源,也有本身的用戶空間。儘管他們的文件都是放在同一個物理磁盤上,但因爲Linux的用戶管理和權限控制讓用戶看起來有屬於本身的空間。

查看用戶

輸出的第一列表示當前僞終端用戶的用戶名,第二列pts/0中的pts表示僞終端,0表示僞終端序號。
安全

建立用戶

在Linux系統中,root帳戶擁有着最高的權利,能夠新建/添加用戶。咱們通常登陸都是以普通用戶的身份登陸,要建立用戶須要root權限,這須要用到sudo命令。要使用這個命令須要兩個條件:
bash

  • 知道當前用戶的登陸密碼
  • 當前用戶在sudo組中

su <user>能夠切換到用戶user;sudo <cmd>能夠以root權限運行命令cmd,這須要當前用戶屬於sudo組,且須要當前用戶的密碼;su -<user>也能夠切換用戶,而且會把環境變量改成目標用戶的環境變量。

新建用戶、查看用戶目錄、切換用戶



編輯器

用戶組

Linux中每一個用戶都屬於一個用戶組,一個用戶能夠屬於多個用戶組,同一用戶組中的用戶能夠共享一部分特定的資源,當建立一個新用戶時會同時建立一個同名的用戶組,查看用戶屬於那個用戶組能夠用groups命令或者查看/etc/group文件。

查看用戶組


刪除用戶

文件權限

文件權限就是文件的訪問控制權限,即哪些用戶和組羣能夠訪問文件及可執行什麼樣的操做。

查看文件權限

使用長格式列出文件ls -l能夠看到文件的權限。其中r表示讀權限,w表示寫權限,x表示執行權限。

命令ls還能夠添加其餘的參數實現更多的功能,以下

變動文件全部者

chown命令能夠變動文件的全部者,以下

修改文件權限

文件權限修改使用chmod命令。文件權限能夠用二進制多項式表示,也能夠用加減賦值的方法表示。對於二進制表示法,按照rwx的順序,對應的值分別爲四、二、1,即若是一個文件對某用戶有rw權限,則值就是6。以下所示:

做業

添加一個用戶loutest,使用sudo建立文件/opt/forloutest,設置用戶loutest能夠讀寫。

思考

命令chmod後接一組數字——通常是三位——表示對應用戶的權限,那麼哪一位數字對應哪些用戶呢?經查證和實驗,第一位數字表示文件全部者權限,第二位表示與文件全部者同組的用戶的權限,第三個數字表示其餘用戶組的權限。對於四位數字的狀況,至關於在原來三位以前再加一位,這一位的用法詳見詳解

實驗四 Linux目錄結構及文件基本操做

Linux目錄結構

Linux目錄看起來和windows類似,但實際上實現機制徹底不一樣。Windows以存儲介質爲基礎實現文件管理,Linux則是以樹形目錄的形式來構建整個系統。

FHS標準

Linux的目錄結構是規定好的,FHS(Filesystem Hierarchy Standard)定義了兩層規範:

  1. /目錄下應該存放什麼文件數據。
  2. /usr/var這兩個目錄的子目錄應該放什麼文件數據。詳見FHS2.3標準文檔

目錄路徑

使用cd命令能夠切換目錄,在linux裏用.表示當前目錄,用..表示上一級目錄,用-表示上一次所在目錄,用~表示當前用戶home目錄。

路徑分爲相對路徑和絕對路徑,絕對路徑能夠理解爲完整路徑,相對路徑則是相對於當前目錄的路徑。使用pwd命令能夠得到當前目錄的絕對路徑。

Linux文件的基本操做

新建文件、目錄

複製文件、目錄

刪除文件、目錄

移動、重命名、查看等

查看、編輯文件

vim是一個強大的文件編輯器,Linux下還有一些其餘的文件編輯器都很好用。

做業

批量創建並刪除文件

環境變量與文件查找

變量

變量準確的說是Shell變量,變量的做用域即變量的有效範圍(好比一個函數中、一個源文件中或者全局範圍),在該範圍內只能有一個同名變量。一旦離開則該變量無效,如同不存在這個變量通常。
Shell中建立變量

環境變量

一般咱們會涉及到的變量類型有三種:

  • 當前 Shell 進程私有用戶自定義變量,如上面咱們建立的 tmp 變量,只在當前 Shell 中有效。
  • Shell 自己內建的變量。
  • 從自定義變量導出的環境變量。

能夠簡單地理解爲在當前進程的子進程有效則爲環境變量,不然不是。
也有三個與上述三種環境變量相關的命令:setenvexport。這三個命令很類似,都是用於打印環境變量信息,卻別在於打印的變量類型不一樣。
能夠直觀的使用vimdiff工具比較他們的差異:

命令的查找路徑與順序

Shell執行用戶輸入的命令是經過環境變量PATH來搜索的,將本身的程序路徑加入到PATH中,再運行本身的程序使就不須要輸入完整路徑了。

經過source命令可讓本身的環境變量當即生效

搜索文件

與搜索相關的經常使用命令有whereiswhichfindlocatewhereis搜索簡單快速,locate搜索快而全,which小而精,find精而細。如圖。

做業

找出/etc目錄下全部以.list結尾的文件。

挑戰一 尋找文件

尋找在/etc目錄下的sources.list文件並修改文件權限爲只有本身能夠訪問。

思考

能夠看到本次挑戰中修改權限時犯過很多次錯誤,由於對命令中的參數對應哪些用戶還不夠熟悉,可見要想高效的的使用Linux須要不少的練習。

文件打包與解壓縮

概念

文件壓縮的格式有不少,但在Linux下掌握ziptar便可。

實戰

zip壓縮和unzip解壓縮

廢話很少說直接看操做。


tar打包工具

tar本來是一個打包工具,但在Linux上同時還實現了對7z、 bzip2等壓縮工具的支持,只是須要多加幾個參數,很是方便。

做業

建立test文件,分別用zip和tar壓縮並解壓到用戶根目錄

實驗七 文件系統操做與磁盤管理

基本操做

查看磁盤和目錄的容量

由於在實驗樓的字符界面對漢字支持有問題,因此文中出現一些「印章」請諒解。

df命令

du命令

簡單磁盤管理

Linux下一切即文件,首先嚐試使用dd命令從標準輸入讀入並輸出到標準輸出或文件。

使用dd命令建立虛擬鏡像文件

其餘磁盤操做

mkfs命令能夠格式化磁盤;mount命令能夠掛載磁盤到目錄樹;unmount能夠卸載已掛載磁盤;fdisk命令能夠爲磁盤分區。losetup命令能夠創建鏡像與迴環設備的關聯。

做業

找出當前目錄下佔用最大的前十的文件。

如圖,首先du命令獲得文件的大小,sort命令按文件大小排序,用head命令取前十。

實驗八 Linux下的幫助命令

內建命令與外部命令

內建命令其實是 shell 程序的一部分,其中包含的是一些比較簡單的 Linux 系統命令,這些命令是寫在bash源碼的builtins裏面的,由 shell 程序識別並在 shell 程序內部完成運行,一般在 Linux 系統加載運行時 shell 就被加載並駐留在系統內存中。並且解析內部命令 shell 不須要建立子進程,所以其執行速度比外部命令快。好比:history、cd、exit 等等。

外部命令是 Linux 系統中的實用程序部分,由於實用程序的功能一般都比較強大,因此其包含的程序量也會很大,在系統加載時並不隨系統一塊兒被加載到內存中,而是在須要時纔將其調入內存。雖然其不包含在 shell 中,可是其命令執行過程是由 shell 程序控制的。外部命令是在 Bash 以外額外安裝的,一般放在/bin,/usr/bin,/sbin,/usr/sbin等等。好比:ls、vi等。

在系統中咱們可使用type命令來了解一個命令的類型。

幫助命令的使用

helpmaninfo

以上三個命令均可以得到幫助信息,不一樣的是,help命令用於顯示Shell內建命令的簡要幫助信息;man命令沒有內建和外部之分,它顯示系統手冊頁中的內容,更加詳細;info是GNU的超文本幫助系統,顯示的信息更多。

實驗九 Linux任務計劃crontab

crontab的使用

crontab簡介

crontab命令從輸入設備讀取指令,並將其存放於crontab文件中,以供以後讀取和執行。一般,crontab儲存的指令被守護進程激活,crond 爲其守護進程,crond經常在後臺運行,每一分鐘會檢查一次是否有預約的做業須要執行。

crontab準備和使用

在實驗樓須要先啓動rsyslog,以便經過日誌中的信息瞭解任務是否真的被執行了。其次手動啓動crontab,經過crontab -e添加任務。添加每分鐘01秒時新建文件的任務以下:

在文件中首先用五個參數表示任務執行的時間,後面接具體的任務。五個時間參數分別爲分、時、天、月份、周幾。

挑戰二 備份日誌

爲shiyanlou用戶添加計劃任務,天天三點備份alternative.log到/home/shiyanlou/tmp目錄下,命名爲時間,如2018年-10月-08日,並刪除前一天備份的文件。

實際上圖中的句子有一個錯誤,那就是&&應該爲||,這在後面纔會學到。然而即使有錯在實驗樓提交依然經過了,可見實驗樓的在檢測結果時並無判斷以前的文件是否被刪除了。

實驗十 命令執行順序控制與管道

命令執行的順序控制

一般狀況下咱們都是一條一條命令輸入,系統天然也就一條一條的執行,若是咱們一次輸入多條呢?

順序執行多條命令

多條命令間能夠用隔開,這樣系統就會順序執行這些命令,這在更新並安裝軟件時十分方便。

有選擇的執行命令

實際上命令順序執行極可能遇到問題,那就是若是下一條命令的執行須要用到前一條命令的結果,那麼順序執行就會出錯。因此咱們能夠用&&||來鏈接多條命令進行有選擇的執行。當&&命令返回值是0的時候,&&後的命令會繼續執行;||則在前面的命令返回值不爲零時纔會執行後面的命令。要知道前一條命令的返回值,使用echo $?

思考

||&&任意順序鏈接命令均可以嗎?固然是能夠的,其實只要記住一條標準,那就是||&&後面的命令是否執行之和他們前面一條命令的返回值有關就好了。

管道

咱們在使用一些過濾程序時常常會用到的就是匿名管道,在命令行中用分隔符|表示。管道鏈接兩條命令,將前一條命令的輸出直接做爲下一條命令的輸入。如圖

一些搭配管道食用更佳的命令

  1. wc命令。這個命令用於統計並輸出一個文件中行、單詞和字節的數目。好比通通計/etc下全部的目錄數ls -dl /etc/*/ | wc -l
  2. sort命令。排序命令,前面已經用過不少次了,這裏再也不舉例。
  3. uniq去重命令。可用於過濾或者輸出重複行,注意這裏的重複指連續重複,因此常常搭配sort一塊兒使用。如輸出重複過的行及重複次數history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -dc.

實驗十一 簡單的文本處理

文本處理命令

  1. tr命令。此命令能夠用來刪除或修改一段文本信息中的某些文字。如圖78
  2. col命令。將tab轉爲必定數量的空格或者反之。圖 79
  3. jion命令。將兩個文件中包含相同內容的一行合併到一塊兒。
  4. paste命令。在不對比數據的狀況下,直接將多個文件合併到一塊兒。

做業

不使用轉換工具的狀況下,使用學過的命令手動完成dos文本到UNIX格式的轉換。

很簡單就能夠完成轉換,但dos文本格式和UNIX文本格式的差異真的只有這麼點嗎?

實驗十二 數據流重定向

數據流重定向簡單的理解就是將本來輸出到一個地方的數據轉到另外一個輸出位置,如輸出到標準輸出中的數據轉而輸出到文件中。須要注意的是,標準輸出和標準錯誤輸出是兩種不一樣的輸出,要對這兩種信息同時進行重定向須要特殊的操做,即便用&>。對比如下兩圖。

使用tee命令能夠實現數據的多重重定向,使用exec能夠實現「永久」重定向。

挑戰三 歷史命令

從命令記錄中找出頻次前三的命令並存儲。對這個實驗我是有一些疑問的。下面是提交經過的命令。

下面是兩種輸出。

顯然我理解的命令是下面那種輸出,但這種提交是錯誤的,正確的反而是上面那種,感受實驗樓把文件行數減掉後的第一個字段直接當成命令了,彷佛是實驗樓錯了?

實驗十三 正則表達式基礎

正則表達式,又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法(英語:Regular Expression,在代碼中常簡寫爲 regex、regexp 或 RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。

正則表達式不管是在什麼操做系統下,都是字符流處理的一種很經常使用也很重要的方式。在Linux下要注意正則表達式和通配符的區分。正則表達式中的基本語法和特殊符號以下。

挑戰四 數據提取

在文件中匹配出數字開頭的行,匹配出正確的郵箱格式。

郵箱匹配實際上取巧了,由於該文件中的數據不多這樣作不會出問題。

實驗十四 Linux下軟件安裝

  • 聯網安裝apt-get install <軟件包名>
  • 修復安裝apt-get --reinstall install <軟件包名>
  • 卸載apt-get remove <軟件包名>
  • 本地安裝dpkg

實驗十5、十六 進程相關

程序(procedure):不太精確地說,程序就是執行一系列有邏輯、有順序結構的指令,幫咱們達成某個結果。就如咱們去餐館,給服務員說我要牛肉蓋澆飯,她執行了作牛肉蓋澆飯這麼一個程序,最後咱們獲得了這麼一盤牛肉蓋澆飯。它須要去執行,否則它就像一本武功祕籍,放在那裏等人翻看。

進程(process):進程是程序在一個數據集合上的一次執行過程,在早期的UNIX、Linux 2.4及更早的版本中,它是系統進行資源分配和調度的獨立基本單位。同上一個例子,就如咱們去了餐館,給服務員說我要牛肉蓋澆飯,她執行了作牛肉蓋澆飯這麼一個程序,而裏面作飯的是一個進程,作牛肉湯汁的是一個進程,把牛肉湯汁與飯混合在一塊兒的是一個進程,把飯端上桌的是一個進程。它就像是咱們在看武功祕籍這麼一個過程,而後一個篇章一個篇章地去練。

經過本實驗咱們初步的瞭解進程在系統中存在的概念,以及進程如何在系統中衍生,發展,以及進程之間存在的相互關係,學會了進程的查看命令 ps,pstree,top,以及使用這些命令時所獲得的信息的含義,從而獲取咱們須要的信息,同時咱們學會了進程的管理命令 kill,nice,renice能夠爲咱們在後續學習進程管理打下基礎,同時瞭解了工做與進程,以及工做管理的一些使用性的操做。

實驗十七 日誌系統

日誌數據能夠是有價值的信息寶庫,也能夠是毫無價值的數據泥潭。它能夠記錄下系統產生的全部行爲,並按照某種規範表達出來。咱們可使用日誌系統所記錄的信息爲系統進行排錯,優化系統的性能,或者根據這些信息調整系統的行爲。收集你想要的數據,分析出有價值的信息,能夠提升系統、產品的安全性,還能夠幫助開發完善代碼,優化產品。日誌會成爲在事故發生後查明「發生了什麼」的一個很好的「取證」信息來源。日誌能夠爲審計進行審計跟蹤。

系統日誌主要是存放系統內置程序或系統內核之類的日誌信息如 alternatives.log 、btmp 等等,應用日誌主要是咱們裝的第三方應用所產生的日誌如 tomcat7 、apache2 等等。
配置的日誌可使用syslog方便操做,日誌轉儲使用logrotate十分方便。

經過本實驗咱們瞭解系統日誌結構,以及咱們能夠從中獲取什麼樣的信息,給咱們帶來什麼樣的價值。還有日誌工具的配置,以及省心省力的 logrotate。

實驗感想

Linux表面死板,實則是一個自由度很高的系統。在終端中進行操做看似困難,但熟悉以後不少事情的效率卻遠高於圖形界面。本次實驗以前我其實用過一些Linux,那時對它的感受就是雖然難用可是乾淨,它只作用戶讓它作的事。通過這兩天連續使用Linux,感受Linux其實沒那麼難用,相反在應用安裝,環境配置時感受比windows要方便好多,並且真的是能作到「我輸入了什麼,就產生什麼結果」。這和windows等圖形界面的操做系統有很大不一樣,圖形界面常常鼠標不當心點一下哪裏就徹底偏離了預想的方向。繼續練習,相信Linux的使用會更加駕輕就熟。

相關文章
相關標籤/搜索