Linux基礎命令詳解(二)————Vim文字編輯
shell:殼,命令直譯器
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
man bash
man cd
man ls
type 檢視命令是file、alias還是builtin
內建命令 (shell內建)。
外接命令:在檔案系統的某個目錄下,有個與命令名稱相同的檔案。
區別: shell為了完成自我管理和基本的管理,不同的shell內建不同的命令,但是大部分都差不多。
-t 僅列出命令執行時的依據
-a 列出當前命令可以如何執行
那命令怎麼知道是那個路徑下的命令呢?系統為了讓使用者在命令列快速方便地執行命令,用一種機制來實現,這種機制就叫做環境變數。
變數是什麼? 變數是命名的記憶體空間。
shell的變數功能:
變數簡單說就是讓某一個特定字串代表不固定的內容。
設定變數(變數名的規則:用“=”連線;等號兩邊不能有空格符;只能使用數字和字母,且不能用數字開頭;):
myname=redhat(變數宣告的過程就是申請記憶體使用的過程)
環境變數
定義當前使用者工作環境屬性的變數
PATH
取消變數:unset 變數名稱
/bin/bash優點:
命令與檔案補全功能
命令別名設定功能
命令記憶功能
萬用字元等等
history 命令歷史
命令歷史檔案為~/.bash_history
n 列出目前最近的n條資訊
-c 清除命令歷史
!! 執行上一個命令
! number 執行命令歷史中第幾條命令
shell中的萬用字元:bash中常用的萬用字元有”*“,”?“,”[]“
* 表示匹配任意零個或多個字元
? 表示匹配任意單一字元
[] 匹配任何包含在方括號內的單字元
shell中的引用:在bash中有很多特殊字元,這些特殊字元就具有特殊含義。引用就是通知shell將這些特殊字元當作普通字元來處理。
轉義字元“\”:如果將\放到特殊字元前面,shell就忽略這些特殊字元的原有含義,把它們當作普通字元對待。
mkdir 1*
ls -ld 1*
ll -d 1\*
單引號: 如果將字串放到一對單引號之間,那麼字串中所有字元的特殊含義被忽略。
ll -d 1'*'
雙引號: 雙引號的引用與單引號基本相同,包含在雙引號內的大部分特殊字元可以當作普通字元處理,但是仍然有一些特殊字元保留自己的特殊含義,比如”$“和“\”以及“ ` ”
ll -d 1"*"
myname=redhat
echo “$myname”
echo “\$$myname”
echo "`date` "
文字編輯vim:
命令模式:按esc鍵可回到命令模式
dd 刪除當前行 數字+dd刪除的行數
dw 按單詞刪除
u 撤銷當前操作
ctrl+r 重做
yy 複製游標所在行
2 yy 複製游標所在行和游標下一行
p 貼上到游標下一行
cc 剪下
行數cc 剪切當前行開始的幾行
x 刪除游標所在位置的內容
w,b 按單詞進行移動游標
gg 跳轉到文件首部行首
dgg 刪除游標至文件首部
G 跳轉到文件尾部行首
/字串1 查詢字串1
$ 行尾
^ 行首
h 往左按字元移動游標
j 往下(後)按行移動游標
k 往上(前)按行移動游標
l 往右按字元移動游標
H 跳轉到當前螢幕輸出的最上面一行
L 跳轉到當前螢幕輸出的最下面一行
M 跳轉到當前螢幕輸出的中間那一行
插入模式:
i 在游標前插入
I 在游標所在行行首插入
a 在游標後插入
A 在游標所在行末尾插入
s 刪除游標所在位置字元並插入
S 刪除游標所在行並插入
o 在游標所在行下一行插入
O 在游標所在行上一行插入
末行模式:
:wq 儲存退出
:q 退出(未修改檔案內容才可以退出)
:wq! 強制儲存退出
:q! 強制退出,不儲存
:set nu 顯示行號
:set nonu 不顯示行號
:行號 跳轉到指定行號
:3,5 d 刪除3-5行
:r 檔名1 讀出檔案1的內容到當前檔案裡
:%s/字串2/字串3 字串3替換字串2
:%s/1/2/g 將1替換為2,全域性修改
:w 檔名1 另存為檔名1
文字檢視命令:
連線並顯示檔案內容到標準輸出: cat
顯示檔案內容並顯示行號: cat -n 檔名
黑洞機制 (shell腳本里面經常用)
將檔案內容重定向到/dev/null: cat 檔案 >/dev/null
不帶任何選項時,從標準輸入接收輸出到標準輸出
逆序顯示檔案: tac
從頭開始逐行檢視: more /var/log/messages
在沒有翻到最後一屏時支援向前翻
前後檢視檔案內容: less /var/log/messages
man手冊檢視命令用法預設用less開啟
預設檢視檔案前10行: head /etc/passwd
指定檢視前5行: head -5 /etc/passwd
預設檢視後10行: tail /etc/passwd
檢視後5行: tail -5 /etc/passwd
文字處理:
文字切割顯示:
cut -d 指定分隔符 -f 指定第幾列 被切割檔案
-f 1,3 第一列和第三列
-f 1-3 第一列到第三列
-c 1-4 指定第一到第四個字元
指定分隔符的時候空格需要用單引號或雙引號引起來
cut -d : -f 1-3 [email protected] /etc/passwd
文字排序顯示:
排序顯示(預設根據字元在ASCII碼中的升序排序):sort 檔名
按照數值大小排序:sort -n 檔名
排序並去掉重複的:sort -u 檔名
逆序排序:sort -r 檔名
按照使用者uid數字大小排序顯示:
sort -t 指定分隔符 -k 指定第幾列 -n /etc/passwd
-f 排序時忽略字元大小寫
去掉重複的行,重複的行必須相鄰:uniq 檔名
-d 只顯示重複的行
-D 顯示所有重複的行
-c 顯示重複行重複的次數
文字統計:wc——word count
顯示檔案行數、單詞數、位元組數和檔名:wc 檔名
###在UTF-8編碼格式裡面,顯示時一個字元佔一個位元組,一箇中文字佔用3個位元組
只顯示單詞數:wc -w 檔名
只顯示位元組數:wc -c 檔名
只顯示行數:wc -l 檔名
只顯示字元數:wc -m 檔名
顯示最長的一行的字元數:wc -L 檔名
統計當前目錄下的檔案數:
ls -l | wc -l
ls | wc -l
文字過濾:grep可以根據指定的字串,對檔案的每一行進行搜尋,如果找到了這個字串,就輸出該行的內容
查詢檔案裡的字元和字串:
查詢檔案裡有字元h的字串: grep h 檔名
匹配整個單詞: grep -w 單詞 檔名
匹配以q開始的行: grep ^[q] 檔名
匹配以q和a開始的行: grep ^[qa] 檔名
匹配以q結束的行: grep q$ 檔名
匹配以q和a結束的行: grep [qa]$ 檔名
匹配以數字開頭的行: grep ^[0-9] 檔名
匹配以q或者f開頭的行: grep ^[qf] 檔名
匹配以#號開頭的行: grep "^#"
過濾空白行: grep "^$"
如果要明確搜尋子目錄: grep -r h ./* (有h的檔案)
忽略子目錄: grep -d skip h ./*
搜尋時忽略大小寫: grep -i
搜尋時顯示沒有匹配到的行: grep -v
搜尋時顯示匹配到的那一行以及下2行: grep -A 2
搜尋時顯示匹配到的那一行以及上2行: grep -B 2
搜尋時顯示匹配到的那一行以及上下2行: grep -C 2
管道符:| 管道符左邊命令的輸出作為管道符右邊命令的輸入。
tee命令:在輸出到檔案的同時輸出到螢幕,既想把輸出儲存到檔案中,又想在螢幕上看到輸出內容。
檔案搜尋:
查詢檔案路徑:
find 路徑 -name 檔名:find / -name passwd