linux基本知识2
vi三種模式:
1.瀏覽模式(命令模式)
2.輸入模式
3.末行模式
三種模式切換:
瀏覽模式(命令模式) ? ?按"i" "a" ? ? ?輸入模式
輸入模式 ? 按"esc" ? ? ? ?瀏覽模式(命令模式)?
瀏覽模式(命令模式) ? ?按shif+: ? ? ?末行模式
瀏覽模式經常使用的命令:
刪除一行 ?dd
刪除多行 ?ndd (n=1,2,3)
復制一行 ?yy
復制多行 ?nyy (n=1,2,3)
粘貼 ? ? ?pp
大寫寫切換 ?shift+~
光標文件開頭 :gg
光標文件結尾 :GG
排版 :gg=GG
末行模式使用命令:
wq :保存退出
q!:不保存退出
w ?文件名稱 :另存為
!shell命令 ? :運行shell命令
set nu :顯示行號
set nonu:取消顯示行號
u:撤銷上一次改動
%s/源字符/新字符/ :替換每一行第一次出現源字符
%s/源字符/新字符/g :替換全部源字符
%s/ad/88888/g
%s/\/home\/etc/1231232/g //轉移字符"\"
linux用戶管理
/etc/passwd:用戶信息(password憑證)
/etc/group:用戶組信息
/etc/shadow:用戶password及其password有效期
root: ? x ? ? ? ? :0 ? ?:0 ? :root: ? ?/root: ? /bin/bash
username ?password憑證 ? uid ?gid ? 初始組名 用主文件夾 ?shell腳本解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?釋器
root::0:0:root:/root:/bin/bash//取消"x",能夠不須要password
uid>=0 ?&& uid<=999 ?系統預留UID
uid>=1000 系統一般用戶
??
添加用戶命令
useradd/adduser ?username
useradd test//改動/etc/passwd ?/etc/shadow /etc/group ? /home/test
-d:指定用戶主文件夾名稱
-u:指定uid
-M:不會創建用戶主文件夾
初始組:
a.adduser創建用戶時,系統自己主動創建一個與username同名組
b.-g:選項指定新用戶所屬初始組(組必須先存在,可能與username一樣)
有效組:
a.-G:指定用戶除了屬于初始組之外的組
一個用戶能夠有多個有效組,僅僅能有一個初始組
-g:指定用戶初始組
adduser -g test test4 //初始組:test
-G:指定用戶有效組
adduser -G test ?test5//初始組:test5 ?有效組:test
設置/改動password
passwd username
[root@localhost etc]# passwd ?test
[root@localhost etc]# passwd ?//改動當前rootpassword
切換用戶
su
root -->一般用戶: su test//無需輸password
一般用戶-->root : su ?/su root//須要輸入root用戶password
[root@localhost etc]# su test
[test@localhost etc]$ su?
改變用戶信息
a.username
b.用戶提示信息
c.凍結/解凍用戶
usermod
usermod ?-l ? usernewname ? useroldname
usermod -c "sdfdsfdsfsd" ?test
usermod -L ?test //凍結用戶
usermod -U ?test //解凍用戶
添加組
groupadd ?
groupadd ?group1
刪除用戶
userdel
userdel ?test2//刪除username,用戶主文件夾不會刪除 rm -rf test2?
userdel ?-r test4//刪除username,用戶主文件夾也刪除
刪除組
groupdel?
groupdel group1
網絡常使用命令
/etc/sysconfig/network-scripts/ifcfg-p3p1 //網卡配置文件
網卡一般為:eth0 ?eth1 ethn
查看網絡信息:
ifconfig
設置IP地址:
1.設置永久性
? ?setup
? ?servie network restart|start|stop //必需要重新啟動服務,否則設置將無效
2.暫時 ifconfig ?p3p1 ?192.168.226.3 netmask 255.255.255.0
linux 與window 網絡通信:
1.查看網絡適配器(VMware Network Adapter VMnet1),ip:192.168.80.1//每臺機器不一樣
2.vm-->setting-->network adapter ?右下角 選擇第四項(customer adapter -->vm1(host only))
3.[root@localhost network-scripts]# ifconfig p3p1 ?192.168.80.3 netmask 255.255.255.0
4.[root@localhost network-scripts]# ping 192.168.80.1//linux ping window
5.ping ?192.168.80.3 //window ?ping linux
關閉防火墻:
linux:setup --->firewall config
samb共享服務
linux共享文件 window訪問
samb服務配置步驟:
1.[root@localhost network-scripts]# service ?start
2.[root@localhost home]# mkdir share ?//創建共享文件夾
3.[root@localhost etc]# cd /etc
? [root@localhost etc]# cd samba/
4.[root@localhost samba]# cp smb.conf ?smb.conf4 ?//備份配置文件
5.改動smb.conf配置文件
? ?vim ? smb.conf
? ?118 ? security = share
? ?322 [share]
323 ? ? ? ? comment= wshare
324 ? ? ? ? path= /home/share
325 ? ? ? ? public= yes
326 ? ? ? ? guest ok =yes
327 ? ? ? ? writable= yes
6.[root@localhost samba]# service smb restart//重新啟動服務
7.window ? 執行:\\192.168.80.3
8.改動權限
? ? [root@localhost /]# chmod ?777 home
? ? [root@localhost home]# chmod 777 share
? ? [root@localhost home]# setenforce 0
重新啟動機器后須要設置:
1.[root@localhost network-scripts]# ifconfig p3p1 ?192.168.80.3 netmask 255.255.255.0
2.[root@localhost samba]# service smb restart//重新啟動服務
3.window ? 執行:\\192.168.80.3
4.[root@localhost home]# setenforce 0
? ?
linux 進程管理命令
進程與程序差別
進程:動態 正在執行的程序
程序:靜態 實現代碼
查看顯示進程
ps
ps -aux?
a:顯示全部進程(前臺進程與后臺進程)
x:顯示內核進程(內核服務)
u:顯示當前用戶的進程
ef:顯示父親進程(PPID)
進程狀態:
S:睡眠狀態
R:正在執行狀態
D:睡眠狀態不可中斷
T:暫停
Z:僵死
"&":運行命令時,直接成為后臺進程
ctrl+C:結束當前進程
ctrl+D:把當前進程改為后臺進程
fg +pid //把后臺進程改變成前臺進程
fg +pid
[root@localhost share]# fg + 4641
top:動態查看當前進程狀況
pstree :樹結構顯示進程?
kill pid //進程ID殺死
kill -9 pid//強制殺死進程
killall bc//進程名
killall -9 bc//強制殺死進程
清屏
clear
echo -e '\033c'
作業:
1,創建組account,mis,sales
groupadd account
groupadd ?mis
groupadd sales
2,創建用戶a
adduser a
3,創建用戶b,不創建家文件夾
adduser -M b
4,創建用戶c,家文件夾為/home/cc
并設置初始化組為sales,有效組為mis
adduser -d /home/cc ? -g ?sales -G mis ? c
5,改動a用戶的password為a123456
echo a12345 | ?passwd a --stdin
6,把c用戶凍結
usermod ?-L c
usermod -U c
8,刪除sales組
groupdel sales
環境變量
為了保存系統一些信息,定義的變量
環境變量名通常是大寫
常見的環境變量
PATH:保存系統shell命令可運行文件路徑
HOSTNAME:主機名
LD_LIBRARY_PATH:動態庫載入路徑
USER:當前登錄username
查看環境變量命令
env
env | grep ?HOSTNAME
echo ?$HOSTNAME//輸出HOSTNAME變量值
echo ?HOSTNAME//輸出變量名HOSTNAME
echo $PATH
export 導入
讓改動環境變量新值有效
改動PATH環境變量值:
1.暫時改動
? [root@localhost etc]# export PATH=$PATH:/sbin:/bin
??
2.永久改動
? ?一般用戶:
? ?/home ?.bash_logout ?.bash_history
? ? ?.bash_profile(用戶環境變量或啟動程序設置) ?
? ? ?.bashrc ?
? ?root用戶:
? ? ?.bash_logout ?.bash_history
? ? ?.bash_profile(用戶環境變量或啟動程序設置) ?
? ? ?.bashrc ?
? ?etc: bashrc ?profile
? ?PATH永久設置:
? ? ? 用戶: ?.bash_profile?
? ? ? ? ? ? ? export PATH=$PATH:/sbin:/bin
? ? ? /etc: ? profile
? ? ? ? ? ? ? export PATH=$PATH:/sbin:/bin
自己定義換將變量
root@localhost etc]# export AA=12345
[root@localhost etc]# unset AA ?//刪除環境變量
[root@localhost etc]# export AA=12345
[root@localhost etc]# readonly AA
linux 解壓/壓縮
.tar.gz
.tar.gz2
.rpm
解壓/壓縮命令
tar
-x:解壓
-c:壓縮
-v:輸出壓縮\解壓的信息
-z:壓縮文件gzip/zip
-f:文件名稱(一般放在選項最后面)
-C:改變指定解壓文件的文件夾(默認解壓到當前文件夾)
壓縮文件:
tar -cvzf
tar -cvf
[root@localhost yj]#tar -cvzf ?abc.tar.gz ?a b c
[root@localhost yj]# tar -cvf ?abc.tar.gz2 ?a b c
解壓文件:
[root@localhost yj]# tar -xvzf abc.tar.gz?
[root@localhost yj]# tar -xvf abc.tar.gz2?
[root@localhost yj]#tar -xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz ?-C/usr/local
linux文件安裝
a.帶源代碼安裝
b.解壓安裝
帶源代碼安裝步驟:
以安裝:sqlite-3.3.7.tar為例:
1.tar -xvzf sqlite-3.3.7.tar.gz ?-C /usr/local
2.cd sqlite-3.37
3.[root@localhost sqlite]# ./configure ?--prefix=/usr/local/sqlite //生成一個makefile文件
4.make //編譯
5.make install //安裝
RPM包(reahat package manager)
rpm 經常使用選項:
-q:查詢
-a:全部包
-i:安裝
-e:刪除
-v:驗證
-h:顯示安裝進度
vim-filesystem-7.3.315-1.fc16.i686.rpm
vim-filesystem:包名(功能)
7.3.315-1:版本號
fc16:os版本號
i686:處理器類型
rpm ?-qa ?包名//依據包名搜索安裝包
rpm ?-ivh vim-filesystem-7.3.315-1.fc16.i686.rpm
rpm ?-evh 包名
linux掛在cdrom步驟:
1.vm-->setting-->cd dvd ? 勾選connected ? 指定虛擬鏡像文件
2.[root@localhost /]# mount /dev/cdrom ? /media
3.cd media
正則表達式
一種用來來描寫敘述文本模式的特殊語法
由普通字符(比如a到z 0-9)以及特殊字符(稱為元字符,如.*[]^{}\+?|() $等)組成
^a
b$
@.qq.com
abcd123qwer
*
正則表達式特殊符號:
^:以字符開頭 如:^a ?^abc ?^aabc
$:以字符結尾 如:cdf$ ?cf$ f$
.:匹配隨意單個字符: 如:a.d 匹配:a1d aad add?
*:前面一個字符反復出現0次/1次/多次
? 如:da*cd ?匹配:dcd ? dacd daacd daaaacd?
\:轉義字符 ?如:a\.c
\{n\}:前面單個字符連續出現n次(n=0,1,2...)
\{n,\}:前面單個字符至少連續出現n次(>=n)
\{n,m\}:前面單個字符連續出現次數為:n<=次數<=m
[list]:從list集合中選擇隨意一個字符 a[123]c ?a1c a2c a3c
[list1-list2]:從list1-list2區間集合中選擇隨意一個字符?
? ? ? ?a[0-9]z ?a0c a1c ... a9c
? ? ? ?a[A-Z]z ?aQc aAc ... aZc
[^list]:除開list集合中隨意字符 ?a[^0-9]b ? aab ?a\+b
+:前面單個字符僅僅能出現1次 ?多次 ?a+b ? ab aab aaab
?:前面單個字符僅僅能出現0次 ?1次 ? a?b ? b ? ab
|:二選1 ?1a|b4 ?1a4 ?1b4
(|):多選1 ? ? ?1(ab|cd|ef|23)9 1ab9 ?1cd 9 1ef9 1239w
/d:數字[0-9]
/D:非數組[^0-9]
/w:字母[a-zA-Z]
/W:非字母[^a-zA-Z]
^a[0-9]\{2\}[A-Z]\{3,4\}s$
a23ASDs
a23ASDFs
abcd123qwer
[a-zA-Z]\{4\}[0-9]\{3\}[a-zA-Z]\{4\}
grep ?搜索查找字符命令
-n:輸出目標字符所在行號
-c:統計目標字符查找出現的次數
-i:忽略大寫和小寫
-a:在二進制文件查找
[root@localhost yj]# grep ?'root' ?passwd
[root@localhost yj]# grep -n 'root' ?passwd
[root@localhost yj]# grep -ni 'root' ?passwd
[root@localhost yj]# grep -n ?'t[ae]st' ?passwd
[root@localhost yj]# grep ?-n ?'ro\{2,4\}t' ?passwd
[root@localhost yj]# grep -n 'r[^g]o' ?passwd
[root@localhost yj]# grep -n 'r[^a-z]o' passwd
[root@localhost yj]# grep -n 'r[^a-z0-9A-Z]o' passwd
[root@localhost yj]# grep -n ?'^$' ?passwd
[root@localhost yj]# grep -n '^r' ?passwd
[root@localhost yj]# grep -n ?'^[0-9]' passwd
[root@localhost yj]# grep -n ?'^[a-zA-Z]' passwd
[root@localhost yj]# grep -n '\.$' passwd
egrep ?查找,主要是適合(+ ?
* | (|))
[root@localhost yj]# egrep ?-n 'ro+t' ?passwd
[root@localhost yj]# egrep ?-n 'ro?t' ?passwd
[root@localhost yj]# egrep ?-n 'ro*t' ?passwd
練習:
寫出一個正則表達式:
?字母'm'開頭后面是4個連續的隨意字母后面是':'后面是3個連續的字母'a'最后是's'結尾
?[root@localhost yj]# grep -n ?'^m[a-zA-Z]\{4\}:a\{3\}s$' ?passwd
awk ?使用
依據指定符號對一行數據分解成多個數據域
數據域:數據行依據指定符號分解之后產生的子數據
-F ?符號
awk -F ,
awk 默認分解符號是空格
awk 命令語法:
awk ?-F ?分解符號 ?'命令' ?數據源(文檔 管道輸入數據)
特殊符號
$0:全部數據域
$1:第一個數據域
$2:第二個數據域
$3:第三個數據域
[root@localhost yj]# awk ?-F , ?'{print $4}' ?awkfile?
[root@localhost yj]# awk ?-F , ?'{print $0}' ?awkfile
[root@localhost yj]# awk ?-F , ?'{print $1"\t"$3"\t"$5}' ?awkfile?
[root@localhost yj]# awk ?-F , ?'{print $1" "$3" "$5}' ?awkfile?
[root@localhost yj]# awk ?-F , ?'{print $1,$3,$5}' ?awkfile?
[root@localhost yj]# awk '{print $1}' ?awkfile?
awk ? 運行命令組成部分:
1.BEGIN
2.數據行
3.END
[root@localhost yj]# awk -F , 'BEGIN{ print "adfdsfdsf"}' awkfile?
[root@localhost yj]# awk -F , 'BEGIN{ print "name\tscore"} {print $1"\t"$6}' awkfile?
[root@localhost yj]# awk -F , 'BEGIN{ print "name\tscore"} {print $1"\t"$6} END{print "total="}' awkfile?
[root@localhost yj]# awk -F , 'BEGIN{total=0} {print $1"\t"$6;total=total+$6} END{print "total="total}' awkfile?
[root@localhost yj]# awk -F , ?'{if($4=="Yellow") print $0;else print "error"}' ?awkfile?
[root@localhost yj]# awk -F , '{if($4=="green" || $4=="Green") print $0}' awkfile?
[root@localhost yj]# awk -F , '{if($4 ~/[gG]reen/) print $0}' awkfile?
[root@localhost yj]# awk -F , '$4~/[gG]reen/' awkfile?
[root@localhost yj]# awk -F , '{if($4 !~/[gG]reen/) print $0}' awkfile?
[root@localhost yj]# awk -F , '{if($6<=$7) print $0}' ?awkfile?
[root@localhost yj]# awk -F , '{if($5<=$6 && $6<=$7) print $0}' ?awkfile?
[root@localhost yj]# awk -F , '$1~/^...a/' awkfile?
[root@localhost yj]#awk -F , '$4 ~ /Yellow|Brown/' awkfile
[root@localhost yj]#awk -F , '$0 ~ /^J/' awkfile
[root@localhost yj]# cat awkfile ?| ?awk -F , '{print $2}'
[root@localhost yj]# echo "a,b,c,d" | awk -F , '{print $2}'
[root@localhost yj]# echo "a,b,c:1,2,3:e,r,t" | awk -F : 'print $1"\n"$2"\n"$3}' | awk -F , '{print $2}'
[root@localhost yj]# data=`echo "a,b,c:1,2,3:e,r,t" | awk -F : ? ? ? ? '{print $1"\n"$2"\n"$3}' `
//反 `` 把``中的命令運行的數據賦值給變量
[root@localhost yj]# data=`echo "a,b,c:1,2,3:e,r,t" | awk -F : '{if($0!~/^$/) print $1"\n"$2"\n"$3}' | awk -F , '{print $2}'`
awk內部特殊變量
FILENAME:文件名稱
NR:行數
NF:列數
ARGC ? ? ? ? ? 命令行參數個數
ARGV ? ? ? ? ? 命令行參數排列
ENVIRON ? ? ? ?支持隊列中系統環境變量的使用
FILENAME ? ? ? awk讀取的文件名稱
FNR ? ? ? ? ? ?當前文件已處理的記錄行數
FS ? ? ? ? ? ? 設置域分隔符。相當于-F
NF ? ? ? ? ? ? 域的列數 ?$NF標識最后處理域
NR ? ? ? ? ? ? 已處理的記錄總行數
OFS ? ? ? ? ? ?設置輸出字段域分隔符
RS/ORS ? ? ? ? 換行符
[root@localhost yj]# awk -F , '{print NR "\t" NF "\t" FILENAME}' ?awkfile
[root@localhost yj]# awk -F , '{if(NR==3) print $0}' ?awkfile?
練習:
1.數據/etc文件夾下全部一般文件大小總和
[root@localhost etc]# ls -l | grep ?'^-' | awk ?'BEGIN{total=0} {total=total+$5} END{print total/1024}'
sed
sed是在緩沖區中對文檔中的內容 改動 添加 ?刪除 替換,改動的結果都不會影響到原文件,利用管道把改動的內容提交到原文件里
sed語法
sed ?-nfi 'commad' ? 文件名稱
-n:僅僅輸出sed改動的內容
-f:直接改動文件里內容(非緩沖區)
-i:直接對文件編輯
sed經常使用的命令
d:刪除
a:添加一行和多行
p:打印輸出
c:替換數據行
i:插入新行
s:替換數據行的局部數據
g:全部字符
刪除行
[root@localhost yj]# sed ?'1d' awkfile //刪除第一行
[root@localhost yj]# sed ?'1,2d' awkfile //刪除第一行到第二行
[root@localhost yj]# sed ?'$d' awkfile //刪除最后一行
[root@localhost yj]# sed '2,$d' awkfile?
輸出行
[root@localhost yj]# sed ?-n '1p' awkfile //輸出第一行
[root@localhost yj]# sed ?-n '1,2p' awkfile?
[root@localhost yj]# sed -n '$p' awkfile?
模式查找
root@localhost yj]# sed -n '/green/p' awkfile?
[root@localhost yj]# sed -n '/\//p' awkfile?
添加數據行
oot@localhost yj]# sed ?'1a qweqwewq213123213' ?awkfile?
[root@localhost yj]# sed ?'1,2a qweqwewq213123213' ?awkfile //在第一行和第二行后面分別添加一行新數據
[root@localhost yj]# sed ?'1a qweqwewq213123\n21376567567' ?awkfile //添加多行數據
替代一行或多行
[root@localhost yj]# sed '1c 3123123' awkfile?
[root@localhost yj]# sed '1,2c 3123123\nqqwqw' awkfile?
直接編輯文件
[root@localhost yj]# sed -i ?'$a 123123' awkfile
對一行局部數據替換
[root@localhost yj]# sed -n ?'/green/p' awkfile ?| sed -i ?'s/green/aaaa/g' awkfile?
[root@localhost yj]# sed -n ?'/aaaa/p' awkfile ?| sed -i ?'s/aaaa//g' awkfile?
獲取字符長度
[root@localhost yj]# name=yj
[root@localhost yj]# echo ?${#name}
截取字符
${name:startpos:charlen}//startpos從0開始 ?charlen所取字符個數
[root@localhost yj]# echo ?${name:1:4}
shell腳本語句
shell腳本文件
/bin/bash:shell腳本文件解釋器
shell腳本文件特點:
1. .sh結尾
2.shell腳本文件能夠直接運行
#!/bin/bash//shell腳本文件解釋器
#ls -l //"#"凝視符號
shell腳本運行:
1.sh ?shell腳本文件
2. [root@localhost shell2]# chmod 755 sh1.sh //授予運行權限
? ?[root@localhost shell2]# ./sh1.sh
shell 腳本變量定義
變量名=值//變量名通常是小寫,與環境變量區分
輸出變量值
echo $變量名
name=aaa
age=20
score=34.56
echo '$name' //輸出$name ?
echo "$age"
echo '$s"co"re'
echo "$n'am'e";
age=20;變量名一般用'{}'括起
echo "my age is ${age}ee"
read 從輸入設備讀取數據給變量
read 變量名1 ?變量名2//輸入值是,空格區分值分配,假設變量已經分配完畢,最后全部的值賦給最后一個變量
shell腳本參數值
./sh1.sh abcf 121 466
位置參數獲取值:
$0:運行文件名稱
$1:獲取第一個參數值
$2:獲取第二個參數值
$@:獲取全部的參數值
$*:獲取全部的參數值
幾個特殊符號:
$$:獲取當前進程ID(pid)
$?:上一次命令運行成功與否(0:成功 非0:失敗)
echo 輸出控制
\n:換行
\t:tab
\c:下一個echo不換行輸出
-e ?:針對 \n ?\t ?\c 特殊輸出
``
[root@localhost shell2]# da=`date`
語句結構:
a.順序
b.選擇
? if ?條件
? ? then ?
? ? ? ? //滿足條件運行語句
? else
? ? ? ? //不滿足條件運行語句
? fi
? ?if ?條件;then ?
? ? ? ? //滿足條件運行語句
? ?else
? ? ? ? //不滿足條件運行語句
? ?fi
? ?if ?條件;then ?
? ? ? ? //滿足條件運行語句
? ?elif 條件
? ? ?then ? ? ? ?
//滿足條件運行語句
? ?else
? ? ? //不滿足條件運行語句
? ?fi
條件
條件格式:
1.test 比較
2.[ 比較 ]
比較的結果:$?
文件測試:
-d 測試文件是否是文件夾文件
-f 測試文件是否存在
-w 測試文件是否可寫
-r 測試文件是否可讀
-s 測試文件是否非空
-L 測試文件是否是符號連接?
-x 測試文件是否可運行
[root@localhost shell2]# test -d aaaa
[root@localhost shell2]# echo $?
[root@localhost shell2]# [ -d aaaa ]
[root@localhost shell2]# echo $?
數字比較
-eq:相等
-ne:不等
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
字符比較
= :相等
!=:不等
-z:空字符
-n:非空字符
-a:多個條件而且
-o:多個條件或者
case語句
case語法:
case ?var ?in
?value1) 運行語句;;
?value2) 運行語句;;
esac
[root@localhost shell2]# echo `expr $a + $b `
[root@localhost shell2]# echo $[$a+$b]
[root@localhost shell2]# echo $[a+b]
[root@localhost shell2]# let 'a=1+2'
[root@localhost shell2]# echo $a
練習:
case實現+-*/四則運算
c.循環
總結
以上是生活随笔為你收集整理的linux基本知识2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs+express4.0+mo
- 下一篇: copy与mutableCopy的内存管