1. 程式人生 > >Part2 Linux Bash Shell變量和重定向

Part2 Linux Bash Shell變量和重定向

tac 環境 ctr var interface 命令執行 空間 表示範圍 sta

解釋器

理解其他命令,並且命令執行起來

理解語句,並且根據流程控制機制讓語句按需執行:

編譯器

理解源程序,並且能夠將源程序轉換為二進制格式,而後讓其夠執行

程序文件:源代碼

解釋器:

 由解釋器負責讀取一句執行一句 

編譯器:

 事先,將整個程序轉換成二進制格式,而後執行 

程序開發語言:

解釋型語言: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變量和重定向