Linux基本操作
一、為什么我們要學習linux

相信大部分人的PC端都是用Windows系統的,那我們為什么要學習linux這個操作系統呢???Windows圖形化界面做得這么好,日常基本使用的話,學習成本幾乎為零。
而Linux不一樣,可能剛接觸Linux的人會認為:Linux好麻煩哦,不好玩,都是字符界面。不直觀、這個破系統是用來干嘛的
日常用的話Windows是比較順手的,但是我們要知道的是:我們開發出來的程序一般都是放在Linux下運行的。
那可能就會有人提出疑問了:Windows同樣是操作系統,為啥要放在Linux下,而不放在Windows下呢??相信Windows也是可以運行我們寫出來的程序的。
我總結了Linux的幾個優點:
1. 免費
2. 很多軟件原生是在Linux下運行的,龐大的社區支持,生態環境好。
3. 開源,可被定制,開放,多用戶的網絡操作系統。
4. 相對安全穩定
二、Linux的基礎知識
Linux系統的組成:
1. linux內核(linus 團隊管理)
2. shell:用戶與內核交互的接口
3. 文件系統:ext3、ext4等;windows 有 fat32 、ntfs
4. 第三方應用軟件
2.1Shell的基本知識
Shell是系統的用戶界面,提供了 用戶與內核進行交互操作的一種接口 (命令解釋器)
Shell可以執行:
? 內部命令
? 應用程序
? shell腳本
使用 type 命令可以 區分 內部命令和外部命令
于是乎,我們利用Shell就可以干下面這些事了:
? 命令行解釋(這是用得最多的!)
? 命令的多種執行順序
? 通配符( wild-card characters )
? 命令補全、別名機制、命令歷史
? I/O重定向( Input/output redirection )
? 管道( pipes )
? 命令替換(?或$( ) )
? Shell編程語言( Shell Script )
Shell的主要版本有以下這么多:
? 我們 常用(默認)的就是bash (bourne again shell)
使用 ps 命令觀察正在執行的shell
2.2Linux基本目錄結構
在Windows下,會有 基本的目錄結構 的:
Linux下也不例外了,也是有基本的目錄結構的:
Linux 文件系統是一個 目錄樹的結構 ,文件系統結構從一個根目錄開始,根目錄下可以有任意多個文件和子目錄,子目錄中又可以有任意多個文件和子目錄
? bin 存放二進制可執行文件(ls,cat,mkdir等)
? boot 存放用于系統引導時使用的各種文件
? dev 用于存放設備文件
? etc 存放系統配置文件
? home 存放所有用戶文件的根目錄
? lib 存放跟文件系統中的程序運行所需要的共享庫及內核模塊
? mnt 系統管理員安裝臨時文件系統的安裝點
? opt 額外安裝的可選應用程序包所放置的位置
? proc 虛擬文件系統,存放當前內存的映射
? root 超級用戶目錄
? sbin 存放二進制可執行文件,只有root才能訪問
? tmp 用于存放各種臨時文件
? usr 用于存放系統應用程序,比較重要的目錄/usr/local 本地管理員軟件安裝目錄
? var 用于存放運行時需要改變數據的文件
2.3命令基本格式
cmd [options] [arguments] ,options稱為選項,arguments稱為參數
選項和參數都作為Shell命令執行時的輸入,它們 之間用空格分隔開 。
? Linux是 區分大小 寫的
一般來說 ,后面跟的選項如果 單字符 選項前使用 一個 減號 - 。 單詞選項 前使用兩個 減號 --
在Linux中, 可執行的文件 也進行了分類:
? 內置命令 :出于效率的考慮,將一些常用命令的解釋程序 構造在Shell內部 。
? 外置命令 :存放在/bin、/sbin目錄下的命令
? 實用程序 :存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目錄下的實用程序
? 用戶程序 :用戶程序經過編譯生成可執行文件后,可作為Shell命令運行
? Shell腳本 :由Shell語言編寫的批處理文件,可作為Shell命令運行
2.4通配符
學過一些正則表達式的或者有點基礎的同學對通配符應該就不陌生的了,在Linux也有通配符(在搜索的時候挺有用的)
? *:匹配任何字符和任何數目的字符
? ?:匹配單一數目的任何字符
? [ ]:匹配[ ]之內的任意一個字符
? [! ]:匹配除了[! ]之外的任意一個字符,!表示非的意思
2.5文件的類型
在Linux下文件的類型有這么多:
? 普通文件 -
? 目錄 d
? 符號鏈接 ? l
o 硬鏈接: 與普通文件沒什么不同,inode 都指向同一個文件在硬盤中的區塊
o 軟鏈接: 保存了其代表的文件的絕對路徑,是另外一種文件,在硬盤上有獨立的區塊,訪問時替換自身路徑(簡單地理解為 Windows 中常見的快捷方式)。
? 字符設備文件? c
? 塊設備文件 b
? 套接字 s
? 命名管道 p
我們常見的就是普通文件,目錄和符號鏈接。其他的了解一下即可~
2.5.1用戶主目錄
前面已經說了,我們的Linux是 多用戶的網絡系統 !所以,我們可以在Linux下創建多個用戶, 每個用戶都會有自己專屬的空間 。
? 所以,在創建用戶時,系統管理員 會給每個用戶建立一個主目錄 ,通常在 /home/ 目錄下
? 比如:用戶osmond的主目錄為: /home/osmond
用戶 對自己主目錄的文件擁有所有權 ,可以在自己的主目錄下進行相關操作。
三、常用的命令
3.1常用的文件、目錄操作命令
這是我們 使用得最多 的命令了, Linux最基礎的命令 !
? 可用? pwd 命令查看用戶的當前目錄
? 可用? cd ?命令來切換目錄
? . 表示當前目錄
? .. ?表示當前目錄的上一級目錄(父目錄)
? - 表示用 cd 命令切換當前目錄之前所在的目錄
? ~ ?表示 用戶主目錄 的絕對路徑名
絕對路徑:
? 以斜線(/)開頭 ,描述到文件位置的 完整說明 ?,任何時候你想指定文件名的時候都可以使用
相對路徑 :
? 不以斜線(/)開頭 ,指定 相對于你的當前工作目錄而言的位置 ?,可以被用作指定文件名的簡捷方式
tips: 輸入命令的時候要常用tab鍵來補全
? ls :顯示文件或目錄信息
? mkdir :當前目錄下創建一個空目錄
? rmdir :要求目錄為空
? touch :生成一個空文件或更改文件的時間
? cp :復制文件或目錄
? mv :移動文件或目錄、文件或目錄改名
? rm :刪除文件或目錄
? ln :建立鏈接文件
? find :查找文件
? file/stat :查看文件類型或文件屬性信息
? cat : 查看文本文件內容
? more : 可以分頁看
? less : 不僅可以分頁,還可以方便地搜索,回翻等操作
? tail -10 : 查看文件的尾部的10行
? head -20 :查看文件的頭部20行
? echo :把內容重定向到指定的文件中 ,有則打開,無則創建
? 管道命令 | ?:將前面的結果給后面的命令,例如: ls -la | wc ,將ls的結果加油wc命令來統計字數
? 重定向 > 是覆蓋模式, >> 是追加模式 ,例如: echo "Java3y,zhen de hen xihuan ni" > qingshu.txt 把左邊的輸出放到右邊的文件里去
學了這些命令我們能干嘛? 其實就是在Windows下復制文件、粘貼文件、創建文件、查看文件這幾種 ~~~
3.2文件打包和壓縮命令
在Windows操作系統下,我們會使用WinRAR或者快壓等等的壓縮軟件來進行壓縮或者解壓。
在Linux下 當然也存在壓縮或解壓的操作咯 ,下面我們就來學習一下在Linux下是怎么壓縮和解壓的!
壓縮的方式也是有好幾種,我們 常用 的有下面這三種:
? gzip
? bzip2
? tar
常用的壓縮的命令就有:
? gzip filename
? bzip2 filename
? tar -czvf filename
常用的解壓命令有:
? gzip -d filename.gz
? bzip2 -d filename.bz2
? tar -xzvf filename.tar.gz
3.3正則表達式+grep
上面我們已經學過了 cat 、 more 、 less 、 tail 這些查看文本文件的命令了,但是我想 快速查看這個文本文件下的某些關鍵字是否存在 ,那怎么辦???
在Windows下就比較簡單的,幾乎所有的文本編輯器(記事本)都支持 CTRL+F ,往里面輸入關鍵字就可查找出來:
3.3.1正則表達式
3.3.2grep命令
grep(global search regular expression)是一個 強大的文本搜索工具 。grep 使用正則表達式搜索文本,并把匹配的行打印出來。
格式: grep [options] PATTERN [FILE...]
? PATTERN 是查找條件: 可以是普通字符串、可以是正則表達式 ,通常用單引號將RE括起來。
? FILE 是要查找的文件,可以是用空格間隔的多個文件,也可是使用Shell的通配符在多個文件中查找PATTERN,省略時表示在標準輸入中查找。
? grep命令不會對輸入文件進行任何修改或影響,可以使用輸出重定向將結果存為文件
例子:
? 在文件 myfile 中查找包含字符串 mystr的行
o grep -n mystr myfile
? 顯示 myfile 中第一個字符為字母的所有行
o grep '^[a-zA-Z]' myfile
? 在文件 myfile 中查找首字符不是 # 的行( 即過濾掉注釋行 )
o grep -v '^#' myfile
? 列出/etc目錄(包括子目錄)下所有文件內容中包含字符串“root”的文件名
o grep -lr root /etc/*
3.4幾種提高工作效率的方法
? 自動補全命令
o TAB鍵
? 歷史命令
o 上下箭頭鍵
? 別名alias
3.5Shell變量 和 Shell環境
在Windows下有用戶的環境變量,系統的環境變量。在Linux一樣也是有的。
Shell 變量大致可以 分為三類 :
? 內部變量 :由系統提供,用戶只能使用不能修改。
o ?
o GROUPS
? 環境變量 :這些變量決定了用戶工作的環境,它們不需要用戶去定義,可以直接在 shell 中使用,其中某些變量用戶可以修改。
? 用戶變量 :由用戶建立和修改,在 shell 腳本編寫中會經常用到。
o 變量賦值(定義變量)
? varName=Value
? export varName=Value
o 引用變量 $varName
Shell變量的 作用域 :
? 局部變量 的作用范圍僅僅 限制在其命令行所在的Shell或Shell腳本文件中 ;
? 全局變量 的作用范圍則包括 本Shell進程及其所有子進程 。
? 局部變量與全局變量 互換 :可以使用? export ?內置命令將局部變量設置為全局變量。 可以使用? export ?內置命令將全局變量設置為局部變量。
export命令 :
? 顯示 當前Shell可見的全局變量
o export [-p]
? 定義變量值的同時聲明為全局變量 。
o export < 變量名 1= 值 1> [< 變量名 2= 值 2> ...]
? 聲明已經賦值的某個(些) 局部變量為全局變量 。
o export < 變量名 1> [< 變量名 2> ...]
? 聲明已經賦值的某個(些) 全局變量為局部變量 。
o export -n < 變量名 1> [< 變量名 2> ...]
Shell環境變量:
? 環境變量定義 Shell 的 運行環境 ,保證 Shell 命令的正確執行。
? Shell用環境變量來確定查找路徑、注冊目錄、終端類型、終端名稱、用戶名等。
? 所有環境變量 都是全局變量 (即可以傳遞給 Shell 的子進程),并可以由用戶重新設置。
Shell變量:查詢、顯示和取消 :
? 顯示當前已經定義的所有變量
o 所有 環境變量 : env
o 所有 變量和函數 (包括環境變量) : set
? 顯示某(些)個變量的值
o echo $NAME1 [$NAME2 ……]
? 取消變量的聲明或賦值
o unset
四、VI編輯器
4.1普通模式
? G 用于直接跳轉到文件尾
? ZZ 用于存盤退出Vi
? ZQ 用于不存盤退出Vi
? / 和? 用于查找字符串
? n 繼續查找下一個
? yy 復制一行
? p 粘帖在下一行,P粘貼在前一行
? dd 刪除一行文本
? x 刪除光標所在的字符
? u 取消上一次編輯操作(undo)
4.2插入模式
在 Normal 模式下輸入插入命令? i 、 a 、 o 進入insert模式。用戶輸入的任何字符都被vim 當做文件內容保存起來 ,并將其顯示在屏幕上。
? 在文本輸入過程中,若想回到Normal模式下,按 Esc 鍵即可。
4.3命令行模式
Normal 模式下,用戶按冒號? : 即可進入 Command 模式,此時 vim 會在顯示窗口的最后一行 (屏幕的最后一行) 顯示一個 “:” 作為 Command 模式的提示符,等待輸入命令。
? :w ?保存當前編輯文件,但并不退出
? :w ?newfile 存為另外一個名為 “newfile” 的文件
? :wq ?用于存盤退出Vi
? :q! ?用于不存盤退出Vi
? :q 用于直接退出Vi (未做修改)
設置Vi環境:
? :set autoindent 縮進,常用于程序的編寫
? :set noautoindent 取消縮進
? :set number 在編輯文件時顯示行號
? :set nonumber 不顯示行號
? :set tabstop=value 設置顯示制表符的空格字符個數
? :set 顯示設置的所有選項
? :set all 顯示所有可以設置的選項
Linux Shell
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。