本文共分爲幾個部分:linux基本原則,人機交互接口介紹,用戶名密碼介紹和命令格式介紹, 文件類型說明,ls、cd、type命令的使用,環境變量簡單介紹、時間介紹和獲取幫助和LINUX文件系統結構與幾個常用命令(ls、cd、pwd、mkdir、rmdir、touch、stat、rm、tree、cp、mv、install),歷史命令回顧,和其它命令。
linux基本原則:
1、everything is a file
2、small,single--purpose program
3、ability to chain programs together to perform complex tasks
4、avoid captive user interface
5、configuration date stored in text
中文爲:1、一切皆文件
2、目的單一的簡單的小程序
3、組合小程序實現複雜的功能
4、儘量避免捕獲用戶接口
5、配置文件保存爲文本格式
人機交互接口:SHELL,計算機通過shell把系統以人容易理解和接受的方式展現給用戶,與用戶進行交互
shell的分類:GUI接口(Graphic User Interface)圖形用戶界面。
例如:windows
x-window:Gnome、KDE、Xface
CLI接口(Command Line Interface)命令行接口
例如:windows的PowerShell(Windows NT以後版本)
linux的sh、bash(最常用)、csh、ksh、zsh、tcsh
linux共有7個用戶界面(也叫用戶終端:Terminal),6個命令行界面與1個圖形化界面,
圖形化界面的啓動方式startx
用戶終端的切換方式:Ctrl+Alt+F1--F6,F7爲圖形界面
LINUX中在圖形界面中,桌面上鼠標右鍵有Open Terminal(或者Application----Terminal),這個打開的叫模擬終端
一個最簡單的操作系統由kernel+shell所需要的庫文件+shell程序
windows的庫文件爲.dll結尾:即動態鏈接庫(Dynamic Link Library)
Linux的庫文件爲.so結尾:即共享對象,也叫共享庫。(Share Object)
用戶介紹:用戶名 用戶密碼和用戶ID
用戶登錄需要用戶名和密碼,系統對用戶的辨認使用的是用戶ID。
用戶登錄系統,系統需要對用戶進行驗證即認證機制(Authentication),用戶登錄系統後,用戶有什麼樣的權限,即授權機制(Authorization )。對用戶的使用需要進行審計(Audition),通常爲日誌形勢。
用戶又分爲普通用戶、管理用戶和root用戶
su [-l] username:不同的用戶之間需要切換(l表示完全切換,不帶半切換) su= switch user
passwd:對用戶密碼進行修改
密碼的複雜度規則:爲了用戶的安全,對用戶密碼複雜度有如下要求
1、使用4中類型中的至少三種
2、足夠長,至少爲7位
3、使用隨機字符串,不要誰用單詞、日期或者單詞和日期的組合
4、定期更新
5、循環週期足夠大
用戶登錄後有命令提示符(prompt bash):#爲root用戶, 爲普通用戶
命令提示符後的輸入格式爲:命令+選項+參數
----------------------------------------------------------------------------------------------------------------------------------------
[root@LAB1 ~]# su -l student
[student@LAB1 ~]$ exit
logout
[root@LAB1 ~]# su student
[student@LAB1 root]$ exit
exit
[root@LAB1 ~]# passwd student
Changing password for user student.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
命令行格式
命令 選項(可以多個) 參數(可以多個) 即:command option(多個) arguments(多個)
命令、選項和參數嚴格區分大小寫,
命令:二進制程序或者腳本文件
選項:修改用戶的執行參數。分爲長選項(--)和短選項(-),都可以爲多個。長選項多個時必須用空格隔開,短選項可以對多個可以進行組合
極個別選項帶參數。
參數:執行程序的執行對象。
ls:爲list簡寫,列表、列出,列出制定路徑下的所有文件
目錄:也是文件,是一種路徑映射文件
路徑:從指令起始點到目的地所經過的位置。
文件系統(File System):層次化文件管理機制,倒置的樹狀目錄結構。分爲根,一級子目錄,二級子目錄等。
分叉的節點:爲目錄。
不能分叉的節點:文件或者葉子節點
從根開始的路徑爲絕對路徑,相對於當前所處目錄的路徑爲相對路徑。
當前目錄(Current Dirctory):工作目錄
---------------------------------------------------------------------------------------------------------------------------------
[root@LAB1 ~]# pwd
/root
[root@LAB1 ~]# ls -a -l /root
total 72
dr-xr-x---. 2 root root 4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root 4096 Mar 12 18:18 ..
-rw-------. 1 root root 0 Mar 12 01:26 .Xauthority
-rw-r--r--. 1 root root 18 May 20 2009 .bash_logout
-rw-r--r--. 1 root root 176 May 20 2009 .bash_profile
-rw-r--r--. 1 root root 176 Sep 23 2004 .bashrc
-rw-r--r--. 1 root root 100 Sep 23 2004 .cshrc
-rw-r--r--. 1 root root 129 Dec 4 2004 .tcshrc
-rw-------. 1 root root 1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--. 1 root root 7690 Mar 10 21:56 install.log.syslog
[root@LAB1 ~]# ls -al /root
total 72
dr-xr-x---. 2 root root 4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root 4096 Mar 12 18:18 ..
-rw-------. 1 root root 0 Mar 12 01:26 .Xauthority
-rw-r--r--. 1 root root 18 May 20 2009 .bash_logout
-rw-r--r--. 1 root root 176 May 20 2009 .bash_profile
-rw-r--r--. 1 root root 176 Sep 23 2004 .bashrc
-rw-r--r--. 1 root root 100 Sep 23 2004 .cshrc
-rw-r--r--. 1 root root 129 Dec 4 2004 .tcshrc
-rw-------. 1 root root 1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--. 1 root root 7690 Mar 10 21:56 install.log.syslog
一.文件類型說明
drwxr-xr-x. 3 root root 4096 Mar 10 21:52 sound
1、文件類型(1位):-:表示普通文件
d:目錄文件
b:塊設備文件(block)
c:字符設備文件(character)
l:鏈接文件(Symbolic Link File)
p:管道文件(Pipe)
s:套接字(socket)
2、文件權限(2-10位):3位一組,共9位。每一組爲RWX(讀、寫、執行),沒有此權限,用-佔用
3、文件硬鏈接數
4、文件屬主(owner)
5、文件屬組(group)
6、文件大小(size)
7、時間戳(timestamp),文件最後一次被修改的時間。
文件有三個時間:最後一次訪問時間(Access),最後一個修改時間(Modify)(指改變文件內容),最後一次改變的時間(Change)(改變文件屬性和名字等)
查看方法: stat 文件名
--------------------------------------------------------------------------------------------------
[root@LAB1 etc]# stat sound
File: `sound'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 803h/2051d Inode: 1967162 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-07-14 23:55:07.000000000 +0800
Modify: 2015-03-10 21:52:31.835150870 +0800
Change: 2015-03-10 21:52:31.835150870 +0800
8、文件名
clear:可以用來清屏。
二、ls命令介紹
ls:list簡稱,顯示某一個文件的屬性,或者某個目錄旗下子目錄的屬性
ls (目錄路徑):顯示目錄,文件
ls 文件名路徑:顯示某個文件的屬性
ls常用選項:-l :長格式顯示文件屬性
-h:做單位轉換(默認爲k),不加h爲bit
-a:顯示所有文件,包裹以‘.’開頭的隱藏文件
-A:顯示所有文件,不包裹.與..
-d:顯示目錄自身屬性
-i:顯示文件的索引節點號:每個文件都有一個數字標示符,Inode = Index Node,即文件的節點,也叫索引節點
-r:逆序顯示文件
-R:遞歸顯示(Recusrive)
-----------------------------------------------------------------------------------
[root@LAB1 ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@LAB1 ~]# ls -al
total 72
dr-xr-x---. 2 root root 4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root 4096 Mar 12 18:18 ..
-rw-------. 1 root root 0 Mar 12 01:26 .Xauthority
-rw-r--r--. 1 root root 18 May 20 2009 .bash_logout
-rw-r--r--. 1 root root 176 May 20 2009 .bash_profile
-rw-r--r--. 1 root root 176 Sep 23 2004 .bashrc
-rw-r--r--. 1 root root 100 Sep 23 2004 .cshrc
-rw-r--r--. 1 root root 129 Dec 4 2004 .tcshrc
-rw-------. 1 root root 1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--. 1 root root 7690 Mar 10 21:56 install.log.syslog
[root@LAB1 ~]# ls -a
. .. .Xauthority .bash_logout .bash_profile .bashrc .cshrc .tcshrc anaconda-ks.cfg install.log install.log.syslog
[root@LAB1 ~]# ls -A
.Xauthority .bash_logout .bash_profile .bashrc .cshrc .tcshrc anaconda-ks.cfg install.log install.log.syslog
[root@LAB1 ~]# ls -lh
total 44K
-rw-------. 1 root root 1.2K Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 25K Mar 10 21:59 install.log
-rw-r--r--. 1 root root 7.6K Mar 10 21:56 install.log.syslog
[root@LAB1 ~]# ls -i
1310729 anaconda-ks.cfg 1310722 install.log 1310723 install.log.syslog
[root@LAB1 ~]# ls -d /root
/root
[root@LAB1 ~]# ls -lid /root
1310721 dr-xr-x---. 2 root root 4096 Mar 12 01:26 /root
[root@LAB1 ~]# ls -r
install.log.syslog install.log anaconda-ks.cfg
三、cd:切換目錄 Change Directory
不帶任何目錄,切換到當前家目錄(Home Directory)
制定路徑:就切換到指定路徑下面
-:在上一個目錄和當前目錄之間進行切換
~:切換到當前家目錄
~用戶名:切換到指定用戶的家目錄
..:切換到上一級目錄
pwd:Print Working Directory:顯示當前目錄,即顯示到現在這個目錄的絕對路徑。
四、type:顯示命令分類型,是內部命令還是外部命令。
內部命令:(shell內置),內部,內建
外部命令:在文件系統中某一個路徑下有一個與命名相對應的可執行文件。
五、環境變量
環境變量:定義當前用戶的工作環境的內存空間。
printenv:顯示當前環境變量。
注意PATH=使用冒號分割的一堆路徑。後面爲可執行程序的路徑,在執行程序並且沒有指定路徑的時候,系統默認按照順利從PATH路徑中挨個尋找可執行程序,並執行查找到的第一個。
hash:一種緩存,記錄以前使用過的命令,及其被使用的次數
變量:命名的內存空間。變量能申請能撤銷
變量聲明,即申請內存的過程。變量賦值,即把數據存到對應的內存中。
堆棧:堆(Heap):需要訪問的數據
棧(Stack):本地生命變量和靜態變量
所有的變量都是一個配置文件與之對應。
---------------------------------------------------------------------------------------------------------
[root@LAB1 ~]# printenv
HOSTNAME=LAB1
SELINUX_ROLE_REQUESTED=
TERM=vt100
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.10.1 61481 22
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
SSH_AUTH_SOCK=/tmp/ssh-MyuEuh3980/agent.3980
MAIL=/var/spool/mail/root
PATH=/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=en
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib/qt-3.3/lib
CVS_RSH=ssh
SSH_CONNECTION=192.168.10.1 61481 192.168.10.100 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/bin/printenv
[root@LAB1 ~]# hash
hits command
7 /bin/date
1 /usr/bin/printenv
4 /sbin/hwclock
六:date:時間管理
在LINUX中,時間分爲系統時間與硬件時間。
硬件時間:即主板上硬件計算的時間。date
系統時間:操作系統自己計算的時間。hwclock、clock
系統時間修改方法:date [MMDDhhmm[[CC]YY][.ss]]
系統時間同步到硬件時間:hwclock -w
硬件時間同步到系統時間:hwclock -s
date常用參數:+%D(日期) %d(日) %T(小時) %F(日期) %Y-%m-%d %H:%M:%S(定製顯示格式)
[root@LAB1 ~]# date +%D
03/16/15
[root@LAB1 ~]# date +%d
16
[root@LAB1 ~]# date +%T
19:01:22
[root@LAB1 ~]# date +%F
2015-03-16
[root@LAB1 ~]# date +%Y-%m-%d
2015-03-16
[root@LAB1 ~]# date +%H:%M:%S
19:02:41
七:獲取幫助
1、help
內部命令 help COMMAND 外部命令與內部命令的堅定方法:type
外部命令 COMMAND --help
2、man
man分章節:1、用戶命令(/bin、/usr/bin、/usr/local/bin)
2、系統調用
3、庫調用
4、特殊文件(設備文件)
5、文件格式(配置文件指示指令的運算屬性,某個命令對應的配置文件的語法)
6、遊戲
7、雜項(Miscellaneous)
8、管理命令(/bin、/usr/sbin、/usr/local/sbin.管理員使用的命令,修改硬件參數,硬件工作特性、以及其它的系統級別的配置):mount
man的文件描述:【】表示可省略 、| 表示多選一、<>表示必須用、...表示可以使用多次、{}表示分組
章節:NAME:命令名稱與功能簡單介紹
SYNOPSIS:用法說明,包括可用的選項
DESCRIPTION:命令功能的詳細說明,包括每個選項的意義。
OPTIONS:說明每個選項的意義。
FILES:此命令相關的配置文件
BUG:bug報告方法。
EXAMPLE:使用示例
SEE ALSO:另外參考
快捷鍵:後翻一屏:space
向前一屏:b
後一行:Enter
前一行:k
查找: /keyword
從尾部開始查找:?Keyword
n:下一個
N:上一個
q:退出
LINUX文件系統結構
/boot:系統啓動時候需要用到的文件。vmlinuz--內核,initramfs--硬盤映像文件,grub:引導加載器
/dev:設備文件,沒有大小,按照元數據文件存放,包含一些設備的訪問入口。
塊設備:隨機訪問(例如:硬盤) 字符設備:線性訪問(鼠標、鍵盤、屏幕等) 設備號:主設備號和次設備號
/etc:配置文件,都是文本文件
/home:用戶的家目錄,默認爲/home/USRNAME
/root:root的家目錄
/lib:library,庫文件
/lib/modules:內核模塊文件
靜態庫:直接鏈接到程序訪問地址,做爲程序的一部分,在內存中不和別的內存進行共享
動態庫:動態鏈接庫,在內存中可以被多個程序調用,共享使用
/lost+found:異常開關機保存
/mnt:掛載點目錄(主要爲移動設備:光盤、軟盤等)
/media:掛載點目錄(額外的臨時文件掛載點) 介質文件的訪問必須掛載在某個目錄下,進行打開讀取和執行操作
/misc:雜項
/opt:optinal,可選目錄,早起用於存放第三方軟件
/proc:僞文件系統,內核映射文件,內核可調參數。(後期系統調優與系統檢測主要涉及此文件)
/sys:僞文件系統,跟硬件設備相關的屬性映射文件
/tmp、/var/tmp:臨時文件系統
/var:可變化的文件
/bin:binary二進制可執行文件,用戶命令
/sbin:管理命令。 這兩個爲系統啓動相關指令
/usr:shared,read-only,全局的共享的只讀文件。
/usr/bin /usr/sbin 啓動後提供基本功能的應用
/usr/local/bin /usr/local/sbin 第三方軟件安裝的位置
創建目錄的命名規則:1、嚴格區分大小寫
2、不能超過255個字符
3、不能用‘/’當文件名
mkdir:創建目錄
-P 創建目錄的時候如果父目錄不存在,則創建
-v 詳細信息 顯示創建的詳細信息
-----------------------------------------------------------------------------------------
[root@LAB1 tmp]# mkdir -pv {a,b}/{c,d}
mkdir: 已創建目錄 "a"
mkdir: 已創建目錄 "a/c"
mkdir: 已創建目錄 "a/d"
mkdir: 已創建目錄 "b"
mkdir: 已創建目錄 "b/c"
mkdir: 已創建目錄 "b/d"
{}:表示展開
rmdir:刪除目錄。remove directory。只能刪除空目錄
-p:路徑中爲空的都刪除。
文件的創建與刪除
touch:創建目錄(一個文件夾下的目錄與文件不可重名)
1、touch 文件名 創建文件
2、修改時間戳
-c 修改時間戳,沒有此文件不創建
-a:只修改訪問時間
-m:只修改修改時間
-t:修改爲過去某個時間
用文本編譯器創建文件。nano
stat :查看文件的屬性信息
中文標準:GB18030、GBK、GB2312
rm:刪除文件
-i:交互刪除
-f:強制刪除
-r:刪除目錄,遞歸刪除
複製和移動目錄
copy:複製目錄。cp src dest
cp file1 file2 ....filen 第一個爲源,最後一個爲目標。
一個文件到一個文件,一個文件到一個目錄,多個文件到一個目錄。
-R:遞歸複製,即複製此目錄及其子目錄
-f:強制覆蓋
-i:複製提醒
-p:保留時間戳、屬主等信息
-a:保留所有屬性(歸檔的時候用)
-d:複製鏈接文件爲鏈接文件,否則會把鏈接到的文件複製過來。
-L:複製鏈接文件爲文本
mv: src dest
移動文件。一個文件到一個目錄中,一個文件到一個文件(不存在)則移動並重命名,文件到文件(存在)則覆蓋,目錄到目錄
install:複製文件並制定屬性。只能是文件
-w:制定權限
-d:創建目錄
目錄管理:ls、cd、pwd、mkdir、rmdir、tree
文件管理:touch、stat、file、rm、cp、mv、namo
日期時間:date、clock、hwclock、cal
文本查看命令:cat、tac、more、less、head、tail
cat:連接並顯示。
-n:顯示行號
-E:顯示結束符號(Linux結束符號爲$)
-T:顯示製表符
-v:顯示非打印符號
-A:顯示所有符號
文件1 文件2:把文件1與文件2的內容連起來進行顯示
tac:把顯示的內容反過來
Ctrl+C:強制結束。
分屏顯示命令:more、less
空格:向後翻一屏
B:向前翻一屏
回車:向後翻一行
K:向前翻一行。
more:常用想後翻,最後一頁會推出。less:常用向後翻頁,最後一頁不退出,只有Q才退出。
head:查看前N行,默認是10
tail:查看後N行。
-n:查看前幾行。
-f(tail可用):立即顯示文件中追加的內容。
-----------------------------------------------------------------------------------------------------------
[root@LAB1 ~]# head -3 /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
文本處理:cut、join、sed、awk
cut:-d:制定分隔符,默認爲空格
-f:指定顯示的字段。f1:顯示第一列。f1,3:表示顯示1列和3列。f1-3:表示顯示1-3列。
-----------------------------------------------------------------------------------------------------------------------------
[root@LAB1 ~]# cut -d : -f1,3,5-7 /etc/passwd
root:0:root:/root:/bin/bash
bin:1:bin:/bin:/sbin/nologin
daemon:2:daemon:/sbin:/sbin/nologin
[root@LAB1 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
排序命令:sort
sort: 不影響文件內容,按照文檔第一個字符升序進行排序。
-n:按照數值大小進行排序。
-r:逆序。
-t:字段分隔符
-k:第幾行。以哪個字段進行排序。
-u:不顯示重複行
-f:排序不區分大小寫
uniq:顯示或者忽略重複行(重複且相同的行爲重複行)
-d:只顯示重複行
-D:顯示所有重複行(重複幾次就顯示幾行)
-c:顯示行,並說明每行重複的次數。
文本統計:WC(word count):行、字符數、字節數(空格也包裹)
[root@LAB1 ~]# wc /etc/issue
3 13 75 /etc/issue
-l:只顯示行
-w:單詞數
-m:字符數
-L:最長一行多少個字符
字符處理命令:tr:轉換或者刪除字符
tr 選項 ... set1 ...
tr 'a-z' 'A-Z' < /etc/passwd
-d:刪除字符集中出現的所有制定字符