快捷鍵操作
- Ctrl + a:移到行首
- Ctrl + b:向行首移動(dòng)一個(gè)字符,與左箭頭作用相同
- Ctrl + e:移到行尾
- Ctrl + f:向行尾移動(dòng)一個(gè)字符,與右箭頭作用相同
- Alt + f:移動(dòng)到當(dāng)前單詞的詞尾( ESC + f )
- Alt + b:移動(dòng)到當(dāng)前單詞的詞首 ( ESC + b )
變量
- 讀取變量的時(shí)候,變量名也可以使用花括號(hào){}包圍,比如$a也可以寫(xiě)成${a}
這種寫(xiě)法可以用于變量名與其他字符連用的情況
$ a=foo
$ echo $a_file
$ echo ${a}_file
foo_file
- unset命令用來(lái)刪除一個(gè)變量
- $$為當(dāng)前 Shell 的進(jìn)程 ID,可以用來(lái)命名臨時(shí)文件 LOGFILE=/tmp/output_log.$$
- $_為上一個(gè)命令的最后一個(gè)參數(shù)
${varname:-word} 如果變量varname存在且不為空,則返回它的值,否則返回word
${varname:=word} 如果變量varname存在且不為空,則返回它的值,否則將它設(shè)為word
${varname:+word} 如果變量名存在且不為空,則返回word,否則返回空值
${varname:?message} 如果變量varname存在且不為空,則返回它的值,否則打印出varname: message
${#varname} 獲取字符串長(zhǎng)度
${varname:offset:length} 提取子字符串
${varname^^} 轉(zhuǎn)為大寫(xiě)
${varname,,} 轉(zhuǎn)為小寫(xiě)
算術(shù)
- ((...))語(yǔ)法可以進(jìn)行整數(shù)的算術(shù)運(yùn)算
腳本
#!/usr/bin/env bash
指定解釋器
# 給所有用戶執(zhí)行權(quán)限
$ chmod +x script.sh
# 給所有用戶讀權(quán)限和執(zhí)行權(quán)限
$ chmod +rx script.sh
# 或者
$ chmod 755 script.sh
- getopts命令用在腳本內(nèi)部,可以解析復(fù)雜的腳本命令行參數(shù),通常與while循環(huán)一起使用,取出腳本所有的帶有前置連詞線(-)的參數(shù)
while getopts 'lha:' OPTION; do
case "$OPTION" in
l)
echo "linuxconfig"
;;
h)
echo "h stands for h"
;;
a)
avalue="$OPTARG"
echo "The value provided is $OPTARG"
;;
?)
echo "script usage: $(basename $0) [-l] [-h] [-a somevalue]" >&2
exit 1
;;
esac
done
shift "$(($OPTIND - 1))"
- 在shell腳本中,默認(rèn)情況下,總是有三個(gè)文件處于打開(kāi)狀態(tài),標(biāo)準(zhǔn)輸入(鍵盤(pán)輸入)、標(biāo)準(zhǔn)輸出(輸出到屏幕)、標(biāo)準(zhǔn)錯(cuò)誤(也是輸出到屏幕),它們分別對(duì)應(yīng)的文件描述符是0,1,2
1>&2 正確返回值傳遞給2輸出通道 &2表示2輸出通道
2>&1 錯(cuò)誤返回值傳遞給1輸出通道, 同樣&1表示1輸出通道
> /dev/null 所有傳給它的東西它都丟棄掉
#!/bin/bash
filename='/etc/hosts'
while read myline
do
echo "$myline"
done < $filename
# 上面的例子通過(guò)read命令,讀取一個(gè)文件的內(nèi)容。
# done命令后面的定向符<,將文件內(nèi)容導(dǎo)向read命令,每次讀取一行,存入變量myline,直到文件讀取完畢。
- read命令讀取的值,默認(rèn)是以空格分隔??梢酝ㄟ^(guò)自定義環(huán)境變量IFS(內(nèi)部字段分隔符,Internal Field Separator 的縮寫(xiě)),修改分隔標(biāo)志。
if結(jié)構(gòu)
if commands; then
commands
[elif commands; then
commands...]
[else
commands]
fi