亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

認識與學習shell

2024-06-28 14:32:40
字體:
來源:轉載
供稿:網友

linux的終端機執行命令的方式,是通過bash環境來處理的。bash包括變量的設置與使用,、bash操作環境的構建、數據流重定向的功能。下面的知識,對主機的維護與管理有重要的幫助。

 

管理整個計算機硬件的其實是操作系統的內核,這個內核被保護,一般用戶只能通過shell來和內核通信(shell將輸入的命令與內核通信,內核可以控制硬件來正確無誤地工作)。man、chmod、chown、vi、mkfs等命令,都是獨立的應用程序,我們可以通過shell(即命令行模式)來操作這些應用程序,讓這些應用程序調用內核來運行所需的工作。

 

 bash shell 的內置命令:type

type命令找出可執行文件,而不是一般文件名。

floralin@Ubuntu:~/Desktop/linux_study$ type ls   # 未加任何參數的時候,列出ls的最主要使用情況ls is aliased to `ls --color=auto'floralin@ubuntu:~/Desktop/linux_study$ type -t ls # 添加參數-t列出ls執行時的依據aliasfloralin@ubuntu:~/Desktop/linux_study$ type -a ls # 添加參數-a會從PATH變量定義中,將所有含有 ls 的命令都列出來,包含aliasls is aliased to `ls --color=auto'ls is /bin/lsfloralin@ubuntu:~/Desktop/linux_study$ type cdcd is a shell builtin                             # cd是shell內置命令

命令的執行

很多時候輸入命令過長,會在換行之前加入/,這樣做的目的是為了將換行符[enter]轉移過來。成功轉移過后,下一行最前面就會出現>的符號,可以繼續輸入命令。

 

shell 變量功能

變量就是用一個特定字符串代表不固定的內容。在linux中要將變量的內容顯示出來,可以使用echo這個命令來顯示變量,但是變量在被顯示時,必須加上$.

floralin@ubuntu:~/Desktop/linux_study$ echo $variablefloralin@ubuntu:~/Desktop/linux_study$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

設置變量

floralin@ubuntu:~/Desktop/linux_study$ echo $mynamefloralin@ubuntu:~/Desktop/linux_study$ myname=florafloralin@ubuntu:~/Desktop/linux_study$ echo $mynameflora

保留原先變量,然后進行設置

floralin@ubuntu:~/Desktop/linux_study$ myname="$myname lin"floralin@ubuntu:~/Desktop/linux_study$ echo $mynameflora lin

