這篇文章主要介紹“Linux磁盤管理和Shell編程知識(shí)點(diǎn)有哪些”,在日常操作中,相信很多人在Linux磁盤管理和Shell編程知識(shí)點(diǎn)有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux磁盤管理和Shell編程知識(shí)點(diǎn)有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)是專業(yè)的鹿泉網(wǎng)站建設(shè)公司,鹿泉接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鹿泉網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
磁盤管理
Linux磁盤管理常用三個(gè)命令為df、du和fdisk。
列出文件系統(tǒng)的磁盤使用狀況
列出文件系統(tǒng)的磁盤使用狀況 - 「df」。
文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) udev 1.9G 0 1.9G 0% /dev tmpfs 393M 6.3M 386M 2% /run /dev/sda1 19G 13G 5.5G 69% / tmpfs 2.0G 300K 2.0G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup tmpfs 393M 4.0K 393M 1% /run/user/108 tmpfs 393M 60K 393M 1% /run/user/1000 /dev/sr0 1.6G 1.6G 0 100% /media/maoli/Ubuntu 16.04.6 LTS amd64
磁盤分區(qū)表操作
磁盤分區(qū)表操作 - 「fdisk」。
maoli@ubuntu:~$ sudo fdisk -l [sudo] maoli 的密碼: Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xdc219461 設(shè)備 啟動(dòng) Start 末尾 扇區(qū) Size Id 類型 /dev/sda1 * 2048 39942143 39940096 19G 83 Linux /dev/sda2 39944190 41940991 1996802 975M 5 擴(kuò)展 /dev/sda5 39944192 41940991 1996800 975M 82 Linux 交換 / Solaris
磁盤分區(qū)工具
磁盤分區(qū)工具 - 「parted」。
格式化文件系統(tǒng)
格式化文件系統(tǒng) - 「mkfs」。
maoli@ubuntu:~$ mkfs -t ext4 -v /dev/sdb
-t - 指定文件系統(tǒng)的類型。
-c - 創(chuàng)建文件系統(tǒng)時(shí)檢查磁盤損壞情況。
-v - 顯示詳細(xì)信息。
文件系統(tǒng)檢查
文件系統(tǒng)檢查 - 「fsck」。
轉(zhuǎn)換或拷貝文件
轉(zhuǎn)換或拷貝文件 - 「dd」。
掛載/卸載
掛載/卸載 - 「mount」 / 「umount」。
創(chuàng)建/激活/關(guān)閉交換分區(qū)
創(chuàng)建/激活/關(guān)閉交換分區(qū) - 「mkswap」 / 「swapon」 / 「swapoff」。
參考菜鳥教程:“https://www.runoob.com/linux/linux-filesystem.html”
Shell
Shell是一個(gè)連接用戶和操作系統(tǒng)的應(yīng)用程序,它提供了人機(jī)交互的界面(接口),用戶通過(guò)這個(gè)界面訪問(wèn)操作系統(tǒng)內(nèi)核的服務(wù)。Shell腳本是一種為Shell編寫的腳本程序,我們可以通過(guò)Shell腳本來(lái)進(jìn)行系統(tǒng)管理,同時(shí)也可以通過(guò)它進(jìn)行文件操作。
互聯(lián)網(wǎng)上有大量關(guān)于Shell腳本的相關(guān)知識(shí),我不打算再此對(duì)Shell腳本做一個(gè)全面系統(tǒng)的講解,我們通過(guò)下面的代碼來(lái)感性的認(rèn)識(shí)下Shell腳本就行了。
新建Shell腳本
打開文本編輯器(可以使用 vi/vim 命令來(lái)創(chuàng)建文件),新建一個(gè)文件 test.sh,擴(kuò)展名為 sh(sh代表shell)。
maoli@ubuntu:~$ vim test.sh #!/bin/bash echo "Hello World !"
輸入一個(gè)echo "Hello World !",這個(gè)語(yǔ)法和php很相似。運(yùn)行一個(gè)sh需用 chmod +x腳本具有執(zhí)行權(quán)限
maoli@ubuntu:~$ chmod +x ./test.sh maoli@ubuntu:~$ ./test.sh Hello World !
變量
變量名不加美元符號(hào)($,PHP語(yǔ)言中變量需要)。比如在shell中 定義變量name = Runsen,而在php就是$name = Runsen使用一個(gè)定義過(guò)的變量,只要在變量名前面加美元符號(hào)即可,如:$name或者${name}。變量名外面的花括號(hào)是可選的,加不加都行。
變量支持字符串類型,浮點(diǎn)等類型,常見有這 3 個(gè)前綴:
unset:刪除變量
readonly:標(biāo)記只讀變量
export:指定全局變量
#!/bin/bash # 定義普通變量,沒(méi)有特殊字符或者空格,可以不用引號(hào) CITY=Dongguan # 定義全局變量 export NAME=Runsen # 定義只讀變量 readonly AGE=20 # 打印變量的值 echo $CITY echo $NAME echo $AGE # 刪除 CITY 變量 unset CITY # 不會(huì)輸出 Dongguan echo $CITY
預(yù)定義變量
預(yù)定義變量常用來(lái)獲取命令行的輸入,有下面這些:
$0 :腳本文件名 $1-9 :第 1-9 個(gè)命令行參數(shù)名 $# :命令行參數(shù)個(gè)數(shù) $@ :所有命令行參數(shù) $* :所有命令行參數(shù) $? :前一個(gè)命令的退出狀態(tài),可用于獲取函數(shù)返回值 $$ :執(zhí)行的進(jìn)程 ID
一個(gè)例子:
#!/bin/bash echo "\$0 = $0" echo "\$1 = $1" echo "\$2 = $2" echo "\$# = $#" echo "\$@ = $@" echo "\$* = $*" echo "\$$ = $$" echo "\$? = $?"
執(zhí)行./hello.sh 1 2 3 4 5 的結(jié)果:
# 程序名 $0 = ./hello.sh # 第一個(gè)參數(shù) $1 = 1 # 第二個(gè)參數(shù) $2 = 2 # 一共有 5 個(gè)參數(shù) $# = 5 # 打印出所有參數(shù) $@ = 1 2 3 4 5 # 打印出所有參數(shù) $* = 1 2 3 4 5 # 進(jìn)程 ID $$ = 9450 # 之前沒(méi)有執(zhí)行其他命令或者函數(shù) $? = 0
if語(yǔ)句
「sh的流程控制不可為空」
#!/bin/bash read VAR # 下面這兩種判斷方法都可以,使用 [] 注意左右加空格 #if test $VAR -eq 10 if [ $VART -eq 10 ] then echo "true" else echo "false" fi
read 的方法就python中的input,寫成一行(適用于終端命令提示符):
if [ $VART -eq 10 ]; then echo "true"; else echo "false";fi
for 循環(huán)
for 循環(huán)和Python沒(méi)有什么區(qū)別,挺簡(jiǎn)單的
# 普通 for 循環(huán) for ((i = 1; i <= 3; i++)) do echo $i done # loop 依次代表每個(gè)元素 for loop in 1 2 3 4 5 do echo "The value is: $loop" done # VAR 依次代表每個(gè)元素 ,{}產(chǎn)生連續(xù)數(shù)字 for VAR in {1..3} do echo $VAR done #也可以寫成一行,方便在命令行直接運(yùn)行,注意空格和;號(hào): maoli@ubuntu:~$ for VAR in {1..3}; do echo $VAR; done 1 2 3
printf打印
printf 命令模仿 C 程序庫(kù)(library)里的 printf() 程序, 這里補(bǔ)充-e開啟轉(zhuǎn)義\c不換行,其他和Python一樣。
maoli@ubuntu:~$ echo "It is a test" It is a test maoli@ubuntu:~$ echo -e "OK! \n" OK! maoli@ubuntu:~$ printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg 姓名 性別 體重kg maoli@ubuntu:~$ printf "%-10s %-8s %-4.2f\n" Runsen 男 65 Runsen 男 65.00
test 檢查
Shell中的 test 命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的測(cè)試。
比如下判斷兩個(gè)字符串是否相同t
num1="Runsen" num2="Runsen" if test $num1 = $num2 then echo '兩個(gè)字符串相等!' else echo '兩個(gè)字符串不相等!' fi 兩個(gè)字符串相等!
Shell 函數(shù)
shell中函數(shù)的定義格式如下:
#!/bin/bash demoFun(){ echo "這是我的第一個(gè) shell 函數(shù)!" } echo "-----函數(shù)開始執(zhí)行-----" demoFun echo "-----函數(shù)執(zhí)行完畢-----" -----函數(shù)開始執(zhí)行----- 這是我的第一個(gè) shell 函數(shù)! -----函數(shù)執(zhí)行完畢-----
shell實(shí)例
求和
例子1:輸入兩個(gè)整數(shù)m和n,計(jì)算從m到n的整數(shù)求和的結(jié)果。
#!/usr/bin/bash printf 'm = ' read m printf 'n = ' read n a=$m sum=0 while [ $a -le $n ] do sum=$[ sum + a ] a=$[ a + 1 ] done echo '結(jié)果: '$sum
創(chuàng)建文件夾和文件
例子2:自動(dòng)創(chuàng)建文件夾和指定數(shù)量的文件。
#!/usr/bin/bash printf '輸入文件名: ' read file printf '輸入文件數(shù)量(<1000): ' read num if [ $num -ge 1000 ] then echo '文件數(shù)量不能超過(guò)1000' else if [ -e $dir -a -d $dir ] then rm -rf $dir else if [ -e $dir -a -f $dir ] then rm -f $dir fi fi mkdir -p $dir index=1 while [ $index -le $num ] do if [ $index -lt 10 ] then pre='00' elif [ $index -lt 100 ] then pre='0' else pre='' fi touch $dir'/'$file'_'$pre$index index=$[ index + 1 ] done fi
到此,關(guān)于“Linux磁盤管理和Shell編程知識(shí)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!