解释器

理解其他命令,并且命令执行起来

理解语句,并且根据流程控制机制让语句按需执行:

编译器

理解源程序,并且能够将源程序转换为二进制格式,而后让其够执行

程序文件:源代码

解释器:

 由解释器负责读取一句执行一句 

编译器:

 事先,将整个程序转换成二进制格式,而后执行 

程序开发语言:

解释型语言: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变量和重定向_第1张图片