在執行過程中,反單引號(`),之內的命令會被先執行,而執行出來的結果將作為外部的輸入信息。locate命令可以列出所有的相關文件名,但是如果我們想知道每個crontab相關文件名的權限:

floralin@ubuntu:~/Desktop/linux_study$ ls -l `locate crontab`-rw-r--r-- 1 root root      401 Feb 19  2014 /etc/anacrontab-rw-r--r-- 1 root root      722 Feb  8  2013 /etc/crontab-rwxr-sr-x 1 root crontab 34824 Feb  8  2013 /usr/bin/crontab-rw-r--r-- 1 root root     1184 APR  7  2014 /usr/share/bash-completion/completions/crontab-rw-r--r-- 1 root root    27684 Feb  8  2013 /usr/share/doc/cron/examples/crontab2english.pl-rw-r--r-- 1 root root     2521 Feb  8  2013 /usr/share/man/man1/crontab.1.gz-rw-r--r-- 1 root root      892 Feb 19  2014 /usr/share/man/man5/anacrontab.5.gz-rw-r--r-- 1 root root     5687 Feb  8  2013 /usr/share/man/man5/crontab.5.gz

 先以locate將文件名數據列出來,然后使用ls命令來處理。

 

環境變量的功能

環境變量能夠幫我們達到很多功能,包括主文件夾的變換,提示符的顯示,執行文件查找的路徑等。

查看默認的環境變量:

floralin@ubuntu:~/Desktop/linux_study$ env
#......_=/usr/bin/env # 上一次使用的命令的最后一個參數(或命令本身)

隨機數

RANDOM變量的內容介于0~32767之間,所以要進行數值計算才能獲取一個一位數。

floralin@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number1floralin@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number4floralin@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number5

set查看所有變量(含環境變量與自定義變量)

bash不只有環境變量,還有一些比較重要的參數,以及用戶自己定義的變量。

floralin@ubuntu:~/Desktop/linux_study$ set

PS1命令提示符

每當我們按下回車鍵去執行某個命令后,最后要再次出現提示符,會去主動讀取這個變量值。

floralin@ubuntu:~/Desktop/linux_study$ cd /homefloralin@ubuntu:/home$ PS1='[/u@/h /w /A #/#]/$'[floralin@ubuntu /home 08:48 #46]$lsfloralin[floralin@ubuntu /home 08:51 #47]$                                                                                                    

/w 代表完整的工作目錄名稱,由更目錄寫起來的目錄名稱。但是主文件夾將會用~替代。

/A 顯示時間,二十四小時格式“HH:MM”。

/# 執行第幾個命令。

/$ 提示符,如果是root時,提示符為#,否則為$。

 

變量鍵盤讀取、數組與聲明:read、array、declare

 

read讀取來自鍵盤輸入的變量

[floralin@ubuntu /home 09:12 #54]$read atestThis is a test[floralin@ubuntu /home 09:12 #55]$read -p "Please keyin your name: " -t 30 namedPlease keyin your name: floralin[floralin@ubuntu /home 09:13 #56]$echo $namedfloralin

30秒沒有任何操作時,該命令會自動略過。

 

declare或typeset,聲明變量的類型

如果使用declare后面沒有接任何參數,bash就會主動將變量名稱數出來。

[floralin@ubuntu /home 09:21 #59]$sum=100+300+50[floralin@ubuntu /home 09:22 #60]$declare -i sum=100+300+50[floralin@ubuntu /home 09:22 #61]$echo $sum450

變量類型默認為字符串,所以不能制定變量類型,則1+2為一個字符串而不是計算式,因此執行第一條命令會直接輸出100+300+50.。

將sum變成環境變量:

[floralin@ubuntu /home 09:13 #57]$declare -x sum[floralin@ubuntu /home 09:21 #58]$export | grep sumdeclare -x sum

將sum變成只讀屬性,不可修改:

[floralin@ubuntu /home 09:25 #62]$declare -r sum[floralin@ubuntu /home 09:29 #63]$sum=testgtingbash: sum: readonly variable

讓sum變成非環境變量的自定義變量:

[floralin@ubuntu /home 09:29 #64]$declare +x sum[floralin@ubuntu /home 09:30 #65]$declare -p sumdeclare -ir sum="450"

 

數組變量類型

[floralin@ubuntu /home 09:30 #66]$var[1]="small min"[floralin@ubuntu /home 09:32 #67]$var[2]="big min"[floralin@ubuntu /home 09:32 #68]$var[3]="nice min"[floralin@ubuntu /home 09:32 #69]$echo "${var[1]},${var[2]},${var[3]}"small min,big min,nice min

 

與文件系統及程序的限制關系ulimit

列出你目前身份的所有限制數據數值:

[floralin@ubuntu /home 09:33 #70]$ulimit -a

限制用戶僅能建立10MB一下的容量文件:

[floralin@ubuntu /home 09:38 #74]$ulimit -f 10240[floralin@ubuntu /home 09:38 #75]$ulimit -a

嘗試創建20M的文件:

[floralin@ubuntu ~/Desktop/linux_study 09:41 #81]$sudo dd if=~/Desktop/linux_study/ of=123 bs=1M count=20

 [floralin@ubuntu ~/Desktop/linux_study 09:41 #82]$ll
 total 8
 drwxrwxr-x 2 floralin floralin 4096 Oct 30 09:41 ./
 drwxr-xr-x 3 floralin floralin 4096 Oct 30 07:43 ../
 -rw-r--r-- 1 root root 0 Oct 30 09:41 123

 

變量內容的刪除、替換與替代

變量內容的刪除與替換

將local這兩個目錄刪除掉:

[floralin@ubuntu ~/Desktop/linux_study 09:47 #85]$echo $path/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

  [floralin@ubuntu ~/Desktop/linux_study 09:49 #89]$echo ${path#/*local/bin:}
  /usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

 將sbin替換為SBIN:

floralin@ubuntu ~/Desktop/linux_study 13:06 #95]$echo ${path/sbin/SBIN}/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games[floralin@ubuntu ~/Desktop/linux_study 13:06 #96]$echo ${path//sbin/SBIN}/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games:/usr/local/games

變量的測試與內容替換:

[floralin@ubuntu ~/Desktop/linux_study 13:07 #97]$echo $username                                                # username可能不存在或者為空字符串[floralin@ubuntu ~/Desktop/linux_study 13:09 #98]$username=${username-root}[floralin@ubuntu ~/Desktop/linux_study 13:10 #99]$echo $usernameroot                                              # 沒有設置,所以主動給予名為root的內容[floralin@ubuntu ~/Desktop/linux_study 13:10 #100]$username="floralin"[floralin@ubuntu ~/Desktop/linux_study 13:10 #101]$username=${username-root}[floralin@ubuntu ~/Desktop/linux_study 13:10 #102]$echo $usernamefloralin

username-root 就得變量,被測試的選項 ; username-root 變量的內容,在本范例中,這個部分是在給予未設置變量的內容。當然 username:-root則是在變量內容為空或者是未設置,都能夠以后面的內容替換。

如果舊變量不存在,我們就以新變量內容替換;但是若舊變量存在,則新變量內容以舊變量替換。

[floralin@ubuntu ~/Desktop/linux_study 13:10 #103]$unset str; var=${str-newvar}[floralin@ubuntu ~/Desktop/linux_study 13:18 #104]$echo var="$var",str="$str"var=newvar,str=                                        # 因為str不存在,所以var為newvar[floralin@ubuntu ~/Desktop/linux_study 13:19 #105]$str="oldvar";var=${str-newvar}[floralin@ubuntu ~/Desktop/linux_study 13:20 #106]$echo var="$var",str="$str"var=oldvar,str=oldvar                                     # 因為str存在,所以var等于str的內容

關于減號是不會影響舊變量的,如果想要舊變量內容也一起替換掉的話,就需要使用等號=:

[floralin@ubuntu ~/Desktop/linux_study 13:20 #107]$unset str; var=${str=newvar}[floralin@ubuntu ~/Desktop/linux_study 13:25 #108]$echo var="$var",str="$str"var=newvar,str=newvar[floralin@ubuntu ~/Desktop/linux_study 13:25 #111]$str="oldvar";var=${str=newvar}[floralin@ubuntu ~/Desktop/linux_study 13:25 #112]$echo var="$var",str="$str"var=oldvar,str=oldvar

 

命令別名和歷史命令

命令別名設置alias和unalias

命令別名可以使常用的但是特別長的命令修改成比較簡潔的命令,還有增設默認的選項在一些慣用的命令上面,可以預防一些不小心誤刪文件的情況發生。例如,查詢隱藏文件,并且需要長的列出與一頁一頁翻看,那么需要執行“ls -l | more”,可以使用以下命令將其簡化為lm:

[floralin@ubuntu ~ 13:35 #120]$alias lm="ls -l | more"

另外,命名別名的設置還可以替代既有的命令,例如,當以root登錄,使用rm命令可以刪除所有文件,因此要特別小心,rm提供一個參數讓我們確認是否刪除該文件-i:

[floralin@ubuntu ~ 13:35 #123]$alias rm="rm -i"[floralin@ubuntu ~/Desktop/linux_study 13:39 #127]$rm 123rm: remove write-protected regular empty file123’? y

去掉剛才的命名別名:

[floralin@ubuntu ~/Desktop/linux_study 13:39 #128]$unalias rm

 

歷史命令 history

查詢曾經執行過的命令,最近4條:

[floralin@ubuntu ~/Desktop/linux_study 13:42 #131]$history 4

 

Bash Shell的操作環境

路徑與命令查找順序

設置echo的別名為echo-n,然后再查看echo執行的順序:

[floralin@ubuntu ~/Desktop/linux_study 13:45 #132]$alias echo="echo -n"[floralin@ubuntu ~/Desktop/linux_study 13:47 #134]$type -a echoecho is aliased to `echo -n'echo is a shell builtinecho is /bin/echo

 

bash的登錄與歡迎信息:/etc/issue,/etc/motd

終端環境設置:stty.set

如何查閱目前的一些按鍵內容呢?可以利用stty(setting tty終端機),stty可以幫助設置終端機的輸入按鈕代表意義。我們可以利用stty-a來列出目前環境中的所有按鍵列表。

floralin@ubuntu:~$ stty -aspeed 38400 baud; rows 37; columns 80; line = 0;intr = ^C; quit = ^/; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;lnext = ^V; flush = ^O; min = 1; time = 0;-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff-iuclc ixany imaxbel iutf8opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprtechoctl echoke

如果想要stty進行相關的字符刪除:

floralin@ubuntu:~$ stty erase ^h

除了stty之外,其實我們bash還有自己的一些終端機設置值set。

 

管道命令pipe

使用bash命令執行輸出數據,要經過幾道數據之后才能得到我們想要的格式,這就需要使用管道。

管道命使用的是“|”這個界定符號。另外管道命令與“連續執行命令”不同。

查閱/etc/下面有多少文件,可以利用ls/etc來查閱,使用lese管道,可以使得原本很長的目錄具備翻頁能力:

 

floralin@ubuntu:~$ ls -al /etc | less

 

選取命令:cut/grep

cut可以使一段信息切出來,處理的信息是以“行”為單位

截取第五行字符串:

floralinfloralin@ubuntu:~$ echo $PATH | cut -d  ':' -f 5

截取第三和五行:

floralinfloralin@ubuntu:~$ echo $PATH | cut -d  ':' -f 3,5

 

 

cut的主要用途是將同一行里面的數據進行分解,最常用使用在分析一些數據或文字數據的時候。這是因為有時候我們會將某些字符串作為切割的參數,然后來將數據加以切割,以取得我們所需要的數據。

grep則是分析一行信息。也就是,grep可以解析一行文字,取得關鍵字,若該行存在關鍵字,就會整行列出來。

列出含有“boot”關鍵字的行:

 

floralinfloralin@ubuntu:~$ last | grep "boot"

 

列出不含有“boot”關鍵字的行:

 

floralinfloralin@ubuntu:~$ last | grep -v "boot"

 

加上cut,取得第一列:

floralinfloralin@ubuntu:~$ last | grep "boot" | cut -d  " " -f1

取得/etc/man.config 內含MANPATH的那幾行:

floralinfloralin@ubuntu:~$ grep  --color=auto ‘MANPATH’ /etc/main.config

 

排序命令:sort、wc、uniq

對/etc/insserv.conf文件進行排序顯示:

floralinfloralin@ubuntu:~$ /etc/insserv.conf | sort

對于排序完成的數據,想要將重復的數據僅列出一個顯示:

floralinfloralin@ubuntu:~$ last | cut -d ' ' -f1 | sort | uniq

還想知道登錄狀態:

 

雙向重定向:tee

將數據流整個傳送給文件或設備。tee會同時將數據流送與文件與屏幕;而輸出到屏幕的,其實就是stdout。

將last的輸出存一份給last.list文件中:

floralinfloralin@ubuntu:~$ last | tee last.list

將ls的數據存一份到 ~/homefike | more:

floralinfloralin@ubuntu:~$ ls -l /home | tee  ~/homefile | more

tee后面的文件會被覆蓋,若加上-a這個參數,則能將信息累加:

floralinfloralin@ubuntu:~$ ls -l /home | tee -a ~/homefile | more

 

字符串轉換命令:tr、col、join、paste、expand

tr可以用來刪除一段信息當中的文字,或者是進行文字信息的替換。

col可以進行簡單處理,經常被用于man page轉存為純文本文件以方便查閱的功能。

join看字面上的意義,是處理兩個文件之間的數據。要將兩個文件當中相同數據的那一行加起來。

paste將兩行貼在一起,中間一tab鍵隔開。

expand將tab按鍵轉成空格鍵。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩精品丝袜高跟鞋| 亚洲成人精品视频在线观看| 国产一区二区激情| 欧美视频在线视频| 日韩欧美aⅴ综合网站发布| 国产主播欧美精品| 欧美限制级电影在线观看| 国产伦精品一区二区三区精品视频| 91久久久在线| 中文字幕日韩电影| 亚洲精品自产拍| 91亚洲va在线va天堂va国| 中文字幕日韩av综合精品| 中文字幕亚洲综合| 欧美日韩在线视频首页| 国产欧美精品xxxx另类| 最近中文字幕2019免费| 国内外成人免费激情在线视频| 日韩免费观看视频| 午夜精品一区二区三区在线| 91在线国产电影| 国产精品视频在线观看| 黑人巨大精品欧美一区二区一视频| 久久久之久亚州精品露出| 精品久久久久久久久久| 欧洲s码亚洲m码精品一区| 亚洲成人av中文字幕| 亚洲黄色www| 欧美日韩激情视频8区| 国产精品日韩在线观看| 成人黄色大片在线免费观看| 欧美性猛交xxxx免费看漫画| 日韩精品在线视频美女| 中文字幕欧美日韩精品| 国产精品96久久久久久| 欧美性猛交xxxx偷拍洗澡| 国产日韩专区在线| 国模精品系列视频| 欧美俄罗斯乱妇| 日韩最新av在线| 97婷婷涩涩精品一区| 久久青草福利网站| 亚洲福利视频专区| 亚洲成人在线网| 久久综合久中文字幕青草| 亚洲性线免费观看视频成熟| 久久久久久国产三级电影| 欧美黑人性视频| 2019中文在线观看| 国产精品入口尤物| 97精品国产91久久久久久| 久久亚洲精品成人| 97香蕉久久夜色精品国产| 88xx成人精品| 国产视频观看一区| 亚洲免费福利视频| 51精品在线观看| 欧美一级淫片aaaaaaa视频| 国产精品久久久久久久9999| 韩国三级日本三级少妇99| 亚洲欧美精品suv| 国产一区二区三区在线看| 午夜精品一区二区三区视频免费看| 亚洲精品欧美极品| 亚洲成人黄色在线观看| 国产精品老牛影院在线观看| 日本一区二区在线免费播放| 日韩有码在线视频| 欧美影院成年免费版| 在线观看日韩视频| 日韩精品中文在线观看| 日韩免费观看网站| 日韩av电影在线免费播放| 亚洲精品国产拍免费91在线| 欧美在线视频一区二区| 亚洲国产天堂网精品网站| 日韩欧美国产一区二区| 色噜噜狠狠狠综合曰曰曰| 91精品久久久久久久久久另类| 操人视频在线观看欧美| 九九九热精品免费视频观看网站| 国产亚洲精品久久久久久| 亚洲精品91美女久久久久久久| 欧美黑人性生活视频| 亚洲精品欧美日韩专区| 国产精品一区二区三区毛片淫片| 国产欧美在线视频| 日本一欧美一欧美一亚洲视频| 国产suv精品一区二区三区88区| 成人妇女免费播放久久久| 亚洲人成绝费网站色www| 国产精品久久久久久久午夜| 最新69国产成人精品视频免费| 国产成人精品免费视频| 国产综合色香蕉精品| 久久国产精品电影| 国产精品久久久久av免费| 91精品在线一区| 欧美日韩一区二区在线| 国产精品亚洲综合天堂夜夜| 97成人在线视频| 欧美韩国理论所午夜片917电影| 日韩在线免费视频| 欧美激情女人20p| 姬川优奈aav一区二区| 亚洲高清久久久久久| 97视频在线观看网址| 亚洲精品国产精品自产a区红杏吧| 2019中文字幕全在线观看| 91国在线精品国内播放| 91视频免费网站| 欧美视频第一页| 亚洲国产成人久久综合一区| 在线观看欧美成人| 91精品国产综合久久香蕉922| 91亚洲国产成人精品性色| 亚洲国产美女精品久久久久∴| 中文字幕一区电影| 国产69精品久久久久99| 国产视频精品xxxx| 久久亚洲精品网站| 日韩av色综合| 日韩女在线观看| 亚洲精品免费网站| 精品欧美国产一区二区三区| 亚洲天堂免费观看| 亚洲片av在线| 亚洲一区二区国产| 日韩视频免费观看| 国产成人综合亚洲| 97视频在线免费观看| 日韩av在线直播| 亚洲国产欧美精品| 亚洲国产精品免费| 中文字幕日本精品| 精品国产91久久久| 久久免费福利视频| 欧美性开放视频| 伊人伊成久久人综合网小说| 日韩高清电影免费观看完整版| 久久精品视频va| 91wwwcom在线观看| 亚洲欧美日韩国产精品| 91精品在线国产| 91tv亚洲精品香蕉国产一区7ujn| 久久国产色av| 亚洲人成电影网站色| 欧美特级www| 久久香蕉国产线看观看网| 97国产在线观看| 欧美性猛交xxxx乱大交极品| 午夜精品蜜臀一区二区三区免费| 精品免费在线观看| 国产欧美日韩亚洲精品| 国产91精品久久久久| 国产成人啪精品视频免费网| 中文字幕日韩欧美在线视频| 国产一区二区三区久久精品| 国产91色在线|| 性欧美在线看片a免费观看| 欧美成人午夜激情在线| 国产成人在线精品| 久久99久久99精品中文字幕| 一区二区三区四区视频|