Linux 學習之路(一)
01|03
kernel space 記憶體碎片
GUI:圖形使用者介面
CLI:命令列使用者介面
核心功能:
程序管理
記憶體管理
檔案系統
網路功能
硬體驅動
安全機制
批處理系統
jobs1$$$$$$jobs2
kernel:2w
Debian,dpt
RedHat:rpm
01|04
Linux的基本原則:
1.由目的單一的小程式組成,組合小程式完成複雜任務。
2.一切皆檔案
3.儘量避免捕獲使用者介面
4.配置檔案儲存為純文字格式
CLI介面:
命令提示符:prompt,bash(shell) #:root $:普通使用者
命令格式:
命令 選項 引數
短選項:-v 多個選項可以組合 -a -b=-ab
長選項:--word
引數:命令的作用物件
使用憑證:root redhat
虛擬終端(terminal):Ctrl+Alt+F2(預設由六個終端可以啟動)
startx &_啟動圖形介面
linux靈活之處在於可以啟動多個圖形介面。
GUI:
Gnome:c
KDE:c++
XFace
CLI:
bash\csh\zsh\ksh\tcsh
su:switch user
su -l student 完全切換
su student半切換
exit退回原來的位置
#passwd修改當前使用者密碼,密碼複雜性規則
02|01
GUI:Graphic User Interface
CLI:Command Line Interface
IDE:程式設計師所使用的程式開發環境
DLL:Dynamic Link Library(windows)
.so:shared object共享物件
認證機制:Authentication
授權:Authorization
審計:Audition(日誌)
命令:
magic number魔數
shebang
#!/bin/bash看是不是當前程式所能理解的可執行格式,執行入口標誌魔數等等
目錄:檔案,路徑對映
路徑:從指定起始點到目的地所經過位置。實現層次化管理的一種機制
相對目錄:相對於現在所處位置
FHS:檔案系統層級目錄標準
檔名是不是檔案的資料?
pwd:printing working directory顯示當前目錄,根目錄/
ls
-l 長格式 顯示完整資訊
檔案型別:
-:普通檔案(f)
d: 目錄檔案
b:塊裝置檔案(block)
c:字元裝置檔案(character)
l:符號連結檔案(symbolic link file),軟連結檔案
p:命令管道(pipe)
s:套接字檔案(socket)
檔案許可權:9位,每3位一組,每一組:rwx(讀、寫、執行)rw-能讀能寫不能執行
檔案硬連結的次數
檔案的屬主(owner)
檔案的屬組(group)
檔案大小(size),單位是位元組
時間戳(timestamp):最近一次被修改的時間
訪問:access
修改:modify改變檔案內容
改變:change,metadata,元資料,改變檔案屬性或者元資料
-h:做單位轉換的預設是b
-a:顯示以.開頭的隱藏檔案
. 當前目錄
..表示上一級目錄(父目錄)
-A:顯示所有隱藏檔案但是不包括.或者..
-d:顯示目錄自身屬性
-i:index node,inode顯示檔案索引節點號
-r:逆序顯示檔案
-R:遞迴(recursive)顯示 遞迴很消耗資源
cd:change directory
家目錄:主目錄,home directory使用者有所有操作許可權
cd ~
cd ~student 到student使用者的家目錄中
cd -:在前一個目錄和當前目錄來回切換
命令型別:
內建命令(shell內建):內部,內建
外部命令:在檔案系統的某個路徑下有一個與命令名稱相應的可執行檔案
環境變數:命名的記憶體空間
變數賦值
NAME=Jerry
type:顯示指定屬於哪種型別
printenv顯示環境
PATH:使用:分割的一堆路徑
hash快取:記錄下來所用過的命令的快取
cache is keen
Hash在鍵-值中查詢速度O(1):無論佇列多長,查詢時間是一樣的
date:時間管理
Linux:rtc當前時間
硬體時鐘 clock hwclock
系統時鐘 date
獲取命令的使用幫助:
內部命令:
help COMMAND
外部命令:
COMMAND --help
命令手冊:manual
man COMMAND開啟檢視命令的使用手冊
man 2 read
whatis COMMAND顯示命令摘要
分章節:
1:使用者命令(/bin,/usr/bin,/usr/local/bin)
2:系統呼叫
3:庫使用者
4:特殊檔案(裝置檔案)
5:檔案格式(配置檔案的語法)
6:遊戲
7:雜項:Miscellaneous
8:管理命令(/sbin,/usr/sbin,/usr/local/sbin)管理員使用
如果出現亂碼,則輸入man 2 read
man mount
[]可省的<>必須給出的內容,非可選的…可以出現多次
|:多選一
{}:分組
man lvcreate
MAN:
NAME
SYNOPSIS 用法說明,包括可用的選項
DESCRIPTION:命令功能的詳盡說明,可能包括每一個選項的意義
OPTIONS:說明每個選項的意義
FILES:此命令相關的配置檔案
EXAMPLES:使用示例
SEE ALSO:另外參照
翻屏:
向後翻一屏: SPACE
向前翻一屏:b
向後翻一行:ENTER
向前翻一行:k
查詢:
/KEYWORD:向後
n:下一個
N:前一個
q:退出
?KETWORD:向前
date +%D 顯示月/日/年
date +%F 顯示年-月-日
date 時間 直接修改系統時間
hwclock -s讀取硬體時間到系統中來
線上文件:
info ls
cal 12 2012 顯示12月日曆
練習:
1.echo是內部命令還是外部命令?
type echo 內部命令
2.其作用?
help echo
man echo顯示一行文字echo -n
3.如何換行顯示?
echo -e “The year is 2013. \nToday is 26.”
printf預設沒有換行符 \n
02|03 Linux根檔案詳解
file命令及其用法
windows:PE
Linux:ELF
檔案系統:
rootfs:根檔案系統
除了目錄,就是檔案
ls / 檢視到根檔案下的一級子目錄
/boot : 系統啟動相關的檔案,如核心、initrd,以及grub(bootloader)
/dev : 裝置檔案
裝置檔案:
塊裝置:隨機訪問,資料塊
字元裝置:線性訪問,按字元為單位。顯示器,滑鼠
裝置號:主裝置號(major)和次裝置號(minor)
/etc:配置檔案:純文字檔案形式儲存
/home:使用者的家目錄,每一個使用者的家目錄通常預設為/home/USERNAME
/root:管理員的家目錄,生產環境中不建議直接用root登入
/lib:庫檔案
靜態庫, .a
動態庫, .dll,.so (shared object)
/lib/modules:核心模組檔案
庫檔案沒有程式的直接訪問入口,是直接呼叫的。
/media : 掛載點目錄,移動裝置
/mnt:掛載點目錄,額外的臨時檔案系統
/opt : 可選目錄,第三方程式的安裝目錄
/proc : 偽檔案系統,核心對映檔案(系統性能監控)
/sys : 偽檔案系統,跟硬體裝置相關的屬性對映檔案
/tmp : 臨時檔案,/var/tmp
/var : 可變化的檔案
/bin : 可執行檔案,使用者命令
/sbin: 管理命令
/usr:shared,read-only,全域性的共享的只讀檔案
/usr/bin
/usr/sbin
/usr/lib
/usr/local:(不影響系統啟動)
第三方軟體安裝路徑
/usr/local/bin;/usr/local/sbin;/usr/local/lib
命名規則:
1、長度不能超過255個字元
2、不能使用/當檔名
3、嚴格區分大小寫
檔案管理、目錄管理、執行程式、裝置管理、軟體管理、程序管理、網路管理
目錄管理:
ls cd pwd
mkdir: 建立空目錄
-p:如果要建立的目錄的父目錄不存在,則同時建立
-v:verbose詳細資訊
命令列展開:自動將{}中的內容展開為兩個
mkdir -pv /mnt/test/{x/m,y}
展開為:mkdir -pv /mnt/test/x/m /mnt/test/y
如果要建立a_b,a_c,d_b,d_c
mkdir {a,d}_{b,c} 神奇的Linux!!!(注:(a+b)(b+c)=ab+ac+db+bc)
#tree:檢視目錄樹
刪除目錄:rmdir (remove directory)
刪除空目錄
一線單傳空目錄刪除 rmdir -p xxxxx
檔案建立和刪除:
#touch 修改檔案的時間戳
touch -a a改變檔案訪問時間
#stat顯示檔案和檔案的狀態資訊
建立檔案,可以使用檔案編輯器
刪除檔案 rm
-i : 互動式(只有管理員有這個)
-f 強行刪除
-r遞迴刪除這個目錄下的所有檔案
rm -rf /
\rm a 直接刪除不提示(有別名的命令前加,以原始形式使用)
02|04
複製和移動檔案
cp SRC DEST
-r,-i,-f
-p 保留原始檔的屬組,屬主
-a 保留檔案所有原來的屬性(用於實現備份,表示歸檔複製)
-d 保持連結自己(期望複製連結自己)
只能複製一個檔案到一個檔案,多個檔案到一個目錄
mv : move 移動檔案
mv SRC DEST
重新命名:
mv abc mn把當前目錄下的abc重新命名為mn
install uninstall
install複製檔案並且設定屬性
建立兩個目錄:
install -d /tmp/{install.1,install.2}
指定許可權 -m