Part2 Linux Bash Shell變量和重定向
理解其他命令,並且命令執行起來
理解語句,並且根據流程控制機制讓語句按需執行:
編譯器
理解源程序,並且能夠將源程序轉換為二進制格式,而後讓其夠執行
程序文件:源代碼
解釋器:
由解釋器負責讀取一句執行一句
編譯器:
事先,將整個程序轉換成二進制格式,而後執行
程序開發語言:
解釋型語言:perl,python,ruby,bash 也成為動態語言
編譯型語言:C, C++, C# 靜態語言
變量:內存空間,可用於存儲數據
變量類型:數據存儲格式,數據表示範圍;
整型,浮點型,字符型,布爾型等
整數:11,4bits,8bits
字符:ASCII,所有基本字符共128個,至少7bits表示所有的基本字符;
浮點:11.00,近似
單精度
雙精度
要使用變量,其步驟通常是
1.聲明:指定其類型
聲明的同事,給其一個初始值,這個叫做變量的初始化;
2.賦值:
int V=3;
bash: 交互式接口,提供編程環境
變量:
弱類型語言:
1.不強制區分變量類型,無論存儲什麽數據,默認均以字符格式存儲;
2.不需要事先聲明,用到時,直接使用,直接賦值
定義變量:
[ set] VAR_NAME=Value
引用變量:
${VAR_NAME} echo $NAME
撤銷變量:
Unset VAR_NAME
Bash變量類型:
本地變量:只對當前shell進程有效;
局部變量:local VAR_NAME=Value
環境變量:export VAR_NAME=Value,對當前shell及其子shell有效;
位置變量:$1,$2,..
特殊變量:$$,$!,$#,$?
bash變量也可以聲明,甚至可以指定類型;declare
Declare -i VAR_NAME:聲明一個整型變量
Declare -x VAR_NAME:聲明一個環境變量
Declare -a VAR_NAME:聲明一個數組
bash查看環境變量:
printenv
查看所有變量:
Set
變量引用:${VAR_NAME}
變量替換:只有在雙引號中才能實現。
bash的引號;
雙引號:弱引用,可以實現變量替換;
單引號:強引用,不替換,而現實字符串本身;
反引號:命令引用 date+%T
或$(date+%T) date+%F
bash特性
變量
快捷鍵
命令別名
命令行展開;{}, ~
管道
輸入、輸出重定向
編程
命令行補齊
路徑補全
bash的快捷鍵;
Ctrl+a;跳至命令行首
Ctrl+e:跳至命令行尾
Ctrl+u:刪除命令行首到光標所在光標位置
Ctrl+k;刪除當前光標至命令行尾的內容
Ctrl+l; 清屏。相當於clear命令
Ctrl+c 取消或終止
Ctrl+z;將當前命令送至後臺
管理:shell,COMMAND1 | COMMAND2
程序:讀入數據,執行結果輸出
I/O設備,鍵盤,VGA,顯示器
Cat
輸入重定向
輸出重定向
echo pass123 | passwd --stdin openstack
stdin:standard input,標準輸入,默認輸入
stdout:standard output,標準輸出,默認輸出
#!/bin/bash
UserName=Gentoo
useradd -d /users/$UserName $UserName
echo $UserName | passwd --stdin $UserName
tail -n 1 /etc/(passwd,shadow)
編程語言:編譯型語言,解釋型語言
編譯器:gcc
解釋器:bash,python,perl
#!解釋器程序的路徑,如#!/bin/bash
變量類型:弱
ABI:Application Binary Interface
Magic number:魔數
ls:執行入口
面向過程的編程語言,面向對象的編程語言
語言控制結構:
1、順序執行
2、選擇執行
3、循環執行
Linux:
: 覆蓋輸出
>: 追加輸出
set -C 禁止對已經存在的文件使用覆蓋重定向;強制覆蓋輸出,則使用>|
Set +C取消上述功能
2>: 重定向錯誤輸出
ls /varr > /tmp/var3.out 2> /tmp/err.out
&>: 重定向標準輸出或錯誤輸出至同一個文件
ls /var &> /tmp/var.out
<: 輸入重定向
cat < /etc/fstab
tr ‘a-z‘ ‘A-Z‘ < /etc/fstab
<<: Here Document
cat << END
The first line
The sencond line
END
cat >> /tmp/myfile.exe << EOF
管道:前一個命令的輸出,作為後一個命令輸入
命令1 | 命令2 | 命令3 …
echo "hello, world" | tr‘a-z’‘A-Z‘
echo "redhat" | passwd --stdin hive
cut -d: -f1 /etc/passwd
cut -d: f3 /etc/passwd | sort -n
cut -d: f3 /etc/passwd | sort -n | tr ‘a-z‘ ‘A-Z‘
ls /var | tr ‘a-z‘ ‘A-Z‘
echo "Hello, World." | tee /tmp/hello.out
wc -l /etc/passwd | cut -d‘ ‘ -f1
ls /usr/bin | wc -l
Part2 Linux Bash Shell變量和重定向