歡迎您光臨本站 註冊首頁

Linux 基礎知識(三)

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

安全上下文:指的是一類定義某個進程允許做什麼的許可和許可權的集合.
Ctrl c 取消命令
命令行編輯快捷方式: Ctrl a 快速將游標移到命令行行的行首
Ctrl e 快速將游標移到命令行行的行尾
Ctrl --> <-- 一次將游標移動一個單詞
Ctrl k 刪除游標所在位置到尾部的內容
Ctrl u 刪除游標所在位置到首部的內容
Ctrl l 或者 clear 清屏


Gllobing 文件名通配符
* 匹配人一個任意長度的字元
? 匹配任意單個字元
[] 匹配範圍
[:lower:] 匹配小寫字母
[:upper:] 匹配大寫字母
[:digit:] 匹配數字
[:alnum:] 匹配字母數字
[:punct:] 匹配標點
[:space:] 匹配空格鍵
file 查看文件內容的類型
~ 當前此用戶的家目錄
shell 類型
bsh
sh
ksh
bash
Cat 連接並輸出文件的內容,整個內容全部顯示
-n 顯示行號
-A = --show -all
-E 顯示行結尾符
-V 顯示沒有列印的操作
cat /etc/shells 顯示可用Shell


變數
bash中 都是為char型
分為本地變數,環境變數,位置參數變數,特殊變數
1.變數的使用


變數名:數字,字母,下劃線組成,只能以字母開頭,區分大小寫.
#NAME=jarry (設置NAME變數內容為jarry)
#echo $NAME (取變數內容)
jarry

#set CLASS=3 (設置CLASS變數內容為3)
#unset CLASS (取消設置的變數)
引用:去變數值
“”弱引用(變數將依然作為變數)
‘’強引用 (變數將不再作為變數)
`` 命令引用 (引用命令將作為內容付給變數)
echo 顯示變數值
2.環境變數 (能被Shell及子Shell共享)
#export CLASS=3
#echo $CLASS
3

#NAME=jerry
readonly NAME (設置只讀變數,不能刪)
#export (顯示環境變數)
3.特殊變數
echo $? 顯示上一個命令返回狀態值 (若正確,則為0:;若不正確,則為1~255之間的數.)
echo $$ 顯示當前進程號
命令別名
alias

寫腳本:
格式
#!/bin/bash
……
……
……

set -x 調試執行(此命令執行后開始追蹤)
set x 調試命令(到此為止,調試結束,此命令執行完結束)
bash 文件名 在沒有執行許可權時依然可以執行
bash -x 文件名 可調式運行

4.位置參數命令
$1 ${10} ……
I/O 及管道
不指定時為標準輸入/標準輸出 標準錯誤輸出


I/O 重定向: > 輸出重定向
< 輸入重定向
1> 標準輸出重定向
2> 標準錯誤輸出重定向
&> 無論標準還是錯誤都放在一個文件中,原文件中的內容被覆蓋掉了
set -C 拒絕信息覆蓋
set C 允許別人信息覆蓋
>1 若別人用set -C 時則強行覆蓋
>> 追加重定向,吧新的內容寫入文件尾部
<< here document 在腳本生成文件


文本處理工具
Cat
-A
-n
-s 壓縮空白行
more 分頁查看
less 既能向前查看,也能向後查看,還能搜索
tail 查看尾部十行
head 查看首部十行

GREP 全面搜索正則表達式並列印出來
-v 匹配到的不顯示,匹配不到的顯示
-i 在搜索時忽略大小寫
-An 匹配到的下邊n行也顯示出來
-Bn 匹配到的上邊n行也顯示出來
-Cn 匹配到的上邊n行,下邊n行都顯示出來
WC 位元組、單詞、行的統計
-l 行的統計
-w 單詞的統計
-c 位元組的統計
條件測試
整數 -eq 等於
-ne 不等於
-gt 大於
-eg 大於等於
-lt 小於
-le 小於等於
字元串 = 等於
!= 等於
> [["$a">"$b"]]
< ["$a"<"$b"]
-z 空為真
-n 空為假


文件 -f 是否為普通文件
-d 是否為文件
-e 是否存在
-x 是否可執行
-w 是否可寫
-r 是否可讀
-o 測試此文件屬主是否是發起命令的人
組合條件 -o 表或
-!表非
-a 表與
&& 只能連接兩個完整的命令
短路操作符 && 表前邊條件只要有假,則後邊的不執行
|| 表前邊條件只要有真,則後邊的不執行
grep -E 表擴展的正則表達式
grep -F 快速搜索匹配
egrep (= grep -E)
{} 次數匹配
() 字元組匹配
1~n 次匹配字元
? 0次或n次匹配字元
sort 排序 默認按升序排序(拍完序厚輸出結果,對原文件內容無影響)
-o 把輸出結果保存在指定位置
-r 逆序
-n 以數值方式排序
-f 忽略大小寫
-u 把重複的去掉(排完序后)
-t 默認以空格為分割符,可以指定
-k 選取段
uniq 取出連續的重複行
-c 可以顯示每行所被重複的次數
-u 只顯示那些不被重複的行
-d 只顯示那些重複的行
aspell 檢查該文件是否正確
aspell check filename
tr 翻譯 轉換
sed 行編輯器 (非互動式,沒有破壞性,不修改原文件)
#sed '/root/p' p 表示顯示出來
-n 只顯示匹配到的內容
-d 刪除行
a 在當前行后添加一行或多行
i 在當前行前添加一行或多行
s 用一個字元串替換另一個字元串 如:sed 's/root/ROOT/' filname 用ROOT換掉root
s/root/ROOT/g g表示把所有出現的都替換掉


