大資料技術學習筆記之linux基礎3-軟體管理與shell指令碼開發
阿新 • • 發佈:2018-12-07
一、Linux軟體管理
-》壓縮檔案管理
-》常見壓縮格式
-》zip/rar
-》zip/.tar.gz/.tar.bz2
-》unzip
-》tar:打包或者解包的命令
-》gzip
-》字尾:.gz
-》壓縮:gzip filename
壓縮以後不保留原始檔
-》解壓:gunzip filename.gz
-》bzip2
-》字尾:.bz2
-》不支援壓縮資料夾
-》gzip打包並且壓縮:tar -zcvf target.tar.gz /directory
-》解壓:tar -zxvf source.tar.gz -C /target_dir
.tar.gz / .tgz
-》bzip打包並且壓縮:tar -jcvf target.tar.bz2 /directory
-》解壓:tar -jxvf source.tar.bz2 -C /target_dir
-》常用引數
z:壓縮為gzip格式
j:壓縮為bzip2格式
c:打包
x:解包
v:顯示
f:檔名 ,如果使用該引數,該引數必須是最後一個引數,該引數後面一定要跟檔名
t:text用於檢視壓縮檔案中的內容
-》軟體安裝
-》windows上的軟體型別:exe、msi、資料夾、bat(指令碼)
-》Linux的軟體型別:rpm、dpkg、資料夾、原始碼
-》rpm:Redhat系列最常見的一種軟體格式
-》名稱
軟體名稱-版本.作業系統.作業系統版本.格式
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
devel、lib、util
-》檢視:qa
rpm -qa | grep java
-》安裝:ivh
rpm -ivh ****.rpm
rpm -ivh Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
-》解除安裝:e
rpm -e zlib-devel-1.2.3-29.el6.x86_64
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
--nodeps:表示不考慮依賴
-》檢視某個檔案的安裝包:qf
rpm -qf command
rpm -qf /bin/ls
-》檢視某個軟體的安裝檔案
rpm -ql
-》rpm無法解決軟體安裝依賴的問題
-》yum:通過安裝源進行安裝,自動解決依賴的問題
-》安裝源=軟體庫(本地的、聯網)
-》檢視:
yum list : 檢視當前yum源可安裝的所有軟體
-》國內的:網易163、搜狐、阿里
Centos-6-Default.repo
/etc/yum.repo.d
-》檢視已安裝的軟體
yum list installed
-》解除安裝:
yum remove [-y] soft_name
-》安裝:
yum install [-y] soft_name
-》資料夾
-》解壓=安裝
-》配置=修改檔案
-》啟動
-》原始碼
-》c/c++
-》預編譯:configure
./configure --prefix=/usr
-》編譯:make
-》安裝:make install
-》java
-》Maven
mvn complie
二、運算子與表示式
-》環境變數
-》全域性環境變數:對所有使用者都生效
/etc/profile
-》使用者環境變數:只對該使用者生效
~/.bash_profile
-》Linux指令碼中的變數
-》定義變數的格式
var=value
-》列印變數
echo ${var}
$var
-》變數型別:沒有型別
a=1
a=aaaa
a="hello world"
-》預定義的變數
-》$1-$9:表示指令碼的第一個到第九個引數
-》$0:表示當前指令碼的名稱
-》$!:表示當前程序的pid
-》$?:表示上一條命令執行的結果
0:執行成功
非0:不成功
-》$#:引數總個數
-》
-》$*:所有引數,整體
-》編寫指令碼:
-》頭部:#!/bin/bash
-》內容
-》定義變數:
-》變數名稱可讀
-》系統變數大寫
-》萬用字元與正則
-》萬用字元
*:匹配多個字元
?: 匹配單個字元
ls find cp
-》正則表示式
^:表示以什麼開頭
$:表示以什麼結尾
.:匹配單個字元
*:匹配多個字元
.*
[]:範圍
[0-9]:表示0-9之間的任意一個數字
[a-z]
[A-Z]
\:轉義
-》支援的命令
grep:過濾資料行
grep 'r..t' /etc/passwd
grep '[0-9]:[0-9]' /etc/passwd
sed:用於資料行的處理
sed 's/root/roooot/g' /etc/passwd
ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bc.*//g' | sed 's/ //g'
awk:用於資料列的處理
awk -F ':' '{print $1}' passwd
awk '/^root/{print $3}' passwd
-》邏輯連線符
-》並列:&&,A執行成功的情況下,B才會執行
ls /etc/passwdd && cat /etc/passwd
-》或者:||,A執行失敗的情況下,B才會執行
ls /etc/passwd || cat /etc/passwd
-》沒有關係:; A的結果不影響B
-》數值運算
-》中括號
$[ a+b ] $[ $a+$b]
-》圓括號
$((a+b)) $(($a+$b))
-》內建判斷測試
-》字串
= 、 != 、 \>、 \< 、 -z、 -n
[ $a = $b ]
-z : 判斷是否為空,如果為空返回true,如果不為空返回false
-n:判斷是否不為空,不為空返回true,如果為空返回false
-z $a
-》數值
中括號:eq nq gt lt ge le
[ $a -eq $b]
圓括號:==,!= ,>,<
-》檔案判斷:
-e : 判斷某個檔案是否存在
-f :判斷是否為一個檔案
-d : 判斷是否為一個目錄
-r :判斷是否可讀
-w :判斷是否可寫
-x : 判斷是否可執行
-》表示式邏輯連線符
-a :與
-o :或
[] -a []
-》時間日期命令
-》檢視時間:
date yyyy-MM-dd HH:mm:ss
date +"%Y-%M-%d"
獲取昨天的日期:date -d '1 days ago' +"%Y-%m-%d"
date -d '-1 day' +"%Y-%m-%d"
-》設定時間
date -s "YYYY-MM-dd HH:mm:ss"
三、shell指令碼的開發
-》批處理
-》自動化執行
-》開發:
-》頭部
#!/bin/bash
-》內容
-》變數
-》迴圈
for
while
-》判斷
if
case
-》函式
-》退出
exit
-》執行:
-》執行檔案:./filename.sh
-》檔案必須有可執行許可權
-》必須寫頭部
-》通過命令執行檔案
sh
bash
-》for迴圈
for 條件
do
exec command
done
for((i=1;i<y;i++))
do
exec command
done
-》判斷
if []
then
exec
elif []
elif []
else
fi
case 變數 in
value1)
exec command1;;
value2)
exec command;;
*)
exec command;;
esac
四、Linux定時任務
—》方便定時去執行Linux任務
-》安裝crontab
-》編輯定時任務:crontab -e
-》格式
* * * * * command/shell
分 時 日 月 周
00-59 00-23 1-31 1-12 0-7
-》特殊情況
每2小時:* */2 * * *
每天3,4,5點執行:00 3,4,5 * * *
每天3到5點執行:* 3-5 * * *
-》刪除定時任務
crontab -e 刪除對應的任務即可
crontab -r :刪除所有定時任務