常用shell命令整理

 

根目錄下的常用子目錄作用

/ 虛擬目錄的根目錄
/bin 二進制目錄,存放許多GNU用戶級的工具
/boot 啓動目錄,存放啓動文件
/dev 設備目錄
/home 主目錄,用戶目錄
/lib 庫目錄,存放系統和應用程序的庫文件
/media 媒體目錄,存放可移動媒體設備掛載點的地方
/mnt 掛載目錄,另一個存放可移動媒體設備掛載點的地方
/opt 可選目錄,通常用於存放可選的軟件包
/root 根主目錄
/sbin 系統二進制目錄,存放許多GNU管理員級工具
/tmp 臨時目錄,可以在該目錄中創建和刪除臨時工作文件
/usr 用戶安裝軟件的目錄
/var 可變目錄,用以存放經常變化的文件,比如日誌文件

 

/etc    配置目錄

/etc/inittab    運行級配置

 

通用的Linux命令選項

 

-a      顯示所有對象

-c      生成一個計數

-d      指定一個目錄

-e      擴展一個對象

-f       指定讀入數據的文件

-h      顯示命令的幫助信息

-i        忽略文本大小寫

-l        產生輸出長格式版本

-n       使用非交互模式(批量)

-o       指定將所有輸出重定向到輸出文件

-q       以安靜模式運行

-r        遞歸的處理目錄

-s        以安靜模式運行

-v        生成詳細輸出

-x        排除某個對象

-y        對所有問題回答yes

 

ls 瀏覽

cp複製

mv 移動,剪切

touch 創建文件

rm 刪除文件

rmdir 刪除目錄

mkdir 創建目錄

file 查看文件類型

stat 查看文件統計信息

cat 查看整個文件內容

cat -b 忽略空行顯示行號

cat -n 顯示所有行號

cat -E 顯示行末$

 

more 逐步顯示

less 逐步顯示文件內容(適用於大文件查看)

tail 顯示文件末尾 默認10行

 

 

/etc/passwd 所有用戶信息

 

格式爲 用戶名:密碼:用戶ID:羣組ID:用戶全名:用戶home目錄:用戶shell路徑

~/.bashrc shell啓動時當前自動加載

 

/etc/bashrc 所用用戶公用文件

命令歷史記錄
在~/.bash_history中,預設1000條歷史命令。正常退出shell時,在將命令保存在.bash_history文件中。

 

!命令:!! 執行上一條指令,!n執行命令歷史中第n條指令,!命令名執行命令歷史中最近一次匹配命令令。

 

alias [-p] [name[=value] ...] alias -p顯示所有別名 unalias -a 取消所有別名

 

 

