虛擬控制臺
一臺計算機的輸入輸出設備就是一個物理的控制臺 ;
如果在一臺計算機上用軟件的方法實現了多個互不干擾獨立工作的控制臺界面,就是實現了多個虛擬控制臺;
Linux終端的工作方式是字符命令行方式,用戶通過鍵盤輸入命令進行操作,可以通過Linux終端對系統進行控制。
Linux 終端
Linux終端其實就是用戶與操作系統之間的一個接口,用戶通過終端與操作系統進行交互.Linux終端包括Shell字符界面終端、圖形界面終端及其他用戶界面的終端;
shell
什么是shell
Shell是一個作為用戶與linux系統間接口的程序,它允許用戶向操作系統輸入需要執行的命令,返回執行結果
。在Linux中可有多種Shell,可用多個Shell,一個用戶同一時刻只能用一個Shell。
Shell的種類 :
- ash: 是貝爾實驗室開發的Shell,bsh是對ash的符 號鏈接。
- bash: 是GNU的Bourne Again Shell,是GNU操作系 統上默認的Shell。sh以及bash2都是對它的符 號鏈接。
- tcsh: 是Berkeley UNIX C Shell。csh是對它的符號 鏈接。
- ksh: Korn Shell的語法與Bourne Shell相同,同時具 備了C Shell的易用特點。
- zsh : Korn Shell 的一個增強版本,具備bash Shell 的許多特點。
GNU工具中的使用的是:bash。bash作為/bin/sh被默認安裝。大多數Linux發行版中,Shell程序/bin/sh實際上是對程序/bin/bash的一個鏈接
echo $SHELL #查看當前使用Shellchsh -l #查看系統支持的Shell列表chsh -s /path/to/shell username #更改Shell/bin/bash --version #查看bash版本
Shell命令的基本格式是:
命令名 [選項] <參數1> <參數2> ……
功能&特點
- 命令自動補齊(tab鍵)
兩下tab - 歷史記錄查看(鍵盤上下鍵)
上下翻看歷史輸入命令/ctrl + r - shell提示符(#, $)
#:超級管理員root的命令提示符
$: 其他用戶的命令提示符
- 輸入輸出重定向(>, >>, <)
在Linux中每一個程序的執行,都有輸入、輸出和錯誤輸出;Linux系統中所有的設備都是以文件的形式存在(鍵盤、鼠標、顯示器…);系統啟動時自動打開了三個文件描述符
-
… < 文件
輸入重定向wc -l < list.txt
-
… > 文件
輸出重定向 覆蓋原有內容ls > out.txt
-
… >> 文件
追加重定向 文件末尾添加echo abc >> out.txt
-
高級重定向
ls /usr /abc >ok.txt
ls /usr /abc 1>ok.txt 2>error.txtls /usr /abc 2>/dev/null
- 管道(|)
作用:把前一個命令的輸出作為下一個命令的輸入
符號: |
例子:
ls /var/log | grep log | wc -l
Linux文件命令
文件概述
文件是Linux用來存儲信息的基本結構,它是被命名的存儲在某種介質上的一組信息的集合。
Linux中所有內容都以文件的形式保存,分為:
- 普通文件
- 目錄文件
- 設備文件
文件的成分:無論文件是一個程序、一個文檔、一個數據庫、一個目錄,都有以下同樣的結構
- 名字
- 索引節點,又稱i節點,存放文件的狀態信息的一個數據結構。包含文件的長度、創建及修改時間、權限、所屬關系、磁盤位置等。
- 數據
Linux目錄
目錄文件也包含數據,它與普通文件的差別是:內核對這些數據進行結構化處理,它是由成對的“i節點號/文件名”構成的列表。
- 當把文件添加到一個目錄中時,該目錄的尺寸會增大,以便容納新文件名。
- 當刪除文件時,目錄的尺寸并不減小,而是內核對該目錄項做上特殊標記,以便下次添加一個文件時重新使用它
工作目錄:用戶登錄到Linux系統后,每時每刻都處在某個目錄之中,此目錄被稱為“工作目錄” 或“當前目錄”
用戶主目錄(Home Directory):是系統管理員在增加用戶時為該用戶建立起來的目錄,每個用戶都有自己的主目錄。 使用符號~表示
絕對路徑是指從“根”開始的路徑,也稱為完全路徑;
cd /usr/local/bin
相對路徑是指從用戶工作目錄開始的路徑。
cd /usr
cd local/bin
特殊目錄
- “.”代表該目錄自己,
- “…”代表該目錄的父目錄,
- 對于根目錄,“.”和“…”都代表其自己
隱藏文件
以.開頭的都是隱藏文件
Linux文件屬性
Linux文件種類
- 普通文件( regular file ) :[ - ]
純文字文件(ascii) 或 二進制文件(binary) - 目錄文件 (directory): [ d ]
- 鏈接文件 (link):[ l ]
- 設備文件 (device):
區塊 (block) 設備文件:[ b ];
字符 (character) 設備文件:[ c ]。
- 管道文件(Pipe): [ p ]
- Socket文件(Socket): [ s ]
ls
顯示目錄與文件操作命令
ls [-a] [-l] [-i] [-t] [-S] [-d][-R]
- -a all 列出所有,包括隱藏文件
- -l long 長格式
- -i inode節點
- -t time排序
- -S size排序
- -d directory 只顯示目錄,而不是顯示其下的內容
- -R recursive 顯示指定目錄及子目錄下的內容
cd
切換工作目錄命令cd
cd <dirName>
pwd
顯示當前路徑命令pwd
cp
mv
cat
文件查看和連接命令
cat [選項] <file1> <file2> …
[-n] : 給每行編號
[-b] : 給每行編號,除了空白行
cat -n file1 /usr/local/file2
more
less
head
tail
mkdir
創建目錄命令
mkdir [-p] <dirName>…
-p 中間路徑不存在,會自動創建
rmdir
刪除空目錄命令
rmdir [-p] <dirName>
-p 刪除路徑中的空目錄
touch
rm
locate/slocate
文件定位命令
locate [選項] <search string>
建立所有文件以及路徑的數據庫,快速從系統數據庫中查找指定的內容
先要更新數據庫 updatedb
find
查找文件或者目錄命令
find [path…] [expression][-name][-perm][-size][-user][-type][-exec]
find /etc -name “*.conf”
find . -type f -exec ls -l ‘{}’ \;
ln
ln [選項] <source> <dest>
[-s] 軟鏈接
- 硬鏈接(hard link):給文件一個副本(別名),同時建立兩者之間的連接關系,修改其中一個,與其連接的文件同時被修改,如果刪除其中一個,其余的文件不受影響。磁盤上只有一份數據。硬鏈接是存在同一個文件系統中。
- 軟鏈接(symbolic link):軟鏈接的方式則是產生一個特殊的文件,該文件的內容是指向另一個文件的位置。它只是一個快捷方式,刪除了源文件,這個連接文件就沒用了。軟鏈接可以跨越不同的文件系統。
chmod
- 作用:改變指定目錄或文件的權限。
- 語法:
chmod [選項] mode文件名或目錄
該命令語法中mode代表權限設定字串,格式如下:
- 字符方式:[ugoa…][±=][rwxX]…][,…]
- 數字方式:rwx 421 0
- [-R] :遞歸遍歷
chmod a=rwx,u-x,g-wx,o-rwx test.txt
chmod 640 test.txt
chmod -R 764 DirectoryPath
chown
- 作用:改變指定目錄或文件的所屬用戶、所屬組。
- 語法:
chown [選項] 用戶名[:組名] 文件名或目錄
- root權限
- [-R] : 遞歸遍歷
chgrp
- 作用:改變指定目錄或文件的所屬組。
- 語法:
chgrp [選項] 組名 文件名或目錄
- [-R] :遞歸遍歷
cut
- 作用:從指定文件中過濾或提取特定內容,并顯示在當前屏幕上。
- 提取/etc/passwd文件中的第1,3,5列
cut -d: -f1,3,5 /etc/passwd
cut -d: -f 1-5 /etc/passwd
- 將/etc/passwd文件從第2個字母至第5個字母的內容提取出來
cut -c2-5 /etc/passwd
cut -c2,5,7 /etc/passwd
wc
默認統計文件內的行/字和字節數
wc [-l](lines)[-w](words)[-m](chars)[-c](bytes) 文件路徑
可以與管道結合使用
sort
排序
sort [-r](reverse)[-u](unique)[-f](nocase) 文件路徑
可以與管道結合使用
tr
文件處理工具
tr [選項] [字符串1] [字符串2]
常用選項/參數含義如下。
-d:刪除字符串1中所有輸入字符。
cat /etc/passwd | tr ‘a-z’ ‘A-Z’ #替換
tr -d ‘a-b’ < test.txt #刪除
tr ‘a-z’ ‘A-Z’ < /etc/passwd #重定向
tar
tar [選項] 壓縮文件名 文件或目錄
tar后綴:cvf xvf (c:create v:view f:file)
tar.gz后綴:zcvf zxvf z:gzip
tar cvf/zcvf a.tar /tmp/a
tar xvf/zxvf a.tar -C /tmp/b (指定目錄解壓,默認解壓路徑為當前目錄)
gzip
打包文件(文件夾不行)[gz后綴]
[-d](解壓)[-r] (遞歸)[-v] (view)[-t] (test)
gzip -rv /tmp/a
unzip
zip后綴
[-x](解壓)[-v][-t][-d](指定目錄)
unzip -x /tmp/a.zip -d /tmp/bb
echo
cal
可以用戶顯示公歷(陽歷)日歷如只有一個參數,則表示年份(1-9999),如有兩個參數,則表示月份和年份:
常用參數:
-3 顯示前一月,當前月,后一月三個月的日歷
-m 顯示星期一為第一列
-j 顯示在當前年第幾天
-y [year]顯示當前年[year]份的日歷
date
顯示或設定系統的日期與時間。
date +%Y-%m-%d
-d<字符串> 顯示字符串所指的日期與時間。字符串前后必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串前后必須加上雙引號。
-u 顯示GMT。
%H 小時(00-23)
%I 小時(00-12)
%M 分鐘(以00-59來表示)
%s 總秒數。起算時間為1970-01-01 00:00:00 UTC。
%S 秒(以本地的慣用法來表示)
%a 星期的縮寫。
%A 星期的完整名稱。
%d 日期(以01-31來表示)。
%D 日期(含年月日)。
%m 月份(以01-12來表示)。
%y 年份(以00-99來表示)。
%Y 年份(以四位數來表示)。
which #查看命令路徑
which 是在 PATH 就是指定的路徑中,搜索某個系統命令的位置,并返回第一個搜索結果。使用 which 命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
-n 指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。
whereis #查看命令路徑
whereis 命令只能用于程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。whereis 及 locate 都是基于系統內建的數據庫進行搜索,因此效率很高,而find則是遍歷硬盤查找文件。
- b 定位可執行文件。
- m 定位幫助文件。
- s 定位源代碼文件。
- u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
grep
強大的文本搜索命令,grep(Global Regular Expression Print) 全局正則表達式搜索。
grep 的工作方式是這樣的,它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結果被送到標準輸出,不影響原文件內容。
命令格式:
grep [option] pattern file|dir
常用參數:
-A n --after-context顯示匹配字符后n行
-B n --before-context顯示匹配字符前n行
-C n --context 顯示匹配字符前后n行
-c --count 計算符合樣式的列數
-i 忽略大小寫
-l 只列出文件內容符合指定的樣式的文件名稱
-f 從文件中讀取關鍵詞
-n 顯示匹配內容的所在文件中行數
-R 遞歸查找文件夾
awk
AWK 是一種處理文本文件的語言,是一個強大的文本分析工具。
awk [選項] '腳本命令' 文件名
cat filename | awk -F: ‘{print $n}’
cat /etc/passwd | awk -F: ‘{pirnt $1}’
awk -F: ‘{print $n}’ /etc/passwd
seq
sed 利用腳本來處理文本文件
- 全局替換
sed -i 's/old_str/new_str/g' /path/to/file
直接編輯文件選項-i,會匹配file文件中每一行的第一個old_str替換為new_str
- 指定位置插入
sed -i 'line_number a insert_content' /path/to/file
yum
yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟件包管理器。
基于 RPM 包管理,能夠從指定的服務器自動下載 RPM 包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
yum 提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。
yum install | remove | list | search
Linux 用戶
用戶分類
-
超級用戶
root,根用戶,類似Windows中的超級管理員賬戶,有最高的權限,可以對Linux做任何操作。 -
普通用戶
受限的權限,普通用戶沒有對系統的完全控制權,而且用戶之間私人的資源是相互隔離的。 -
特殊用戶
與系統和程序服務相關的用戶(shutdown、mail、mysql……)。
默認情況下,這些特殊用戶是無法登錄的,如果給這些用戶授權登陸口令后,就可以使用這些用戶登錄系統。(為了安全,一般不授權口令)
一般shell被設定為:/sbin/nologin 無法登陸shell
用戶信息文件
/etc/passwd
每一行存儲一個用戶的賬號信息
#用戶名:加密密碼:用戶ID:用戶組ID:用戶信息:用戶主目錄: 登錄Shell
tak:x:1000:1000::/home/tak:/bin/bash
超級用戶root的UID是0,系統用戶的UID在100以內,而普通用戶的UID從500開始往上編號(CentOS 7是1000開始)
口令文件
/etc/shadow
每一行存儲一個用戶的登錄密碼信息,加密。只有root用戶才能讀取這個文件
用戶名:加密口令:上次更新時間:允許更改時間:要求更改時間:取消口令之前的警告時間:取消和停用之間的時間:賬戶口令的天數:賬戶終止時間:特殊標志
組信息
/etc/group
每一行記錄系統中的用戶組信息
組名:密碼字段:用戶組ID:用戶名列表
用戶名列表用逗號分隔多個用戶名(只顯示附加用戶)
用戶管理/命令
增加用戶: useradd [選項] <newusername>
-
d :指定用戶主目錄,默認情況下,將會在/home目錄下新建一個與用戶名相同的用戶主目錄。
-
s :指定用戶登錄時使用的shell,默認的shell為/bin/bash。
-
g :指定用戶歸屬的組名。默認地,每當創建一個新用戶的時候,一個與用戶名相同的組就會被創建,而這個用戶就是該組的成員。
-
G <組列表>:在Linux系統中,一個用戶可以屬于一個組,也可以屬于多個組,其中用戶在初始化時屬于的組稱為主組(主組只能有1個)。如果要讓用戶屬于其它的組,應該使用選項-G <組列表>。
-
u :指定新用戶的UID。
修改密碼
設置和修改口令 :passwd [用戶名]
只有超級用戶可以使用“passwd 用戶名”修改其他用戶的口令,普通用戶只能用不帶參數的passwd命令修改自己的口令
刪除用戶
刪除用戶的命令為userdel,該命令的格式為:userdel <用戶名>
- r:刪除用戶的同時刪除用戶的全部用戶主目錄
修改用戶屬性
usermod [-g<主組名> -G <組名> -d <用戶主目錄> -s <用戶shell>] <username>
增加用戶組
groupadd <新組名>
刪除用戶組
groupdel <組名> (沒有用戶作為主組時)
修改組成員
直接編輯/etc/group文件,將用戶名寫到對應的組名的后面。