首次登錄與使用幫助
-
Linux的基本原則
- 由目的單一的小程序組成;組合小程序完成復雜任務;
- 一切皆文件;
- 盡量避免捕獲用戶接口;
- 配置文件保存為純文本格式;
-
x window與命令行
默認情況下提供6個終端來讓用戶登錄,使用ctrl+alt+F(16)來切換即可.分別命名為tty1tty6.
還有一種自然是圖形界面,稱之為x-window.如果已經安裝過x-window系統那么運行stratx
命令后使用ctrl+alt+F7即可啟動.當然這個在inittab文件里是可以自行修改的.像我的是ctrl+alr+F1才是圖形界面,并且是默認的.
-
登錄
輸入密碼登錄后,出現類似root@fredal tmp]#
的提示,最左邊的代表當前用戶是root.@后面的指的是主機名fredal
,接著代表當前目錄為tmp
.#
代表當前用戶是管理員,而$
代表當前用戶是普通用戶.運行su fredal
切換用戶到普通用戶fredal,那么:[fredal@fredal tmp]$
.
使用su
命令切換用戶,使用exit
退出.
-
命令格式與熱鍵
命令格式如下分為命令,選項與參數.
[root@fredal ~]$ command [-options] parameter1 parameter2 ...
例如ls -l /root
,選項分為短選項-
與長選項--
,不同的選項可以合在一起,例如ls -al /root
.參數指的是命令的作用對象,像這兒指的是/root目錄下.
如果需要補全可以使用按兩次tab鍵,可以用于命令補全,同樣也可用于文件補全.
ctrl-c鍵用于中止程序.ctrl-d相當于輸入結束或者exit
.
-
使用幫助
我們的命令分為內部命令與外部命令.
可以用whatis 參數
來區分,例如help是一個內部命令,那么
[fredal@fredal tmp]$ whatis help
help (1) - bash built-in commands, see bash(1)
看到有built-in
字樣,說明是內部命令,否則是外部命令.
如果是內部命令,可以使用help 參數
來獲取幫助,沒錯,可以help help
.得到關于help命令自身的使用幫助.
外部命令使用man 參數
來獲取幫助.
輸入man 7 man
得到
這樣的幫助是分章節的(上圖是第七章),每一章如下
- 用戶命令(/bin, /usr/bin, /usr/local/bin)
- 系統調用
- 庫用戶
- 特殊文件(設備文件)
- 文件格式(配置文件的語法)
- 游戲
- 雜項(Miscellaneous)
- 管理命令(/sbin, /usr/sbin, /usr/local/sbin)
默認是有哪個章節就顯示最前的那章.同樣可以用whatis 參數
來查看命令有哪些章節的說明.而我們要想顯示那一章節就用man 章節數 參數
即可
關于man使用幫助的一些說明:
符號:
<>:必選
[]:可選
...:可以出現多次
|:多選一
{}:分組
關鍵字:
NAME:命令名稱及功能簡要說明
SYNOPSIS:用法說明,包括可用的選項
DESCRIPTION:命令功能的詳盡說明,可能包括每一個選項的意義
OPTIONS:說明每一個選項的意義
FILES:此命令相關的配置文件
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外參照
翻屏:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
查找:
/KEYWORD: 向后查找
n: 下一個
N:前一個
?KEYWORD:向前查找
n: 下一個
N:前一個
另外使用q退出.
除了man命令,還可以使用info命令來獲得幫助,大概是對man的一個補充吧,就是info 參數
,不贅述了.
-
基礎命令
-
type
type 參數
查看命令的類型及一些信息.
-
date與clock
看上去沒啥區別,不過前者指的是系統時間,后者指的是硬件時間.他們自身的修改不會影響到對方.
可以用自己喜歡的格式顯示,例如
date +%Y/+%m/+%d
,就顯示2016/3/13
.同樣修改時間例如date 1210161730
是修改成2030年12月10日16:17:00.可以看到格式是月日時分年.clock操作類似.如果想讓硬件時間同步到系統時間,使用
hwclock -s
,反之使用hwclock -w
.
-
cal
顯示日歷的命令,cal
顯示當前月,cal 年份
顯示某一年的年歷.cal 月份 年份
顯示某年某月的月歷.
-
bc
一個簡單的計算器,值得注意的是除法運算和java一樣1/3變成0.如果要保留小數使用scale=小數位
.使用quit
退出
-
nano
一個簡單的文本編輯器,使用nano 文件名
即可新建文件,進入到以下界面.使用ctrl+O保存,ctrl+x離開
-
sync
sync
進行數據的寫入操作,會使內存中尚未更新的數據寫入到硬盤中.
-
開關機
慣例上使用shutdown
即可,同時poweroff
關機,reboot
重啟,比如
shutdown -h now
poweroff -f
更多參數參考man page.
-
切換執行等級
常用的幾個等級
1. level 0: 關機
2. level 3: 命令行模式
3. level 5: 圖形界面模式
4. level 6: 重啟
那么顯然`init 0`可以執行關機.
-
忘記密碼
passwd
命令,輸入兩次新密碼即可.
文件與目錄配置
-
文件屬性
我們用ls -al
命令來查看文件,出現如下格式.
從左到右基本上可以劃分為七列,意義如下:
- 文件的類型吧及權限
- 表示有多少文件名鏈接到此節點
- 表示這個文件或目錄的"所有者帳號"
- 表示這個文件的所屬用戶組
- 文件的容量大小,默認為B
- 文件的創建日期或者是最近的修改日期
- 文件名
說說第一列,也就是類型權限.共有10個字符,第一個字符代表文件的類型:
-:普通文件 (f)
d: 目錄文件
b: 塊設備文件,可供存儲的接口設備 (block)
c: 字符設備文件,串行端口設備 (character)
l: 符號鏈接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
后面九位,每三個一組,均為"rwx"的三個參數的組合.[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute),如果都沒有權限就是[-].
- 第一組為"文件所有者的權限"
- 第二組為"同用戶組的權限"
- 第三組為"其他非本用戶組"的權限
說說第六列,也就是時間戳.基本上記錄以下三類:
訪問時間:access
修改時間:modify,文件內容發生了改變
改變時間:change,metadata,元數據(本身的屬性改變)
-
目錄配置標準FHS
文件層次標準(FHS,Filesystem Hierarchy Standard)統一解決碎片化問題.
按照文件系統使用頻繁與否可分為四類
根目錄:是整個系統最重要的一個目錄,所有的目錄都由根目錄衍生出來,同時也與開機,還原,系統修復等操作有關.
在根目錄查看所有文件可以看到
FHS定義出根目錄/應該有以下子目錄才好
/bin:放置的是單用戶模式下還能被操作的命令,上圖中是一個鏈接文件.
/boot:放置開機會使用到的文件,包括linux內核文件以及配置文件等
/dev: 任何設備與接口文件都是存在這個目錄中
/etc: 系統的主要配置文件都在這,一般普通用戶可以查閱但只有root用戶才能修改
/home: 這是系統默認的用戶主文件夾,比如說我這個里面會有
fredal
的目錄在,但是root用戶是不在這兒的.帶上~
選項,表示當前用戶的主文件夾./lib:放置開機會用到的函數庫,以及/bin與/sbin下命令調用的函數庫.
/media:媒體的意思,放置的是可刪除的設備,包括軟盤,光盤...
/mnt:掛載設備的目錄
/opt:給第三方軟件放置的目錄
/root:系統管理員得到主文件夾,和/home是不同的.
/sbin:管理命令,與/bin用戶命令不同,包括開機,修復,還原系統等命令
/srv:"service"的縮寫,一些網絡服務啟動之后,所需要取用的數據目錄
/tmp:臨時文件
當然還有一些目錄也是需要了解的
/lost+found:在文件系統發生錯誤時,將一些丟失的片段放置到這個目錄下
/proc:虛擬文件系統,放置的數據都在內存中,如系統的內核,進程,外部設備的狀態,網絡狀態等.
/sys:也是虛擬文件系統,跟硬件設備相關的屬性映射文件
接下來需要了解/usr了,(UNIX SoftWare Resource)縮寫,也就是操作系統軟件資源,而不是什么用戶的目錄.所有的系統默認的軟件都會放置在這,類似于windows中"C:\windows".與/下很多重復目錄的區別在于是否與開機相關
/usr/bin:用戶可使用的命令,和/bin區別在于是否與開機相關
/usr/sbin:非系統正常運行所需要的系統命令,如網絡服務的服務命令
/usr/lib:各種應用軟件的函數庫,目標文件
/usr/local:系統管理員在本機自行安裝的軟件,建議放到此目錄.這里面也有/bin,/sbin,/lib
/usr/src:源碼
接下來將/var.定義為可變的文件,包括緩存,登錄文件以及某些軟件運行產生的文件.
/var/cache:緩存文件
/var/lib:程序本身執行的過程中需要使用的庫
/var/tmp:也是臨時文件
我們的目錄樹如下:
-
路徑
文件的路徑:就是文件存放的地方,通過它系統就可以找到該文件。
絕對路徑:路徑的寫法一定是由根目錄“/”寫起的。例如:/usr/local/mysql
。
相對路徑:路徑的寫法不是由根目錄“/”寫起的。例如例如 ./home/dmtsai
或 ../../home/dmtsai/
等等
. :代表當前的目錄,也可以使用 ./ 來表示;
.. :代表上一層目錄,也可以 ../ 來代表。
-:代表前一次目錄,按多次相當于來回輪換
~:當前用戶的主文件夾
文件與目錄管理
-
cd(切換目錄)
就是一個切換命令的操作,加上~
或者啥都不加表示回到主目錄.-
表示與前一層來回切換,cd ..
表示回到上一層,cd /var/spool
這種屬于絕對路徑寫法,cd ../bin
屬于相對路徑寫法
-
pwd(顯示目錄)
用于打印當前目錄,有參數-P
表示顯示出真實的路徑(而不是鏈接)
我們知道/bin是一個鏈接目錄.鏈接到/usr/bin中,所以加了參數會有區別
-
mkdir(創建新目錄)
主要參數:
-m:用于指定要創建的目錄的權限。(不常用)
-p:創建一大串級聯目錄,并且當創建一個已經存在的目錄時不會報錯
如果目錄已經存在,報錯.創建不存在的級聯目錄時需要加上參數.另外不指定權限會默認為drwxr-xr-x
我們在創建目錄的時候,可以使用
{}
進行輔助,例如在創建多個目錄的時候,或者交叉目錄的時候.[root@fredal tmp]# mkdir -p hello/black/{one,two/guess}
創建了多個目錄.[root@fredal tmp]# mkdir -p hello/test/{a,b}_{c,d}
這行命令會創建a_c,a_d,b_c,b_d四個目錄
-
install
只說-d
參數,同樣有創建目錄的效果
-
rmdir(刪除目錄)
刪除空的目錄,-p
參數可以刪除一連串的單源空目錄,自底向上的.
-
環境變量$PATH
為什么可以在某些地方不加地址就可以直接那個命令呢,就是環境變量的原因,可以查看路徑設置的詳細
-
ls(查看文件與目錄)
ls可能是最常用的指令之一.
主要參數:
-l:長格式(包含文件的屬性與權限等數據)
-h:做單位轉換(KB,GB)
-a: 顯示以隱藏文件
-A: 顯示隱藏文件但不包括.和..
-d: 顯示目錄自身屬性
-i: 列出index node, inode
-r: 逆序顯示
-R: 遞歸(recursive)顯示,連同子目錄文件
-F: 根據文件目錄等信息給與附加數據結構(*代表可執行文件,/代表目錄,=代表socket文件,|代表FIFO文件)
--color=never :不要顏色;
--color=always :顯示顏色
--color=auto :自動決定顏色顯示
--full-time :以完整時間模式 (包含年、月、日、時、分) 輸出
-
touch
一般來說我們用文本編輯器創建新文件,但這個也可以.描述為若之前對應文件不存在,創建一個新文件;若存在,則修改這個文件的最后修改期限(時間戳)
主要參數:
-a:只更改存取時間
-c:不建立任何文件
-d:<時間日期>:使用指定的日期時間
-m:只更改變動時間
-r:<參考文件或目錄>:把指定的文件或者目錄的日期時間,統統設置成為參考文件或目錄的日期時間。:
-t:<時間日期>:使用指定的日期時間
-
cp(復制文件或目錄)
cp
使用形如cp SRC DEST
.還是有許多要注意的地方.例如如果目標已經存在且是目錄,那么會放到該目錄下.如果目標已經存在且是文件,會覆蓋.如果復制多個文件那么目標必須為目錄,如果目標是目錄那么必須是存在的等等,如果源文件是目錄必須加上-r等等.
主要參數:
-r:遞歸處理,將指定目錄下的文件和子目錄一起復制
-i:覆蓋現有的文件之前先詢問用戶
-f: 強制復制
-p: 連同文件的屬性一起復制過去
-a:歸檔復制,常用于備份
-d: 復制鏈接文件本身而非源文件
另外要注意,復制的文件是誰創建的就是誰的用戶組,如果要保留用戶組的話需要使用
-a
.而如果源文件是鏈接文件的話默認復制源文件的,如果復制鏈接文件本身需要使用-d
-
rm(刪除文件或目錄)
主要參數:
-f:強制刪除文件或目錄。
-i:刪除既有文件或目錄之前先詢問用戶。
-r:遞歸處理,將指定目錄下的所有文件及子目錄一并處理。等同于rmdir。
-v:顯示指令的執行過程
注意在root用戶中,rm相當于rm-i.使用\rm
來使用rm
-
mv(移動文件與目錄,重命名)
同樣要考慮目標文件或目錄是否存在等等
主要參數:
-b:若需覆蓋文件,覆蓋前先備份。
-f:若目標文件和現有的文件或目錄重復,則直接覆蓋現有的文件或目錄。
-i:覆蓋現有的文件之前先詢問用戶。
-v:顯示指令執行的過程
-u: 若目標文件存在,比較哪個更新
-
stat與file(查看屬性,類型)
stat用于查看文件各種屬性狀態,而file用于查看文件類型(包括目錄)
文件內容查閱
有部分內容涉及到管道命令,但是更多的管道命令之后還會細說.
-
cat(查看文件內容)
cat有連接的意思,除了查看單個文件內容,還可以查看多個文件拼接的內容,用空格隔開即可
主要參數:
-n:由1開始對所有輸出的行數進行編號。
-b:和-n相似,但是對于空白的行不進行編號。
-s:當遇到有連續的兩行以上的空白行時,代換為一行的空白行。
-E:結尾用斷行符號$表示出來
-
tac(反向顯示)
就是cat的倒序顯示,先顯示最后一行.
-
more和less(分屏顯示)
當顯示內容過多時候我們需要分屏顯示.
more /etc/man.config
可以分屏顯示文件,空格鍵下一屏,b鍵上一屏,Enter鍵下一行,q表示離開,/KEY表示向下查詢.基本與man使用類似,但是卻沒有上一行的操作.
相對來說less
命令更好用一些,less /etc/man.config
就是分屏查看,操作與man
操作幾乎一致.
-
head(取出前幾行)
不加參數的話,默認取出前十行.參數-n 數字
表示取出前多少行
另外
head -n -100
的話表示,后面一百行不打印,只打印前面的.
-
tail(取出后幾行)
不加參數同樣默認后十行,-n
可以指定取出尾部多少行.
類似的如果
tail -n +100
,表示前面一百行不打印,只打印后面的,相當于取多少行后的所有.參數
-f
非常有用,相當于持續檢測后面的內容.比如tail -f test.txt
后,在另一個終端尾部添加test.txt的內容,當前終端會實時顯示.
-
cut(選取)
這個與之后幾個也是涉及到管道命令,這里先有個基礎的認識.
選取命令就是將一段數據進行分析,然后選出我們想要的,當然這個過程是不會改變數據的內容的,只是顯示內容改變
主要參數:
-d:后面接分割字符,與-f一起使用
-f:表示取出第幾段的意思
-c:以字符的固定單位取出固定字符
看到passwd文件都是以:為分隔符的一串,那么如果要取出每行的第一段就應該使用
cut -d: -f1 /etc/passwd
.如果要去出第一段到第三段就使用
cut -d: -f1-3 /etc/passwd
那如果沒有分隔符,而只想根據第幾個字符來分割,比如只想取出前面三個字符,或者12個字符以后的所有字符怎么辦?
可以使用
cut -c -3 /etc/passwd
,cut -c 12- /etc/passwd
-
sort(排序顯示)
排序是默認根據ASCII表順序的
主要參數:
-f:忽略大小寫的差異,A
和a
認為一樣.
-b:忽略最前面的空格符部分
-n:使用數字的排序方式
-r:反向排序
-u:表示重復的行僅出現一行
-t:分隔符
-k:表示以哪個區間的字段進行排序
接下來我們對passwd的第三個字段進行排序
-
uniq(去除重復顯示)
要注意的是和sort -u
不同,這兒只有相鄰并且重復才會被認為是重復
主要參數:
-d:顯示重復的行
-D:顯示所有重復的行
-c:進行重復的計數
-
wc(計數)
想要知道有多少行,多少字,多少字符.可以使用這個命令
主要參數:
-l:僅輸出多少行
-w:僅輸出多少字
-m:僅輸出多少字符
-
tr(操作字符)
tr可以刪除一段信息當中的文字,或者進行替換.當然這個只是在顯示上做得改動,不會真的刪除或替換.
主要參數:
-d:刪除這個字符串
-s:替換掉重復字符
-
join(合并文件操作)
處理兩個文件間的數據,把相同數據的一行加在一起.
主要參數:
-t::分隔符
-i:忽略大小寫的差別
-1:表示第一個文件要用哪個字段來分析
-2:表示第二個文件用哪個字段分析
我們建立兩個文件,第一個以姓名,性別,年份,班級來建立字段.第二個以姓名,年份,身高體重來建立字段.
那么如果是默認的,就是會以空格符分割數據,并且對比第一個字段的數.這里join -t: a.txt b.txt
就會對比兩個文件的名字字段并合并顯示.我們看到年份字段也是兩個文件共有的,第一個文件中第三段和第二個文件中第二段是年份,那么join -t: -1 3 a.txt -2 2 b.txt
可以按年份進行合并,但是注意到我們文件中有兩個相同年份2015,所以會出現交叉