$PS1 控制默認命令行提示符
修改命令 PS1="XXXX"
\a 報警字符\d"日 月 年"
\e ASCII轉義字符\h主機名
\H 完全限定域名\j當前管理的任務數
\l shell的終端設備名的基名\nASCII換行符
\r ASCII 回車符 \sshell的名稱
\t 24時制HH:MM:SS\T12時制HH:MM:SS
\@ 12時制am/pm 格式\u當前用戶名
\v bash shell 的版本\Vbash shell 的發行版本
\w 當前工作目錄\W當前工作目錄的基名
\! 這個命令在bash shell歷史記錄中的位置\#這個命令在當前命令行中的位置
\$ 普通用戶下的美元符($),root下的(#)\nnn與8進制nnn對應的字符
\\ 反斜線\[開始一個控制字符序列
\] 開始一個控制字符序列

 

 

$PS2 控制後續命令行提示符

/etc/inittab 開機自啓動的進程

/proc/meminfo 虛擬內存當前狀態

ipcs -m 當前內存共享頁面

ps 查看進程 具體命令行詳細內容請打開

printenv   輸出全局環境變量

set   輸出局部環境變量

/etc/passwd  存儲用戶信息

/etc/shadow 存儲密碼信息

 

useradd 添加用戶

userdel  刪除用戶

groupadd  添加羣組

usermod  修改用戶信息

passwd   修改用戶密碼

chpasswd   批量修改用戶密碼

chsh    用來快速修改默認的用戶登錄shell

chfn    提供在/etc/passwd 文件的備註字段中存儲信息的標準方法

finger    簡單查看Linux 系統上的用戶信息

chage  設置用戶的過期日期

chmod   改變權限

chown   改變所屬關係

chgrp    改變默認屬組

umask   默認權限

 

fdisk   管理存儲設備分區

創建文件系統

mkefs   創建一個ext 文件系統

mke2fs  創建一個ext2文件系統

mkfs.ext3  創建一個ext3文件系統

mkfs.ext4 創建一個ext4文件系統

mkreiserfs 創建一個ReiserFS文件系統

jfs_mkfs   創建一個JFS文件系統

mkfs.xfs  創建一個XFS文件系統

 

fsck   檢查和修復任意類型的Linux文件系統

pccreate 創建真實的物理卷

pvdiplay  顯示已經創建的物理卷列表

vgcreate 創建卷組

lvcreate 創建邏輯卷

lvdisplay 顯示已創建邏輯卷組

LVM

vgchang 激活和禁用卷組

vgremove 刪除卷組

vgextent 將物理卷加到卷組中

lvexend 增加邏輯卷的大小

lvreduce 減小邏輯卷的大小

 

軟件安裝

下載包

解壓   tar -zxvf *.tar.gz

./configure  配置sysstat和解決依賴關係

make  構建各種二進制文件 ,編譯源碼,創建鏈接

make install 重新安裝到常用安裝目錄中

 

vim  常用快捷鍵

u 撤銷當前命令

Ctrl + r  執行下一條命令,沒有就不執行

r 單個字符替換

R 文本替換

x 刪除光標所在字符

dd 剪切光標所在行

dw 剪切光標所在單詞

d$ 剪切光標到文件末尾行

J 刪除當前光標所在行行尾的換行符

p 粘貼到光標下一行

yw 複製單詞

y$ 複製到行尾

num  yy   向下複製num行

num cj    剪切從當前行到向下num 行

 

:s/old/new/g   替換一行

:n,ms/old/new/g   替換n-m行

:%s/old/new/g  替換所有

:%s/old/new/gc   替換所有每次出現時提示

 

Ctrl F   下翻一個屏幕

Ctrl B  上翻一個屏幕

G 移到最後一行

gg 移到第一行

num G 跳轉到第num行

 

 

bc  浮點數運算

scale 默認爲0,沒有小數點後的位置

#!/bin/bash
var1=`echo " scale=4; 3.44 / 5" | bc `
echo $var1
輸出   .6880

 

$?  存儲上一個執行命令的退出狀態碼   

0     成功結束爲

1     通用未知錯誤

2    誤用shell命令

126    命令不可執行

127    沒找到命令

128    無效退出參數

128+x    Linux信號x的嚴重錯誤

130    命令通過Ctrl+C 終止

255     退出狀態碼越界

exit  x 自定義狀態碼x

狀態碼值在0~255之間,如果越界則進行模運算

 

if  command       如果狀態碼爲0 則執行then

then commands

fi

if ((  expression ))  數值      支持高級數學表達式,不需要轉義

val++ , val--, ++val,--val,!,~,**,<<,>>,&,|,&&,||

if [[expression]]   字符串 高級比較特性

模式匹配

 

test [  condition ]    可以判斷3類條件:數值比較,字符串比較,文件比較

數值比較:

n1 -eq n2    是否相等

n1 -ge n2  是否大於或等於

n1 -gt n2  大於

n1 -le n2  小於或等於

n1 -lt n2  小於

n1 -ne n2 不等於

字符串比較:

str1 = str2

str1 < str2

str1 > str2

str1 != str2

-n str1    判斷str1 長度是否非0

-z  str1   判斷str1 長度是否爲0

<   > 用轉義符號,避免跟重定向衝突

文件比較

-d file    file 是否存在並是一個目錄

-e file    file是否存在

-f file     file是否存在並是一個文件

-r file    file是否存在並可讀

-s file    file是否存在並非空

-w file   file是否存在並可寫

-x file    file是否存在並可執行

-O file    file是否存在並屬當前用戶

-G  file    file是否存在並默認組與當前用戶相同

file1  -nt  file2   file1是否比file2 新

file1  -ot  file2     file1是否比file2 就

 

case    命令

case variable in pattern1 | pattern2 )  commands1;;

