shell-bash学习01基础、打印、环境变量
2015-11-10 14:27
1011 查看
基础
终端提示符: username@hostname$;
$:一般用户
#:root用户
运行脚本
Bash执行: *
bash script.sh;
直接运行:
脚本开头添加
shebang起始:
#!/bin/bash,解析
Bash解释器命令路径;
设置运行权限:
chmod a+x script.sh; //所有人都可执行
直接使用脚本:
./script.sh;
路径:
file = ./file;
~:表示主目录,通常是
/home/user,其中
user是用户名;
命令分隔
在Bash中每个命令或命令序列是通过分号或换行符分隔;
注释
#注释开始到行尾;
终端打印的基本命令
打印字段可以不带引号/单引号/双引号;不带引号要注意些特殊的字符,如分号;
echo
默认换行;变量替换的单引号中无效;
添加参数
-n: 不换行;
-e: 使用转义序列;
打印彩色输出:
//代码 echo -e '\e[1;31m This is red text \e[0m' echo -e '\e[1;31m red text\e[1;32m green text \e[0m' //原理 \e[1;31m: 将颜色设置为红色 \e[0m: 将颜色重新设置 常用颜色码: 重置=0 黑色=30 红色=31 绿色=32 黄色=33 蓝色=34 洋红=35 青色=36 白色=37
另一种颜色显示
#! /bin/bash # check if stdout is a terminal... if test -t 1; then # see if it supports colors... ncolors=$(tput colors) if test -n "$ncolors" && test $ncolors -ge 8; then bold="$(tput bold)" underline="$(tput smul)" standout="$(tput smso)" normal="$(tput sgr0)" black="$(tput setaf 0)" red="$(tput setaf 1)" green="$(tput setaf 2)" yellow="$(tput setaf 3)" blue="$(tput setaf 4)" magenta="$(tput setaf 5)" cyan="$(tput setaf 6)" white="$(tput setaf 7)" fi fi echo "${red}error${normal}" echo "${green}success${normal}" echo "${green}0.052${normal} ${bold}${green}2,816.00 kb${normal}" # etc.
printf
不换行;使用的参数和C语言中
printf函数一样: 使用引用文本或由空格分隔的参数;
使用格式化字符串例子:
//代码 printf "%-5s %-10s %-4s\n" No Name Mark printf "%-5s %-10s %-4.2f\n" 1 Jinks 80.3444 printf "%-5s %-10s %-4.2f\n" 2 pen 90.443 //原理 %s,%c,%f都是格式替换符,参数放在之间; %-5s:指定一个左对齐的宽度为5的字符串替换; %-4.2f:格式化浮点数,保留两位小数;
变量与环境变量
无论给变量赋值时有没有使用引号,值都会以字符串的形式储存;环境变量是未在当前进程中定义,而从父进程中继承而来的变量;
变量操作
赋值:var=value;注意没有空格;
打印:
echo $var / echo ${var};注意使用单引号时,变量不会被扩展,将依照原样显示;
获取字符串长度:
echo ${#var};
获取进程环境变量
获取正在运行程序的进程ID:pgrep $P;
使用
cat获取环境变量:
cat /proc/$PID/environ;
优化显示使以NULL字符隔开:
cat /proc/$PID/environ | tr '\0' '\n';
查看当前shell环境变量
env;
设置当前shell环境变量
export命令用来设置环境变量;至此之后,从当前shell脚本执行的任何应用程序都会继承这个变量;注意其他shell脚本不会受影响;
//修改 HTTP_PROXY=192.168.1.23:3128 export HTTP_PROXY //添加 PATH="$PATH:/home/user/bin" export PATH
常用的环境变量:
SHELL: 当前使用的shell类型; PWD: 当前目录; UID: 用户类型, 超级用户为0; HOME: 主目录; PS1: Bash提示字符串;
linux中的配置文件
详细介绍常用文件
/etc/profile中设定的变量(全局)的可以作用于任何用户;
~/.bashrc等中设定的变量(局部)只能继承
/etc/profile中的变量;
/etc/profile: 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从
/etc/profile.d目录的配置文件中搜集shell的设置;
/etc/bashrc: 为每一个运行
shell的用户执行此文件;
~/.bash_profile: 每个用户都可使用该文件输入专用的
shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的
.bashrc文件;
~/.bashrc: 包含专用的
bash信息,当登录时以及每次打开新的
shell时,该文件被读取;
~/.bash_logout:当每次退出系统/
shell时,执行该文件;
设置环境变量时的级别区分
安装程序后可能需要设置的环境变量:PATH:可执行程序的查找路径;
LD_LIBRARY_PATH:动态库的查找路径;
仅在当前
shell中配置:
export PATH="$PATH:/my_new_path";
当前用户级别: 在
~/.bashrc中添加此条语句;
系统级别(所有用户): 在
/etc/profile中添加;
注意他们的环境变量覆盖是从
shell中的配置开始的;
设置生效:
重启
重现执行修改变变量的文件:
source /etc/profile; / source ~/.bashrc;
优化添加路径
以~/.bashrc为例;
afterpend() { eval "$1=\$$1:$2"; } afterpend PATH /test/bin
相关文章推荐
- Linux Shell基础
- 关于makefile和shell脚本的异同:make和bourne again shell--bash
- BASH系列(4)―― BASH变量操作
- bash shell sed技巧
- Shell脚本调试小技巧
- Bash中的$*和$@的区别
- shell awk 入门
- ios shell 命令行
- HBase总结(十三)HBase Shell 常用命令及例子
- SSH Secure Shell Client
- shell脚本编写的flipbird
- Pentest - Spwan a shell from meterpreter
- linux vim .bashrc 配置以及一些常用的linux 命令解析(下)
- Linux Shell编程基本知识
- shell实践--shell内嵌指令实现查看上线时间
- linux 下source、sh、bash、./执行脚本的区别
- shc对shell脚本文件加密
- shell %% , ##,#,% 用法
- Set+Metasploit+Ettercap渗透欺骗拿Shell
- 循环日期的shell