-i 表示對原文件所匹配到的替換(直接修改原文件)


VI編輯器
分為三種模式:
命令行模式
編輯模式
末行模式
三種模式之間的轉換:
進入命令行模式-->輸入i a
進入末行模式-->Esc
命令-->末行 :
末行-->命令 Esc
:q 退出
Ctrl z 掛起推出
shift z 退出

命令行模式下
j 向下移動游標
k 向上移動游標
l 向右移動游標
h 向左移動游標
行內移動:^ o $
^ 移動到行首
o 移動到行首(絕對行首,有空隔的移到空格前行首)
$ 行尾(絕對行尾.有空格的把空格計算為字元)
以單詞移動:w b e
w:到下一個單詞的詞首
b:若游標在詞首,則到上一個單詞的詞首.若游標不在詞首, 則到當前單詞的詞首
e:若游標在詞尾,則到下一個單詞的詞尾,若游標不在詞尾, 則到當前單詞的詞尾
行間移動
nG : 1G 移動一行, 100G 移動100行
末行模式下:
:n 跳到第n行
按照語句跳轉:> <
段落間的跳轉 } {
命令--> 輸入:
i :所在出的前面加
I :在游標所在處的前面行首
a : 在游標所在出的後面加
A :在游標所在出的行尾
o :在游標所在出的下一行
O :在游標所在出的上方開啟一行,並轉為輸入狀態
c :先刪除一些東西,並轉入輸入狀態
C :刪除所在行轉入輸入狀態


在命令狀態下:
r:替換一個單詞
R:覆蓋模式
刪除操作:
x 刪除游標所在處的往後字元
dd 刪除所在行
D 只刪除內容,位置不變
X 刪除游標所在處的往前的字元
ndd 刪除n行
複製內容:
Y 複製
p 複製在這行的上方
P 複製在這行的下方
移動內容 d
在末行模式下(刪除)
:10 ,100 從10-100行
:. , 100d 從當前到向下100行
:%d 刪除全文
可視模式
v 以字元為單位
V 以行為單位
查詢
n 向下查詢 N 向上查詢
撤銷 u 撤銷最近一次操作
Ctrl r 撤銷上一次的撤銷動作
. 重做

Shell作業
1,shell
if
三個數,最大數是誰?
代碼:
#!/bin/bash
if [ $1 -gt $2 ];then

if [$3 -gt $1 ];then
echo "MAX is $3"
else
echo "MAX is $1"
fi
elif [ $2 -gt $3 ];then
echo "MAX is $2"
else
echo "MAX is $3"

fi

2.shell
for
ping C類網
代碼:
#!/bin/bash
for I in {1..254};do
if ping -c1 -w1 192.168.234.$I &> /dev/null;then
echo "$I is online."
else
echo "$I is offline."


fi
done

ping B類網
代碼:
#!/bin/bash
for M in {1..254};do
for N in {1..254};do
if ping -c1 -w1 192.168.$M.$N &> /dev/null;then
echo "192.168.$M.$N is online. else
echo "192.168.$M.$N is offline."
fi
done
done

3.提示用戶通過鍵盤輸入一個用戶名,來判斷這個用戶是否存在,如果存在就顯示一下用戶默認的shell
代碼:
#/bin/bash
read -p "Please input your username:" A
if grep "^$A>" /etc/passwd &> /dev/null ; then
echo "The user's shell is:"
grep "^$A>" /etc/passwd | cut -d: -f7
else
echo "The user not exist,please give me a correct username!"
fi

4.要求用戶輸入一個文件名,判斷如果此文件是個普通文本文件,顯示共有多少行
代碼:
#!/bin/bash
let COUNT=0
read -p "Please enter a file:" FILE
if [ -e $FILE -a -f $FILE ];then
while read LINE
do
COUNT
done < $FILE
echo "The file is in total of $FILE lines."
fi


5.寫個腳本 通過查找“/etc/sysconfignetwork-scripts/ifcfg-eth0”
如果BOOTPROTO=dhcp,bootp, 改為 static

修改


IPADDR=

NETMASK=

service network restart

ifdown eth0 && ifup eth0
代碼:

#!/bin/bash

declare I J K
let I="BOOTPROTO=dhcp"
let J="BOOTPROTO=bootp"

let K=`grep "^<BOOTPROTO" /etc/sysconfig/network-scripts/ifcfg-eth0`
if [ "$K" == "I"] || [ "$k" == "$J" ];then
echo "You doesn't direct IP."
else
sed 's/IPADDR.*/IPADDR=192.168.145.127/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed 's/NETMASK.*"/NETMASK=255.255.255.0' /etc/sysconfig/network-scripts/ifcfg-eth0
fi

sed -e 's/IPADDR.*/IPADDR=192.168.145.127/g' -e 's/NETMASK.*/NETMASK=255.255.255.0/g' /etc......../ifcfg-eth0


6.100內偶數之和
#!/bin/bash
let SUM=0
let I=0
while [ $I -le 100 ];do
let SUM =$I
let I =2
done
echo "The SUM is $SUM"


[火星人 ] Linux 基礎知識(三)已經有615次圍觀

http://coctec.com/docs/linux/show-post-48048.html