pattern2) commands2;;

*) default commands;;

 

for 命令

for var in list

do

    commands

done

for 循環假定每個值以空格分割

IFS環境變量  內部字段分隔符( Internal Field Separator)

IFS=$' \n:;" '  可以以\n,:,;,",分隔

支持C語言風格

for(( var;  condition;  iteration))

 

while 

until   --->  do while

break

continue

 

命令行參數

$?  上一條執行命令返回狀態碼

$#   命令行參數的個數

$*   將命令行所有參數當作一個單詞來保存

$@  將命令行所有參數當作多個單詞來保存

 

$0  程序名

$1  第一個參數

$2 第二個參數

shift 命令,將所有參數向左移動一位

 

getopt   optstring options   parameters

$ getopt ab:cd -a -b test1 -cd test2 test3
 -a -b test1 -c -d -- test2 test3

<span style="font-size:12px;"><span style="font-size:12px;"><span style="font-size:12px;">#!/bin/bash
set -- `getopt -q ab:c "$@"`
while [ -n "$1" ]
do
    case "$1" in
    -a) echo "found the -a option" ;;
    -b) param="$2"
        echo "Found the -b option,with parameter value $param"
        shift ;;
    -c) echo "Found the -c option" ;;
    --) shift
        break ;;
     *) echo "$1 is not an option" ;;
    esac
    shift
done

count=1
for param in "$@"
do
    echo "Parameter #$count: $param"
    count=$[ $count + 1 ]
done</span></span></span>

 

<span style="font-size:12px;"><span style="font-size:12px;"><span style="font-size:12px;">$ sh test.sh -a -b test1 -cd test2 test3 test4
found the -a option
Found the -b option,with parameter value 'test1'
Found the -c option
Parameter #1: 'test2'
Parameter #2: 'test3'
Parameter #3: 'test4'</span></span></span>

 

echo   標準輸出

 

-n   輸出不換行

 

read   標準輸入命令

-p "提示"  

-t    time    設置超時時間

-s  隱式輸入

cat test | while read line   一次讀取一行

 

&>   將標準輸出和標準錯誤  重定向到一個輸出文件

>&2  臨時重定向

exec 1> file   永久重定向

exec 3 > file   自定義重定向

exec 3>&-   file   關閉文件描述符

 

lsof   列出打開的文件描述符

/dev/null       null文件的標準位置,重定向的此位置的任何數據都會被丟掉,不會顯示

 

mktemp  filename.XXXXXX    創建本地臨時文件  後面六個X會被隨機生成字母

mktemp -t filename.XXXXXX  在系統臨時目錄創建該文件,返回全路徑及文件名

mktemp  -d  dirname.XXXX   創建臨時目錄

 

tee   filename   記錄消息,相當於STDIN過來的數據同時發給STDOUT和指定文件名

 

jobs  查看作業

bg + jobID  重啓一個作業

nice  -n   指定優先級   nice值越大,優先級越低  範圍爲:-20~20

renice  更改已運行的進程優先級

at   [ -f filename ]  time  指定腳本運行時間

cron   時間表

分    小時    天    月    周    命令

* 表示每天/月/周

 

crontab 構建時間表

 

默認是全局變量

local    局部變量

source ./filename     <==>    .    ./filename     

 

sed 

sed '='  data    打印行號

sed -n '2,3p' data     打印第2-3行

sed  '2,3s/dog/cat/' data    將2-3行的dog替換爲cat

sed  '3d'  data    過濾第3行

sed  '/1/,/3/d'  data   過濾1-3行

sed  '3i\this is a inserted line.'  data   插入到第3行

sed  '3a\this is a inserted line.'  data   附加到第3行

sed  '2,3c\this is a inserted line.'  data   修改第2-3行

$ echo "This is a test of 1 try." | sed 'y/123/456/'      轉換命令
This is a test of 4 try.

[address] w  filename  向文件寫數據

sed  '1,2w  test'  data     把data的第1-2行寫入到test文件中

sed  -n  '/IN/w  INcustomers'  data   把data中含有IN的行寫入到INcustomers中

 

[address] r  filename  從文件讀數據

