博客已搬家,点击进入新博客:
http://www.liguangliang.com.cn
1.shell第一讲
沈超主讲,微博:weibo.com/lampsc
shell简介:
命令解释器
linux下默认shell是bash,路径是/bin/bash,是标准shell
sh 是早期shell,比较简单
csh ksh tcsh是unix shell上常用的shell。
/etc/shells 显示linux支持的shell列表
键入csh,进入csh,exit退出这个shell。
shell脚本
脚本以#! /bin/bash 表示以下代码用bash执行
#是shell的注释
----第一个脚本,打印hello world----
#!/bin/bash
echo "Hello World."
-----------------------------------
需要赋予执行权限 chmod u+x filename
第二种:bash echo.sh
bash功能
history 显示之前执行的命令,命令保存的数量,在配置文件/etc/profile下保存 HISTSIZE=1000。
历史命令保存的位置在用户的家目录下的.bash_history文件内。
history -w 将内存中的命令(目前用的)保存到文件,因为只有退出shell后,你敲入的命令才会保存进文件。
history -c 清空所有历史记录
!n 执行第n条历史命令
!str 重复最后一个以str开头的命令
方向箭头 调用前面的命令
别名
alias 查看系统中生效的别名
alias ls = "ls --color=never" 临时定义别名
家目录/.bashcrc 下定义别名,使别名永久生效
rm -i 删除时询问(-i)
·······················文件名 文件描述符 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器
输出重定向:改变输出方向,比如输入到文件
>> 追加到文件
如果一条命令执行的时候有错误怎么办?把错误输入到一个文件,如:ls sfsfs 2>>err.txt #会把错误信息输出到err.txt文件
ls &>out.txt 错误的和正确的都会输出到out.txt,新版本shell可以追加进文件。
ls . >>a 2>>b #将正确的输出到a文件,错误信息输出到b文件
ls >> aa 2>&1 #错误和正确文件都输入到aa,2>&1 把标准错误重定向到标准正确输出
多命令顺序执行
cmd1;cmd2;cmd3 顺序执行,之间没有关系
cmd1 && cmd2 cmd1正确执行,cmd2才执行
cmd1 || cmd2 cmd1不正确执行,cmd2才执行
ls aa && echo "yes" || echo "no" #ls正确执行,输出yes,否则输出no
管道符 |,命令1 | 命令2 命令1的执行结果,作为命令2的执行条件
netstat -tlun | grep 80 #查看80端口
ls -l /etc/ | more #分屏显示第一个命令的结果
错误输出,不能有空格
变量
分类:本地变量,环境变量,位置参数变量,预
定义变量
shell把所有变量都识别成字符串型
本地变量:
a=123 #不能有空格
echo $a #打印a的内容
echo Hello #打印出Hello
set 查看本地和环境变量
unset a 删除a变量
变量设定规则:
以=相接,不能有空格
变量值有空格,则用双引号包裹
双引号能解析变量,类似PHP,如echo "$a" 输出"123",单引号不解析
cc = `ls /root` 将ls /root的结果赋值给cc
cc=$(ls /root) 与上面一样
a=123
a="$a"456echo $a 123456
环境变量一定为大写
pstree命令
本地变量只在当前shell中有效,环境变量在每个shell中都有效
如何设置环境变量呢?
export 变量名,如
export a 或 export b=100
env export只能查看环境变量
export可以查看变量的类型
declare 声明变量类型,如果没特别声明,则默认为是字符串类型
declare -i 声明int类型
-x 声明为环境变量
比较重要的环境变量是PATH,它是程序查找的路径
echo $PATH
增加当前路径到PATH
PATH="$PATH":/home/code
增加/home/code到PATH变量
环境变量配置文件:
对所有用户有效:
/etc/profile
/etc/bashrc
对当前用户有效
~/.bashrc
~/.bash_profile