shell笔记

输出重定向
命令 > 覆盖
命令 >> 追加

错误命令 2>文件
错误命令 2>>文件

ls >> /root/ls.txt
lst 2>> /root/ls/ls.txt 2和大于号不能有空格

不管正确错误都保存的格式
命令 >文件 2>&1
命令 >>文件 2>&1

命令 &>文件
命令 &>>文件

命令>>文件1 2>>文件2 正确 错误放在不同

ls &>/dev/null 丢入垃圾箱

输入重定向
wc 选项 文件名 ctrl+d 统计键盘的输入数量
-c 统计字节数
-w 统计单词书
-l 统计行数

wc < text.txt


wc << hello sdfsldfjs d hello 统计两个hello之前的

 

多命令顺序执行
;命令1;命令2 多个命令之间没有任何关系

&& 命令1&&命令2 逻辑与

|| 命令1||命令2 逻辑或


dd命令比cp厉害
dd if=输入文件 of=输出文件 bs=字节数 count=个数
主要用来进行磁盘复制

date;dd if=/dev/zero of=/root/testfile bs=1k count=10000;date


./configure && make && make install

管道符 连接两个命令

命令1的正确输出作为命令2的操作对象

netstat -an |grep ESTABLISHED
grep 选项 搜索内容 搜索文件
-i 忽略大小写
-n 输出行号
-v反向查找
--color=auto 颜色显示
grep "root" /etc/passwd


通配符
?匹配一个任意字符
*匹配0个或者多个任意字符
[]匹配里面的一个字符 [abc]
[-][a-z]匹配任意一个小写字母
[^0-9]匹配非字符

rm -rf * 删除当前目录所有文件

单引号不解析,双引号解析
反引号引用系统命令 abc=`date` echo $abc 先执行 后赋值
abc=$(date)和反引号一样

\$ 把特殊符号变为普通符号

shell变量 :

数字字母下划线,不能以数字开头
变量的默认类型都是字符串类型,如果要进行数值运算
必须指定变量类型为数值型

变量是用=连接,两侧不能有空格
变量的值有空格 需要用引号包含

name=$(date)
将命令结果作为变量赋值
环境变量建议大写


变量分类
用户自定义 环境变量 位置变量 预定义变量


变量查看 set
变量删除 unset
name=$(name)33333
echo $name
name="$name"33333

 

环境变量 :

用户自定义变量只在当前shell生效
环境变量会在当前shell和子shell当中生效
如果把环境变量写入配置文件,那么这个环境变量在所有的
shell中都生效


export 变量名=变量值
env 查询变量

pstree 进程树

 

env age 将已经定义的本地变量什么为环境变量

PS1='[\u@\h \W]\$ '
PATH
PATH=/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:
/usr/local/sbin:/usr/local/bin:/sbin:
/bin:/usr/sbin:/usr/bin:/root/bin
系统查找的路径 文件执行要绝对路径
变量累计
PATH=${PATH}:/root
临时生效


PS1提示符
echo $PS1
PS1='[\u@\h \w]\$ '

位置参数变量
$n $0命令本身 $1-9 代表参数 ${10}
$* 命令所有的参数 整体对待
$@ 所有参数,每个参数区分对待
$# 所有参数的个数


for i in "$*"
do
echo $i
done


预定义变量
变量名 变量作用不能改变

$?判断上一次命令的返回状态 0正确执行 非0执行不正确
$$当前进程号pid
$! 后台的最后一个进程号
find /root -name hello.sh & 放入后台执行

接收键盘输入
read 选项 变量名
-p 提示信息
-t秒数
-n 字符数
-s 隐藏输入数据

echo -e "\n" 输出换行符号

read -p "input you name " name
echo $name

数值运算与运算符 + - * /
aa=11
bb=22
cc=$aa+$bb
echo $cc 11+22
linux默认是字符串

declare +- 变量名
+取消
-设定
-i 设定为整形
-x 设定为环境变量
-p 查看被设定的类型

declare cc=$aa+$bb
echo $cc
33

dd=$(expr $aa + $b )
方法三
ff=$(($aa+$bb))
双小括号 比较常用

x=${y-new} 如何y不存在 x=new
如果y为空 x也为空
如果y不为空 x也为y的值

x=${y:-new}
y为空的时候 x为news

source 配置文件 生效环境变量
环境变量要从新登录后才生效
. 配置文件 和source配置文件

环境变量 set
配置文件
/etc/profile
/etc/profiled.d/*.sh
~/etc/.bash_profile
~/.bashrc
/etc/bashrc
其中中间两个只有当前用户生效
其他的所有用户都生效


echo $PATH
echo "$PATH":/root

 

posted @ 2015-04-02 23:35  brady-wang  阅读(204)  评论(0编辑  收藏  举报