sed  ‘3r  test' data   把test文件內容插入到data第3行後面

 

gawk    

$0   整個文本

$1  第一個單詞,以此類推

gawk  'BEGIN { print "hello"; FS=":" }  {  print $0; print $1 }  END  {  print "End of File" }'  data

gawk -F:  以冒號分割

FIELDWIDTHS     由空格分開定義的每個數據字段確切寬度的一列數字

FS   輸入字段分割符

RS  輸入數據行分隔符

OFS  輸出字段分隔符

ORS  輸出數據行分隔符

gawk 'BEGIN{FS=","; OFS="--"}  {print $1,$2,$3}' data

gawk 'BEGIN{FIELDWIDTHS="3 5 2 5"} {print $1,$2,$3,$4}'  data

 

數據變量

ARGC         當前命令行參數個數

ARGIND     當前文件在ARGV中的位置

ARGV          包含命令行參數的數組

CONVFMT    數字的轉換格式,等價於printf   默認爲%.6 g

ENVIRON      當前shell環境變量及其值組成的關聯數組

ERRNO         當讀取或關閉輸入文件發生錯誤時的系統錯誤號

FILENAME     用作gawk輸入數據的數據文件的文件名

FNR                當前數據文件中的數據行數

IGNORECASE     設定爲非零值時,忽略大小寫

NF                        數據文件中的字段總數

NR                       已經處理的輸入數據行數目

OFMT                   數字的輸出格式;默認爲%.6 g

RLENGTH          由match函數所匹配的子字符串的長度

RSTART               由match函數所匹配的子字符串的起始位置

 

能自建函數庫

^  行首

$ 行尾

.   任意單個字符,除了換行符

*  該字符出現0或多次

?  表示該字符只能出現0次或1次

+  表示該字符至少出現一次

{n,m}   表示該字符出現n-m次

|   任意一個匹配都算成功

 

[chars]   字符組,表示裏面的任意一個字符

[^chars]   排除字符組,任意chars之外的一個字符

[a-z]  字符區間表示

特殊字符組

[[:alpha:]]     任意字母,不管大小寫

[[:alnum:]]     任意數字字母

[[:blank:]]      空格或製表符

[[:dight:]]     任意數字

[[:lower:]]     任意小寫字母

[[:lower:]]     任意大寫字母

[[:print:]]     任意可打印字符

[[:punct:]]     任意標點符號

[[:space:]]     任意空白字符:空格,製表符,NL,FF,VT,CR

 

mysql   

show processlist 查看正在運行的進程

mysql test -u test 

<span style="font-size:12px;">#!/bin/bash

MYSQL=` which mysql `
$MYSQL test -u test <<EOF
show tables;
select * from test;
EOF
</span>

 

<span style="font-size:12px;">$ sh mtest.sh 
Tables_in_test
customer
names
test
id	name
22	xxx
1	hello
</span>

 

<span style="font-size:12px;">#!/bin/bash

MYSQL=` which mysql `
if [ $# -ne 2 ];then
  echo " error"
else
    statement=" insert into test values ( $1, '$2' );"
    $MYSQL test -u test <<EOF
    $statement
EOF
    if [ $? -eq 0 ];then
       echo Data successfully added
    else
       echo Problem adding data
    fi
fi
</span>

 

<span style="font-size:12px;">$ sh mtest.sh  3 world
Data successfully added
</span>
<span style="font-size:12px;"></pre><pre code_snippet_id="572160" snippet_file_name="blog_20150106_10_7148079" name="code" class="sql">$ mysql test -u test -Bse 'show databases;'
information_schema
test
</span>

 

 

lynx   從遠程網站上提取信息

 

 

安裝   sudo yum install lynx

配置文件:/etc/lynx.cfg

Web   

HTTP 頭:    提供了有關連接中傳送的數據類型,發送數據的服務器以及連接中採用的安全類型的信息。

cookie:   存儲有關網站訪問的數據

lynx -dump  url    輸出網頁信息

cURL  使用特定URL來自動從命令行傳送文件

curl   url     提取整個html頁面

vim 設置16進制格式查看: %!xxd

 

yum install lrzsz   下載sz  ,上傳 rz

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章