1.Linux登錄
在開機后的登錄界面有虛擬終端與圖形化終端
虛擬終端:
centos6 : ctrl + alt + F2~F6 ?可對應分別進入?/dev/tty2-6 的虛擬終端登錄界面
centos7:? ctrl + alt + F2~F6 可對應分別進入?/dev/tty2-6 的虛擬終端登錄界面
圖型化終端:
centos6: ctrl + alt + F1 可進入/dev/tty1 的圖形化終端登錄界面
centos7: ctrl + alt + F1 可進入/dev/tty1 的圖形化終端登錄界面
使用用戶名及密碼登錄以上終端。
2. Shell 是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。
它接收用戶輸入的命令并把它送入內核去執行。?shell也被稱為LINUX的命令解釋器(command interpreter)
同時shell也是一種高級程序設計語言。
查看當前系統所安裝的shell :cat /etc/shells ?
[root@centos7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
查看當前使用的何種shell:echo $SHELL ?
[root@centos7 ~]# echo $SHELL
/bin/bash
3.type命令:查看命令類型
type + 命令
[root@centos7 ~]# type echo
echo is a shell builtin ? (查看命令echo的類型)
4.which 命令:查看命令的路徑
which + 命令
[root@centos7 ~]# which echo
/usr/bin/echo ??(查看命令echo的路徑)
5.enable 查看所有已啟用的內部命令
enable (+選項) (+命令)
(默認)查看所有已啟用的內部命令
[root@centos7 ~]# enable
enable .
enable :
enable [
enable alias
。。。。。。(省略)
-n? 查看所有已禁用的內部命令
-a? 查看所有的內部命令
enable command 啟用指定的內部命令
enable -n command 禁用指定的內部命令
[root@centos7 ~]# enable -n alias (禁用 alias命令)
[root@centos7 ~]# enable -n (查看已禁用的命令)
enable -n alias
命令執行的優先順序 :?alias > 內部 > 外部(hash > PATH)
6.hash?顯示已緩存的外部命令的路徑
hash (默認)顯示已緩存的外部命令的路徑
[root@centos7 ~]# hash
hits command
? 2 /usr/bin/cat
hash -d command 刪除指定命令的hash緩存
hash -r 刪除所有緩存
7.alias 別名命令
可直接設置別名:如 alias copy=cp ;alias copy='cp -p -r' 等
alias 查看已有的別名
[root@centos7 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
unalias 刪除別名
unalias -a 取消所有別名
*使用alias直接設置別名:如 alias copy=cp ,在重新開機后會丟失,
若要每次開機都可直接使用此別名,可將其寫入~/.bashrc文件中
*若要臨時使用某一條命令不受別名影響,可使用以下方法:
> ? /bin/ls 使用路徑執行命令
> ? \ls 命令前加反斜杠
> ? 'ls' 命令上加單引號
> ? "ls" 命令上加雙引號
8.date 命令 :顯示/設置系統的時間與日期
[root@centos7 ~]# date "+%F %T" (顯示系統時間)
2018-05-28 21:49:05
[root@centos7 ~]# date "+%Y-%m-%d" ? (顯示系統日期)
2018-05-28
[root@centos7 ~]# date -d '-2 days' ? (表示前天是星期幾)
Sat May 26 21:54:08 CST 2018
其它顯示內容可參考 man date?
clock/hwclock ??查看/設置時間
-s 將硬時間寫入軟時間
-w 將軟時間寫入硬時間
9.history 顯示歷史記錄
history?查看當前的歷史記錄
可使用上下鍵查看之前的歷史命令,并可以再次回車執行
-c 清空歷史
-a 將當前終端的新命令追加到歷史文件
-w /path/filename 將當前終端的新命令追加到指定文件
-r 讀取歷史文件中的所有歷史到當前終端的歷史緩存
-n 僅讀取未讀過的歷史到當前終端的歷史緩存
!XX 執行某條歷史記錄
[root@instructor_v6(nanyibo) ~]# service postfix restart
Shutting down postfix:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting postfix:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
[root@instructor_v6(nanyibo) ~]# !ser
service postfix restart
Shutting down postfix:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting postfix:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
!!重復執行上一條歷史
ctrl+R 在歷史記錄中搜索使用過的命令
搜索到后,回車可直接運行
ctrl+g退出當前搜索?
tab退出搜索,但保留查到的結果,可修改后再運行
10. whatis 查看幫助
查找方式:基于數據庫的查找命令
優點:查找速度快
缺點:不具有實時性
centos6:
數據庫存放位置:/var/cache/man/whatis
更新數據庫:makewhatis
centos7:
數據庫存放位置:/var/cache/man/index.db
更新數據庫:mandb
[root@centos7 ~]# whatis cp
cp (1)? ? ? ? ? ? ? - copy files and directories
cp (1p)? ? ? ? ? ? ? - copy files
11.man 幫助命令
man + 命令 可查看關于此命令的幫助
在man界面翻頁的快捷方式:
f:向下翻一屏
b:向上翻一屏
d:向下翻半屏
u:向上翻半屏
j:向下翻一行
k:向上翻一行
g:跳至首頁
G:跳至尾頁
在man界面中搜索:
/ 關鍵字? 自上而下? n? 向下找 N向上找
? 關鍵字? 自下而上? n? 向上找 N向下找
12.文件系統結構
> /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放于此目錄
> /bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序
> /sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序
> /lib:啟動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
> /lib64:專用于x86_64系統上的輔助共享庫文件存放位置
> /etc:配置文件目錄
> /home/USERNAME:普通用戶家目錄
> /root:管理員的家目錄
> /media:便攜式移動設備掛載點
> /mnt:臨時文件系統掛載點
> /dev:設備文件及特殊文件存儲位置
? ? ? ? ? ? ? ?b: block device,隨機訪問
? ? ? ? ? ? ? ?c: character device,線性訪問
> /opt:第三方應用程序的安裝位置
> /srv:系統上運行的服務用到的數據?
> /tmp:臨時文件存儲位置
>?/usr 存放軟件的執行程序,庫文件及文檔
> /var 存放軟件可變的數據
> /proc 內核與存放進程信息的虛擬文件系統? ?(/proc/cpuinfo)
> /sys 存放硬件信息的虛擬文件系統
13.Linux下的文件類型
-:普通文件
?d: 目錄文件?
? b: 塊設備?
? c: 字符設備?
? l: 符號鏈接文件?
? p: 管道文件pipe?
? s: 套接字文件socket
14.pwd:查看當前所在的絕對路徑
[root@centos7 ~]# pwd
/root
-P 如果當前所在位置是軟鏈接目錄,則顯示源路徑
-L 顯示鏈接路徑(默認)
[root@centos7 bin]# pwd -P
/usr/bin
[root@centos7 bin]# pwd -L
/bin
絕對路徑與相對路徑
絕對:從根開始的路徑
相對:相對于當前的路徑
目錄名與基名
[root@instructor_v7(nanyibo) ~]# dirname '/etc/sysconfig/network-scripts/ifcfg-eth0'
/etc/sysconfig/network-scripts ? (取出目錄名)
[root@instructor_v7(nanyibo) ~]# basename '/etc/sysconfig/network-scripts/ifcfg-eth0'
ifcfg-eth0 ? (取出基名)
15.cd:改變目錄
cd + 路徑 按相對路徑或絕對路徑進入對應的目錄
cd 進入家目錄
[root@centos7 bin]# cd
[root@centos7 ~]#
cd ~ 進入家目錄
[root@centos7 bin]# cd ~
[root@centos7 ~]#
cd - 進入上一次的工作目錄,反復執行會在兩個目錄間來回切換
cd .. 切換至當前目錄的父目錄
16.ls:列出目錄內容
ls +?[options][fils or directories]
-a 顯示所有文件,包含隱藏文件
-A 顯示所有文件,包含隱藏文件,除了. and ..
-l 長列出,顯示屬性信息。如
[root@centos7 ~]# ll anaconda-ks.cfg
-rw-------. 1 root root? 1495 May 15 11:23 anaconda-ks.cfg
列出的文件的屬性信息為如下內容:
? ? -/d/l/s/b/c/p 表示文件的類型
? ? rw-? ---? --- 表示owner,group,other的權限
? ? . 表示該文件有selinux的context標簽,可用-Z 詳細查看
? ? 1 表示硬鏈接數
? ? root 表示該文件的owner
? ? root 表示該文件的group
? ? 1495 表示該文件的大小,默認bytes -h以人類可讀性顯示,則顯示具體的單位
? ? May 15 11:23 默認顯示為mtime,可使用u或--time=atime來顯示atime
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 可使用--time=ctime來顯示ctime
? ? anaconda-ks.cfg? 文件名
-dl 詳細指定目錄自己的屬性信息,而不是顯示子文件,子目錄信息
-R 遞歸
-1 (數字1)以一列顯示
-S 按文件大小從大到小排序
-tl 默認以修改時間從新到舊排序,而如果使用--time=a[c]time,則按所指定的時間從新到舊排序
-utl 以atime從新到舊排序 也可以用--time=atime -tl
不加t只有ul存在時,表示以atime來顯示詳細信息
-rS 按文件大小從小到大 -rt 按時間從舊到新
-U 按文件的存放順序顯示
-X 按文件后綴排序
-i 顯示文件的inode號
-Z 顯示context
17.stat:顯示文件或文件系統狀態(metadata元數據, data元數據)
[root@centos7 app]# stat file
? File: ‘file’
? Size: 20? ? ? ? Blocks: 8? ? ? ? ? IO Block: 4096? regular file
Device: 805h/2053d Inode: 71? ? ? ? ? Links: 1
Access: (0644/-rw-r--r--)? Uid: (? ? 0/? ? root)? Gid: (? ? 0/? ? root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2018-05-29 09:57:58.980666458 +0800
Modify: 2018-05-29 09:57:58.982666458 +0800
Change: 2018-05-29 09:57:58.982666458 +0800
Birth: -
18.時間戳
access time(atime): 訪問時間,當文件被讀取時才更新
modify time(mtime): 數據修改時間,當文件的數據被修改時才更新
change time(ctime): 元數據修改時間,當文件的元數據(權限,大小,owner,group,mtime等)更新時則更新
查看時間:stat + 文件名:顯示文件的三個時間
? ? ? ? ? ? ? ? ? ? ? ? ls + 文件名? ? ?ls -l 默認查看mtime
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ls --time=atime -l 查看atime
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ls --time=ctime -l 查看ctime
19.?touch 創建新文件
touch ?+ [OPTION] + FILE
若文件不存在,則創建一個空文件
若文件存在,則更新三個時間戳
-a 更新atime和ctime
-m 更新mtime和ctime
-c 若文件存在,則更新三個時間戳,若不在,不會創建新文件,無作為。
20.文件通配符
*:匹配零或多個任意字符
?:匹配任意一個單一字符
0-9:表示任何數字
a-Z:表示所有字母,包括大小寫
[linux]:表示包含l或i或n或u或x
[^linux]:表示不包含l和i和n和u和x
[:digit:]:表示任意數字
[:lower:]:表示小寫字母
[:upper:]:表示大寫字母
[:alpha:]:表示大小寫字母
[:alnum:]:表示任意字母或數字
[:blank:]:表示空格(水平制表符)及TAB
[:space:]:表示空格(水平制表符)、回車(垂直制表符)及TAB
[:punct:]:表示符號
[:print:]:表示可打印字符
目前使用的編碼:UTF-8 (ASCII的擴展)
21.cp:復制文件
cp + [OPTION] + 源文件/目錄 + 目標文件/目錄
當源是一個文件時; ??當目標文件不存時,則新建文件,并填充內容
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當目標文件存在,且為一個文件時,則覆蓋該文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 且為一個目錄時,則將該文件放置入該目錄
當源是多個文件時; ??當目標文件不存時,報錯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當目標文件存在,且為一個文件時,報錯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?且為一個目錄時,則將所有源目文件放置入該目錄
當源是一個目錄時, 要配合-r; ??
? ?當目標不存在時,則創建指定名稱的目錄,并將源目錄當中的文件復制到新目錄當中
? ?當目標文件存在,且為一個文件時,報錯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?且為一個目錄時,則兩個目錄內容合并,如有同名文件,則源目錄下的文件覆蓋目標目錄的文件。
-i 覆蓋時交互式提示
-r 遞歸,可以復制目錄
-d 默認不加-d時,cp復制軟鏈接會將源復制過去,加上-d保留鏈接屬性,把軟鏈接復制過去
--preserv=
? ? ? ? ? ? ? ? ? ? mode 權限不變
? ? ? ? ? ? ? ? ? ? owner[ship] 權限及owner,group 不變
? ? ? ? ? ? ? ? ? ? time 三個時間戳不變
? ? ? ? ? ? ? ? ? ? xattr acl權限不變
? ? ? ? ? ? ? ? ? ? links 鏈接不變
? ? ? ? ? ? ? ? ? ? context 文件的selinux上下文關系不變
? ? ? ? ? ? ? ? ? ? all
-p? 等于 --preserv=mode,owner,time
-a 等于 -rdp
-v 顯示復制過程
-f 強制覆蓋: 當普通用戶對目標文件不可更改時,但對該目標文件所在的目錄有創建及刪除文件的權限,則使用-f可以強制覆蓋,實際上是先刪除文件,再創建
-u 只覆蓋源比目標文件新的文件
--backup-numbered 覆蓋前,先將舊文件改名為 文件名.~數字~
22.mv : 移動和重命名文件
mv + [OPTION] + 源文件/目錄 + 目標文件/目錄
源為文件,目標為目錄時,將文件移到目錄內,若目標目錄不存在時則新建目錄
源和目標同時為文件或目錄時,若目標存在則覆蓋,若不存在則新建目標(相當于修改源文件的名字)
常用選項:
-i: 交互式?
-f: 強制? 直接覆蓋,不交互式,抵消i的作用
若要批量修改文件名可使用rename命令
rename +a +b +c 把名稱a改成名稱b,c為需要修改的文件列表,如果一個文件就直接指定文件名
? ? ? [root@centos7 b]# ls
? ? ? 1.doc? 3.doc? 5.doc? 7.doc? a.xls? c.xls? e.xls? g.xls
? ? ? 2.doc? 4.doc? 6.doc? 8.doc? b.xls? d.xls? f.xls? h.xls
? ? ? [root@centos7 b]# rename doc txt *.doc
? ? ? [root@centos7 b]# ls
? ? ? 1.txt? 3.txt? 5.txt? 7.txt? a.xls? c.xls? e.xls? g.xls
? ? ? 2.txt? 4.txt? 6.txt? 8.txt? b.xls? d.xls? f.xls? h.xls
23.rm : 刪除
? -i交互式提示(rm默認不提示,因別名中有cp=cp -i,所有提示要刪除)
? (在rm命令前加上路徑,可直接執行,跳過別名,如:/bin/rm 命令。或在命令前加反斜杠也可,如:\rm)
? -f 直接刪除,不提示(與i相反)
? -r 遞歸刪除(目錄與內容,直接rm只能刪除文件,不能刪除目錄,與rf組合后可刪除直接刪除全部
? rm dir2/* -rf? 刪除dir2目錄下的全部文件
? rm rf *? 刪除本目錄下的全部內容
? rm -rf / --no-preserve-root
rm 目錄和文件的連接數遞減刪除,當鏈接數由1刪到0時,對應的inode在位圖中由占用變為空閑。
? 此時實際數據不會被馬上刪除,但當另一個文件使用此數據塊時會被覆蓋
bitmap 位圖:inode bitmap ??block bitmap
24.tree : 顯示目錄樹
? ? -d: 只顯示目錄
? ? -L level:指定顯示的層級數目(可與d組合使用)
? ? ? [root@centos7 app]# tree -L 1
? ? ? .
? ? ? ├── test
? ? ? └── test2
? ? -P pattern: 只顯示由指定pattern匹配到的路徑
tree?安裝:
? ? ? [root@centos7 test2]# mount /dev/cdrom /media/
? ? ? [root@centos7 test2]# rpm -ivh /media/Packages/tree-1.6.0-? ? ? 10.el7.x86_64.rpm
25.mkdir : 刪除目錄
-p 可以同時創建多級目錄
-v 在創建目錄時顯示詳細信息
-m xxx? 創建同時指定權限
手工創建家目錄
? ? ? ?mkdir /home/magetest
? ? ? cp -r /etc/skel/.[^.]* /home/magetest
? ? ? chown -R magetest.magetest /home/magetest
? ? ? chmod -R 700 /home/matgtest
26.硬鏈接與軟鏈接
創建硬鏈接
ln + 源路徑 + 目的路徑 (注意:源與目的要在同一文件系統下)
創建硬鏈接會增加額外的記錄項以引用文件 ,創建時鏈接數遞增
每個目錄引用相同的inode號?
刪除硬連接?rm
文件要存在,至少有一個鏈接數
當刪除硬鏈接,鏈接數會遞減刪除,從而釋放的inode號。
釋放的inode號可以被重用;數據塊也會被放在空閑列表中
當鏈接數為零時,該文件被刪除
實際是刪除目錄項,數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋。
創建軟鏈接:一個符號鏈接指向另一個文件
ln -s + 源路徑 + 目的路徑
軟鏈接可以對目錄進行也?可以跨分區
軟鏈接指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的
引用計數
27.file 確定文件類型
file [options] <filename>
-b 列出文件辨識結果時,不顯示文件名稱
-f filelist 列出文件filelist中文件名的文件類型
-F 使用指定分隔符號替換輸出文件名后默認的”:”分隔符
-L 查看對應軟鏈接對應文件的文件類型
[root@centos7 app]# file testfile
testfile: ASCII text
常用快捷鍵及命令
清屏命令:clear 或?ctrl + l
ctrl+a 光標移至行首(命令輸入行)
ctrl+e 光標移至行尾(命令輸入行)
Ctrl + u 從光標處刪除至命令行首
?Ctrl + k 從光標處刪除至命令行尾
?Alt + r 刪除當前整行 (注意:Alt組合快捷鍵經常和其它軟件沖突)
stty -echoctl 可取消ctri+c的顯示?^C
stty echoctl 可恢復ctri+c的顯示?^C