shell简介
- 什么是shell
- shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。
- shell是命令解析器,用户输入命令,它去解析。
- shell类型 ash、bash、ksh、csh、tcsh
- cat /etc/shells 看系统下的shell
- echo $SHELL 看当前用户运行的shell
- 程序在shell中运行
- ls命令执行过程分析
- shell中可以运行子shell
- /bin/csh 退出子shell
- linux下默认的shell是bash
存取权限与安全
文件和目录的权限(-rwxr—r–)
setuid(suid/guid) (chmod u+s g+s file)
chown和chgrp(chown user file/chgrp group file)
umask (umask nnn) (文件创建时的缺省权限位)文件和目录的权限(-rwxr–r–)
文件的权限 硬链接数 用户名 用户组 文件大小 最近修改时间 文件名称 drwxr-xr-x 2 test test 4096 un 23 08:07 cppsocket1 -
目录 一般文件 快捷方式 字符设备 块设备 socket设备文件 管道文件 -d - -l -c -b -s -p chmod 改变文件或目录的权限位
- 非数字方式
读 写 执行 s(具有超级用户)t(执行文件在缓存)eg:chmod u=rwx, g+w, o+r myfile
注意:S位存在的意义:写一个程序,被执行是,临时拥有超级用户权限,执行完毕以后,有恢复普通身份,例如,写一个数据库脚本,这个数据库脚本具有超级管理员身份运行,运行完毕以后,恢复普通身份,避免破坏系统。 - chmod数字方式
chmod mode file chmod 775 file
r w x 数字代表 4 2 1
- 非数字方式
setuid(suid/guid)(chmod u+s, g+s file)
chown和chgrp(chown use file/chgrp group file)
- chown改变文件、目录所在的用户和用户组
- chgrp改变文件、目录所在的用户和用户组
- umask(umask nnn) 用来指定,用户创建文件、目录,默认的权限位
shell 脚本
使用shell脚本的原因
* 功能强大
* 节约时间
- shell脚本基本元素
# !/bin/bash
#shell脚本
mytext="hello world"
echo $mytext;
注:
易犯错误:
1) 第一行#不是注释 其他#都是注释;
2) echo $mytextA;写错现象;
3) 写错现象#!bin/bash
4) 脚本如果没有执行权限,如何办 chmod 755 hello.sh
shell脚本运行方式
./01shell.sh $PATH
shell特性
- 别名
- 通过
alias
查看本用户下的alias配置 - 自定义别名
alias ll=‘ls –I –color=tty’
.bashrc
该文件配置了bash的各种配置
- 通过
- 后台处理
nohup tar –cvf 111.tar.gz
将压缩文件的任务后台运行jobs –l
可以查看后台正在运行的命令
- 管道
- 把一个命令的输出作为另外一个命令的输入
ls -l| sort
- 把一个命令的输出作为另外一个命令的输入
- 重定向 < 输入 >输出
- 与管道相关,可以改变程序运行的输入来源和输出地点
sort<myfile.txt >myfile+sort.txt
- 模式匹配
- 显示以txt为扩展的文件或者显示以a开头的文件,这种能力叫做模式匹配
- 正则表达式
- 特殊字符
- 双引号(“”): 用来使shell无法认出空格、制表符和其他大多数特殊字符,比如:建立一个带空格的文件touch “wang bao ming”。
- 单引号(‘): 用来使shell无法认出所有特殊字符。
- 反引号(` ): 用来替换命令。
- 反斜杠(\ ): 用来使shell无法认出的特殊字符,使其后的字符失去了特殊的含义,转义字符。
- 分号(; ): 允许在一行上放多个命令。
mv 1.txt 2.txt; mv 2.txt 3.txt;
- &:命令后台执行
- 括号():创建成组的命令
- 大括号{}:创建命令块。
- 竖杠(| ): 管道标示符
- < > &:重定向表示符
- * ? [ ] !:表示模式匹配
- $: 变量名的开头
- #: 表示注释(第一行除外)
- 空格、制表符、换行符:当做空白
- 别名
变量和运算符
本地变量
影响变量的命令
环境变量
引号
变量替换
运算符
位置变量
表达式变量
标准shell变量
运算符的优先级
特殊变量
简介:什么是shell变量?本地变量,环境变量,变量替换(显示变量),位置变量,标准变量,特殊变量,影响变量的命令
- 本地变量
- 本地变量在用户现有的shell生命期的脚本中使用。
- 定义:
variablename=value
- 使用:
$MYVAR
或echo $MYVAR
或echo ${MYVAR}
- 注:定义本地变量:MYVAR=”test”
=
左右不要有空格 set
显示本地所有的变量- 定义只读本地变量 :
readonly variablename
注:readonly myvar1=”test2” ;myvar1=”test2”;
bash会报错误
注: 每登录一个终端,都会运行一个shell程序,这个本地变量,就保存在这个shell程序中;如果再新登录,将启动新的shell程序,与原来的shell不同。
- 环境变量
环境变量用于所有用户进程(经常称为子进程)。登录进程称为父进程。shell中执行的用户进程均成为子进程。不像本地变量(只用于现在的shell),环境变量可用于所有子进程,这包括编辑器、脚本和应用程序。
$HOME/.bashrc
(/etc/profile,所有用户都使用的profile)- 声明环境变量
export mytest="test"
- 查看新增的环境变量
env
未完,待续