1、语言之间的区别
程序:
编译型语言(静态语言):编译执行,C, C++
变量类型(强类型)
字符
数值
整数
浮点数
开发周期: 源程序--》编译--》链接(一些所用到的库)--》执行
脚本型语言(动态语言):解释执行,依赖于解释器 比如 php属于脚本语言
变量(弱类型)
默认识别为字符型
开发周期: 源程序---》使用解释器解释执行
bash, perl ,python , php,ruby
2.bash 语言
bash 变量类别
本地变量: 仅对当前shell 有效,对子shell无效
环境变量: 作用范围 是当前shell 及其子shell
特殊变量: $? 返回上一个命令的状态值 代表程序执行状态的返回值 : 0 代表成功 1-255 失败
位置变量:
‘’(单引号):强引用 变量不会替换
“ ”(双引号):弱引用 引号内的变量会被替换
一般变量不需要声明 ,也可以声明 用declare
declare AGE
-i :声明为整型
-a: 声明为数组
-r : 声明为只读变量
-x :声明为环境变量
消除变量 用 unset 命令、
打印 变量 echo $Age
Age=${Age-40} 如果 变量Age有值 就使用Age的本身的值,否则就赋值为40 相当于php 中的 三目运算符 ? :
声明环境变量:
export VARNAME=value
declare -x VARNAME=value
查看所有环境变量
env printenv export
修改环境变量的值
export PATH=/usr/local/apache/bin:$PATH //修改PATH变量的值
默认 PS1=' [\u@\h \w]\$ ';
命令替换:用命令的执行结果 替换命令 反引号 与 $()
变量:配置文件
全局:
/etc/profile, /etc/profile.d/*, /etc/bashrc
个人:~/.bash_profile , ~/.bashrc
bash 运行方式:
交互式: 通过命令实现的 /etc/profile----> /etc/profile.d/*--->~/.bash_profile , ~/.bashrc --> /etc/bashrc 配置文件读取顺序
非交互式: 通过脚本实现的 ~/.bashrc--->/etc/bashrc--> /etc/profile.d/*
profile 类:
设定环境变量
用户命令或脚本 bash 环境启动时加载的文件 因此设定环境变量时,需要重新启动bash环境 或用source命令 . 文件
bashrc类
:设定本地变量
设定命令别名
alias=ALIAS=COMMAND 有时 COMMAND中有空格时 需要加引号 撤销别名 unalias
shell 脚本:
命令的堆砌
#告诉是在什么环境下执行
#! /bin/bash
# date 注释行
date
ls /etc
seq 10
输入、输出重定向、 管道
程序的默认输入设备,叫标准输入,stdin ,键盘 ,0
程序的默认输出设备,叫标准输出。stdout,minitor ,1
程序的默认错误信息输出设备,标准错误输出,stderror,minitor,2
输出重定向;
COMMAND > FILE 覆盖输出 set -C 关闭覆盖输出功能 依然可以输出重定向 只是不能覆盖已经存在的文件了 开启覆盖 set +C COMMAND >| FILE 代表强行覆盖
COMMAND >> FILE 追加输出
/dev/null 数据黑洞 重定向这里不会有输出
/dev/zero 泡泡机
/dev/random
/dev/urandom 随机数生成器
输入重定向
COMMAND < FILE
COMMAND << "EOF" Here document
如何使用它生成文件
cat >> /tmp/test3.out << EOF
>This is the first line
>This is second line
>EOF
错误输出
COMMAND 2> FILE COMMAND 2>> FILE
正确或错误统统重定向
COMMAND > FILE 2> &1 COMMAND &> FILE
管道:只传递正确的信息
COMMAND | COMMAND1 将第一个命令的输出作为第二个命令的输入
uniq 去除连续重复的选项
tee 用法 COMMAND|tee|COMMAND