根目錄下的常用子目錄作用
/ 虛擬目錄的根目錄
/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