echo $?
這是一個shell的變量,意思就是返回上一步執行任務是否成功。
若是爲0 說是成功。
若是非0說明失敗。linux
command命令 ---SHELL內建命令shell
command命令調用指定的指令並執行,命令執行時不查詢shell函數。command命令只可以執行shell內部的命令。
command: usage: command [-pVv] command [arg ...]緩存調用命令bash
參數: 指令:須要調用的指令及參數app
實例:使用command命令調用執行echo Linuxless
GUI:編輯器
GNOME,KDE,XFCEide
CLI:函數
狹義上的shell工具
/bin/bash
shell可以提供給用戶操做系統的一個接口,可以將咱們輸入的命令與內核通訊,好讓內核能夠控制硬件來正確無誤的工做。shell中有不少中形式,好比bshell,CShell,KShell,TCSH等等,經過/etc/shells 中文件能夠查看當前系統中存在的shell形式。當咱們進行用戶登陸時,系統會自動檢查/etc/passwd目錄下的文件,取得當前系統中當前用戶使用的shell形式。
bash的基礎特性:
(1)命令歷史
-c:清空命令歷史
-d OFFSET [n]: 刪除指定位置的命令
-w:保存命令歷史至歷史文件中-a: 當緩衝區中的歷史手動追加文件;
(2)命令別名
alias/unalias
(3)命令補全
(4)路徑補全
(5)命令行展開
~,{}
cd ~回到用戶家目錄,這得看你是用什麼用戶登陸了,若是是以root身份登陸,執行此命令後,回到/root/目錄下,若是是以其餘用戶等錄得話,則是回到/home/目錄下
!!是執行和顯示上一條命令的結果
cd~USERNAME:切換指定用戶的家目錄
cd-:回到上一次所在目錄
pwd命令:printing working directory 顯示工做目錄
ls:list 列出指定路徑下的文件或目錄的屬性信息
ls [OPTION]... [FILE]...
-l 使用長格式 顯示
drwxr-xr-x. 2 root root 4096 8月 22 21:58 aaa
d:文件類型
rwxr-xr-x:權限,mode
root: owner,屬主
root: group,屬組
8: size,默認爲字節
8月 22 21:58:修改時間戳
-d:顯示目錄自身屬性
-h:human-readable 與-l 一塊兒,以易於閱讀的格式輸出文件大小
-r:reverse,逆序顯示
-R:recusive,遞歸
-a –all 顯示全部文件,包括.開頭的隱藏文件
.:當前目錄
..:父目錄
-A:列出除. 及.. 之外的任何項目
-m:水平輸出文件列表
-t:最近修改的文件顯示上面
-n:打印文件的UID和GID
-lh:列出可讀文件和文件夾的詳細信息
-ld:顯示文件夾信息
-lt:按時間列出文件和文件夾詳細信息
-ltr: 按修改時間列出文件和文件夾的詳細信息
-F:按特殊字符對文件進行分類
文件查看類命令:
cat,tac命令:
cat命令鏈接文件並打印到標準輸出設備上,cat常常用來顯示文件的內容
-n:有1開始對全部輸出的行數編號;
-b :和-n類似,只不過對於空白行不編號
-A:顯示不可打印字符,行尾顯示「$」
-e: –vE
-E:顯示行結束符
-v:顯示非打印字符
tac命令用於將文件已行爲單位的反序輸出,即第一行最後顯示,最後一行先顯示。
-a:將內容追加到文件末尾
-i:忽略中斷信號。
相關示例:
[root@localhost www]# cat test 1234 abcd [root@localhost www]# rev test 4321 dcba [root@localhost www]# tac test abcd 1234文件內容類型查看命令:file命令用來探測給定文件的類型。file命令對文件的檢查分爲文件系統、魔法幻數檢查和語言檢查3個過程。
-b:不輸出文件名(簡要模式)-c:詳細顯示指令執行過程,便於排錯或分析程序執行的情形-f<名稱文件>:指定名稱文件,其內容有一個或多個文件名稱時,讓file依序辨識這些文件,格式爲每列一個文件名稱;
-L:直接顯示符號鏈接所指向的文件類別;
-m<魔法數字文件>:指定魔法數字文件;
-v:顯示版本信息;
-z:嘗試去解讀壓縮文件的內容。
[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text
[root@localhost ~]# file -b install.log
UTF-8 Unicode text <== 不顯示文件名稱
[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8 <== 顯示MIME類別顯示符號連接的文件類型:
echo命令:
顯示環境變量:
-e:讓控制字符生效 \b刪除前一個字符
-n:不進行換行
\n:new line 換行
which命令:
which [options] [--] programname [...]
--skip-alias 禁止列出別名
whereis COMMAND:
顯示二進制程序、源碼文件以及幫助手冊的路徑;linux文件系統
絕對路徑:/
根文件系統:rootfs
文件系統掛載:
FSB:FHS(文件系統層級結構標準)
FHS:
/boot:引導文件存放目錄,例如kernel(vmlinuz)、bootloader(grub,grub2)
/bin binary,供用戶使用的基本命令:OS啓動即會用到程序
/sbin :管理類的基本命令
/lib:基本共享庫;內核模塊
/lib64:X86_64系統的共享庫
/etc:配置文件目錄
/home/USERNAME:普通用戶主目錄的默認位置
/root:管理員的主目錄
/media:便捷式的移動設備;
/mnt:臨時文件系統掛載點
/opt: 可選目錄,第三方應用程序的默認安裝位置
/dev: devices,設備
b: block devices
c:character devices,linear access (線性訪問)l
/proc: 僞文件系統:用於輸出內核與進程的相關信息 是內存中有關係統進程的實時信息
/sys:僞文件系統:是有關係統內核以及驅動的實時信息
/srv:services,系統上運行服務用到中間數據
/tmp:臨時文件目錄
/usr:Universal Shared,Read-only data
bin/
sbin/
lib/
lib64/
include:C 程序的頭文件:header files
share:結構化的獨立數據
doc,man
local:如今經常使用 的第三方程序 的安裝位置
bin
sbin
lib
lib 64
etc
share
/var: Variable data files
cache:應用程序 的緩存數據
lib:應用程序的狀態信息數據
local:專用於爲/usr/local下的應用程序存儲可變數據
lock:鎖文件
log:日誌文件
opt:專用於/opt
spool:應用程序的數據池
run:運行中的進程的相關數據,一般應用於守護進程 的pid文件。
/selinux
Linux下的文件類型:
-(f):普通文件
d:目錄文件
b:塊設備文件
c: 字符設備文件
l: 符號連接文件
p:命名管道文件
s:套接字文件
命令別名
命令的另外一個引用符號,由bash程序維護;alias/unalias
alias: 查看全部已經定義別名;
alias NAME=COMMAND:定義別名;若是別名同原命令名,想直接執行原命令,則需使用\COMMAND
unalias NAME: 撤消別名;
[root@localhost ~]# alias cls="clear"
目錄管理類命令:
mkdir,rmdir,tree,
(1) mkdir
mkdir [OPTION] /PATH/TO/SOMEWHERE
-p:建立父目錄
-v: 顯示建立過程練習:
如何建立目錄:x_m, x_n, y_m, y_n?(2) rmdir
rmdir /PATH/TO/SOMEWHERE刪除空目錄;
(3) tree 以樹狀圖列出目錄的內容
tree [OPTION]... [DIR]
-d:只層級目錄類型的文件;
-L level: 只顯示幾個層級;
文本文件查看命令:
cat, tac, more, less, tail, head
cat 命令,文件或標準輸入組合輸出到標準輸出
tac命令用於將文件已行爲單位的反序輸出,即第一行最後顯示,最後一行先顯示。
-a或——append:將內容追加到文件的末尾; -i或——ignore-interrupts:忽略中斷信號。
more,less
翻屏查看
more命令是一個基於vi編輯器文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容,支持vi中的關鍵字定位操做。more名單中內置了若干快捷鍵,經常使用的有H(得到幫助信息),Enter(向下翻滾一行),空格(向下滾動一屏),Q(退出命令)。 該命令一次顯示一屏文本,滿屏後停下來,而且在屏幕的底部出現一個提示信息,給出至今己顯示的該文件的百分比:--More--(XX%)能夠用下列不一樣的方法對提示作出回答: 按Space鍵:顯示文本的下一屏內容。 按Enier鍵:只顯示文本的下一行內容。 按斜線符|:接着輸入一個模式,能夠在文本中尋找下一個相匹配的模式。 按H鍵:顯示幫助屏,該屏上有相關的幫助信息。 按B鍵:顯示上一屏內容。 按Q鍵:退出rnore命令。
less命令文件內容查看 less命令的做用與more十分類似,均可以用來瀏覽文字檔案的內容,不一樣的是less命令容許用戶向前或向後瀏覽文件,而more命令只能向前瀏覽。用less命令顯示文件時,用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程序,應按Q鍵。語法 less(選項)(參數) 選項 -e:文件內容顯示完畢後,自動退出; -f:強制顯示文件; -g:不加亮顯示搜索到的全部關鍵詞,僅顯示當前顯示的關鍵字,以提升顯示速度; -l:搜索時忽略大小寫的差別; -N:每一行行首顯示行號; -s:將連續多個空行壓縮成一行顯示; -S:在單行顯示較長的內容,而不換行顯示; -x<數字>:將TAB字符顯示爲指定個數的空格字符。
head和tail
head命令用於顯示文件的開頭的內容。在默認狀況下,head命令顯示文件的頭10行內容。
-n<數字>:指定顯示頭部內容的行數; -c<字符數>:指定顯示頭部內容的字符數; -v:老是顯示文件名的頭信息; -q:不顯示文件名的頭信息。
tail命令用於輸入文件中的尾部內容。tail命令默認在屏幕上顯示指定文件的末尾10行。若是給定的文件不止一個,則在顯示的每一個文件前面加一個文件名標題。若是沒有指定文件或者文件名爲「-」,則讀取標準輸入。 注意:若是表示字節或行數的N值以前有一個」+」號,則從文件開頭的第N項開始顯示,而不是顯示文件的最後N項。N值後面能夠有後綴:b表示512,k表示1024,m表示1 048576(1M)。
時間戳管理工具:touch
touch命令有兩個功能:一是用於把已存在文件的時間標籤更新爲系統當前的時間(默認方式),它們的數據將原封不動地保留下來;二是用來建立新的空文件。
用法:touch [選項]... 文件...
-a 只更改訪問時間
-c, --no-create 不建立任何文件
-d, --date=字符串 使用指定字符串表示時間而非當前時間
-f (忽略)
-h, --no-dereference 會影響符號連接自己,而非符號連接所指示的目的地
(當系統支持更改符號連接的全部者時,此選項纔有用)
-m 只更改修改時間
-r, --reference=文件 使用指定文件的時間屬性而非當前時間
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的時間而非當前時間
--time=WORD 使用WORD 指定的時間:access、atime、use 都等於-a
選項的效果,而modify、mtime 等於-m 選項的效果
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出請注意,-d 和-t 選項可接受不一樣的時間/日期格式。
實例
touch ex2 在當前目錄下創建一個空文件ex2,而後,利用ls -l命令能夠發現文件ex2的大小爲0,表示它是空文件。
文件管理命令:
cp ,mv,rm
複製命令:cp, copy
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...cp SRC DEST:
SRC是文件:
若是DEST不存在:新建目標文件,並將SRC複製到目標文件;
若是DEST存在:
若是DEST是文件:用SRC的內容覆蓋至DEST文件中;
若是DEST是目錄:在DEST目錄中新一個與原文件同名的文件,將將SRC內容複製到新建的同名的目標文件中;cp SRC... DEST:
若是DEST不存在:
是錯誤的;
若是DEST存在:
若是DEST是文件:錯誤;
若是DEST是目錄:經常使用選項:
-r, -R: 遞歸複製;
-d: 不跟蹤符號連接;
--preserve[=ATTR_LIST]:
mode, ownership, timestamps
context, links, xattr, all
-a: -dR --preseve=all
-i: interactive
-f: force
-v: 顯示過程mv: move, 移動文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...經常使用選項:
-i:交互式
-f:強制rm: remove
rm命令能夠刪除一個目錄中的一個或多個文件或目錄,也能夠將某個目錄及其下屬的全部文件及其子目錄均刪除掉。對於連接文件,只是刪除整個連接文件,而原有文件保持不變。 注意:使用rm命令要格外當心。由於一旦刪除了一個文件,就沒法再恢復它。因此,在刪除文件以前,最好再看一下文件的內容,肯定是否真要刪除。rm命令能夠用-i選項,這個選項在使用文件擴展名字符刪除多個文件時特別有用。使用這個選項,系統會要求你逐一肯定是否要刪除。這時,必須輸入y並按Enter鍵,才能刪除文件。若是僅按Enter鍵或其餘字符,文件不會被刪除。
rm [OPTION]... FILE...
只刪除文件;
經常使用選項:-d:直接把欲刪除的目錄的硬鏈接數據刪除成0,刪除該目錄;
-f:強制刪除文件或目錄;
-i:刪除已有文件或目錄以前先詢問用戶;
-r或-R:遞歸處理,將指定目錄下的全部文件與子目錄一併處理;
--preserve-root:不對根目錄進行遞歸操做;
-v:顯示指令的詳細執行過程。
刪除當前目錄下除隱含文件外的全部文件和子目錄
# rm -r *
應注意,這樣作是很是危險的!
文本編輯器:
nanobash的基礎特性(02)
(1) glob
文本名「通配」
*:匹配任意長度的任意字符;
?:匹配任意單個字符;
a*b: aab, ab, a123b;
a?b:
[]: 匹配指定範圍內的任意單個字符;
[0-9]
[^]:匹配範圍外的任意單個字符;
[^a-b]
練習:
顯示/etc/目錄下,以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄;解:
[root@localhost ~]# mkdir /tmp/c
[root@localhost ~]# cp -vr /etc/[^a-zA-Z]* /tmp/c
"/etc/123aaa" -> "/tmp/c/123aaa"
"/etc/[^a-z]aaa111222" -> "/tmp/c/[^a-z]aaa111222"[root@localhost ~]# cd /tmp/c
[root@localhost c]# ls
123aaa [^a-z]aaa111222複製/etc目錄下,全部以.d結尾的文件或目錄至/tmp/mageedu.com目錄中;
解:
[root@localhost ~]
# mkdir /tmp/mageedu.com
[root@localhost ~]
# cp -r /etc/*.d/tmp/mageedu.com/
[root@localhost ~]
# ls /tmp/mageedu.com/
[root@localhost ~]
# rm -rf/tmp/mageedu.com/
(2) 組合鍵
Ctrl+l:清屏
Ctrl+a: 切換至命令行首
Ctrl+e:切換至命令行尾
Ctrl+c:取消命令執行
Ctrl+u:刪除光標所在處至行首的內容;
Ctrl+k: 刪除光標所在處至行尾的內容;
(3) IO重定向和管道
程序:指令+數據
讀入數據:Input
輸出數據:Output
打開的文件都一個fd:file descriptor
標準輸入:keyboard, 0, /dev/stdin
標準輸出:monitor, 1, /dev/stdout
標準錯誤輸出:monitor, 2, /dev/stderr
I/O重定向:
輸入重定向
輸出重定向:
COMMAND > NEW_POS, COMMAND >> NEW_POS
>:覆蓋重定向;
>>:追加劇定向;
set -C
若是覆蓋重定向目標文件存在,則禁止執行;
>|
set +C
錯誤重定向:
2>:覆蓋
2>>:追加
同時重定向標準輸出流和錯誤輸出流:
COMMAND > /path/to/file.out 2> /path/to/file.err
COMMAND > /path/to/file.out 2>&1
COMMAND &> /path/to/file.out
輸入重定向:
<
tr命令:
tr [OPTION]... SET1 [SET2]
-d: 刪除字符
Here Document:<<
cat >> /path/to/somefile << EOF
管道:
COMMAND1 | COMMAND2 | ...
tee 命令
tee命令用於將數據重定向到文件,另外一方面還能夠提供一份重定向數據的副本做爲後續命令的stdin。簡單的說就是把數據重定向到給定文件和屏幕上。
-a 附加到文件-i 無視中斷--help 顯示幫助信息--version 顯示版本信息
[root@localhost ~]# tee 12 -a /tmp/12 <<EOF
> 1233233333
> EOF
[root@localhost c]# cat /tmp/12
1233233333
文件處理工具:
wc, cut, sort, uniq
wc命令的功能爲統計指定文件中的字節數、單詞數、行數, 並將統計結果顯示輸出
wc:word counts
wc [OPTION]... FILE...
-l: 顯示行數
-w: 顯示單詞數
[root@localhost~]
#cat/etc/passwd |ws –l 查看passwd文件有多少行
[root@localhost~]
#echo「qqq www eee」 |wc –w 查看輸出有多少個單詞
[root@localhost~]
#echo「21312123」 | wc –m 查看輸出有多少個字符
cut:
cut OPTION... [FILE]...
-d: 指明分隔符;-d' ', -d:
-f:指明要顯示的字段
#:
#-#:1-3
#,#: 1,3,7
sort命令:排序
sort [OPTION]... [FILE]...
-r: 逆序
-f: 忽略字符大小寫
-u: 排序後去重
-t CHAR: 指明分隔符
-k #: 字段
-n: 表示以數值大小排序
最簡單排序:
uniq命令:
uniq命令用於報告或忽略文件中的重複行,通常與sort命令結合使用。
uniq [OPTION]... [FILE]...
-c: 顯示每行重複的次數;
-d: 只顯示重複過的行;
-u: 只顯示未曾重複的行;
刪除重複行: uniq file.txt sort file.txt | uniq sort -u file.txt
只顯示單一行: uniq -u file.txt sort file.txt | uniq –u
統計各行在文件中出現的次數: sort file.txt | uniq –c
在文件中找出重複的行: sort file.txt | uniq -d