鳥哥的Linux私房菜基礎篇 第十章認識和學習bash這個shell
1 認識bash這個shell
使用者通過shell來跟kernel進行溝通,但是系統有很多工具提供了shell的功能,其中bash就是其中之一。
bash shell的功能:
-命令編修能力 history
- tab,具有檔名補全,命令補全的功能。
- 雙擊tab,有提示的作用。
- 命令別名功能:alias
- 程式化指令碼
- 萬用字元 *
內建命令:
查詢是否為內建命令:type command
如:type cd
[ctrl]+u/[ctrl]+k | 向前向後刪除 |
---|---|
[ctrl]+a/[ctrl]+e | 游標移動到最前或最後 |
2 shell變數功能
-
變數取用和設定
echo $var
echo $PATH -
子模組
cd /lib/modules/uname -r
/kernel
cd /lib/modules/$(uname -r)/kernelmyname="$var is a var" 可進行變數替換
myname=’$var is a var’
-
環境變數
[root@localhost~]$ env
[root@localhost~] $ set 觀察所有變數 -
特殊符號
$ 表示本shell的ID
? 上條命令執行的回傳值,為0則表示執行成功
echo $$ 本shell的PID
echo $?
export var :將自定義變數轉成 環境變數 -
read , array, declare
- read
$read -p "Please keyin your name: " -t 30 named - declare 的用法
sum=1+2+3
echo $sum
declare -i sum=1+2+3
echo $sum
- array
var[1]='zhang'
var[2]='li'
var[3]='wang'
echo "${var[1]},${var[2]},${var[3]}"
- 與檔案系統及程式的限制關係:ulimit
使用示例:
$ ulimit -f 10240
$ dd if=/dev/zero of=123 bs=1M count=20 //建立20M的檔案失敗
rm 123
登出再次登入,就能取消掉限制
- 變數替換,取代與刪除
{PATH}
$ echo ${path}
- # 號的使用
$ echo ${path#/local/bin:} //向右刪除頭一個
$ echo ${path##/:} //刪除最長的那一個 - %號的使用
表示從後往前刪除
%% 表示最長的匹配串 - /
${變數/舊字串/新字串} 第一個被取代
${變數//舊字串/新字串} 全部被取代
3 別名與歷史命令
- alias, unalias
alias h=‘history’ - history
history n //最近N個
!cmd 最近匹配到的命令
!! 執行上一指令
4 bash shell的操作環境
- bash的進站資訊:/etc/issue, /etc/motd
進站的畫面,在檔案/etc/issue中修改。
如:
\S (terminal: \l)
Date: \d \t
Kernel \r on an \m
Welcome!
登入後獲得通知訊息,在/etc/motd中修改。
如告訴登入著固定時間會進行維護,或者某檔案不能刪除修改等。
5 資料流重定向
file <<,< command 輸入,代號0
command >>,>file 輸出,代號1
command 2>,2>> file/screen/device 標準錯誤輸出 代號,2
/dev/null 垃圾桶黑洞裝置與特殊寫法
--------------------------
示例:
1. 輸出
ls / >> file
2. 輸入
cat << EOF > output
hello
world
EOF
3. 錯誤資訊的丟棄
sh start.sh 2>/dev/null
2表示錯誤資訊的標號,/dev/null是一個黑洞。
4. 將錯誤資訊也儲存到標準輸出流中:2>&1
5. ;, &&, ||
連續指令, ;
指令回傳值,$?
cmd1 && cmd2: cmd1 正確執行完畢,再執行cmd2 ,否則cmd2不執行
cmd1 || cmd2 : cmd1 正確執行完畢,cmd2不執行,
如: ls /tmp/abc || mkdir /tmp/abc ,不會出現mkdir重複的錯誤。
ls /tmp/vbirding && echo "exist" || echo "not exist" 存在輸出exist,不存在輸出not exist
6 管道命令pipe
如: ls /usr/bin | less 使用less協助檢視
- cut ,grep
- cut
cut -d’:’ -f 3[,5]
cut -c-10 - grep 為分析一些資訊
cat file |grep name
grep ‘name’ file
grep常用引數: -v,-i ,-E
- 排序命令:sort,wc,uniq
-
sort
cat file | sort
cat file | sort -t ‘:’ -k 3 #以:號分割,根據第三列欄位排序 -
uniq
將重複的資料,僅僅列出一個 -
wc
wc -l 列出多少行
- 雙向重導向
可以將內容列印到螢幕且將內容輸入到檔案。
ls | tee file - 字元轉換命令
- tr: 刪除一段資訊當中的文字或者替換
如:cat file| tr ‘[a-z]’ ‘[A-Z]’ 小寫換大寫
tr -d ‘:’ 刪除符號 - join
處理兩個檔案中,有相同資料的行,連成一行
如:join -t ':' /etc/passwd /etc/shadow -t 表示按照: 分割子串,並且對比第一列
- paste
將兩個檔案中,相同的行直接貼上到一起
- paste
- split 分割槽命令
檔案太大無法複製,將大檔案分割槽為小檔案。
如:
split -b 300k /etc/services services //將/etc/services檔案分為300k的小檔案
cat setvice*>>servicesbak 使用重定向就可以恢復
spilt -l 10 file bak // 按行劃分,檔案的每十行一個檔案
-
xargs
command1 | xargs command2
將1的結果作為引數傳遞給2進行執行 -
- 號的用途
請相信,每一個符號的存在都是極其重要以及有意義的。
使用如下:
tar -cvf - /home | tar -xvf - -C /tmp/homeback
相當於臨時未命名變數一樣,前面指令的輸出,作為後面指令的輸入。
好了,本章的內容基本完畢。謝謝閱讀和支援
相關文章
- 鳥哥的Linux私房菜基礎篇 第十三章 shell scriptsLinux
- 鳥哥的LINUX私房菜_基礎學習篇(第三版)Linux
- 鳥哥私房菜-基礎篇小筆記筆記
- linux學習導讀_鳥哥的私房菜Linux
- 鳥哥的 Linux 私房菜Linux
- linux-鳥哥私房菜學習筆記Linux筆記
- PJzhang:鳥哥的linux私房菜-shell指令碼-上Linux指令碼
- 鳥哥私房菜學習筆記(第零章)筆記
- 鳥哥的Linux私房菜--CPU種類Linux
- 鳥哥的Linux私房菜 -- 電子書(pdf)Linux
- 鳥哥的Linux私房菜筆記第六章Linux筆記
- 鳥哥的linux基礎學習實訓教程Linux
- 鳥哥的Linux私房菜基礎篇 第十二章 正規表示式與檔案格式化處理Linux
- 菜鳥學Linux第055篇筆記php基礎Linux筆記PHP
- 學習 Shell Scripts(轉載鳥哥)
- 劉遄:作為一名新人讀完《鳥哥的Linux私房菜》的感想Linux
- MySQL索引基礎--菜鳥篇MySql索引
- 和菜鳥一起學linux之DBUS基礎學習記錄Linux
- 菜鳥學習筆記:Java基礎篇1(基礎語法、物件導向)筆記Java物件
- linux 基礎(6)簡單認識 bashLinux
- Linux Bash Shell學習(八):shell程式設計基礎——string操作Linux程式設計
- 前端學習-TypeScript菜鳥教程-002-TypeScript基礎知識前端TypeScript
- 菜鳥請教rbac的基礎知識
- 認識與學習bash
- 認識與學習 BASH
- Linux Bash Shell學習(七):shell程式設計基礎——執行Shell指令碼、functionLinux程式設計指令碼Function
- 一個菜鳥管理的學習和思考(一)
- 一個菜鳥管理的學習和思考(二)
- python菜鳥教程學習3:基礎語法Python
- Linux學習(Shell基礎)Linux
- 《鳥哥的Linux私房菜:伺服器架設篇 第三版.pdf》PDF高清完整版-免費下載Linux伺服器
- Linux學習-shell基礎02Linux
- 產品經理的私房菜 - 騰訊產品模型 - 學習能力篇模型
- IT菜鳥的學習生活
- Bash Shell 基礎特性
- 菜鳥學Java(二十二)——重新認識泛型Java泛型
- 菜鳥入門 個人學習Linux知識總結(轉)Linux
- 菜鳥之學習51微控制器(一)認識開發板