什么是Shell
- shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。
- shell是命令解析器,用户输入命令,它去解析,然后交给内核执行命令,内核便可以操作硬件。
- shell类型 ash、bash、ksh、csh、tcsh
cat /etc/shells 看系统下的shell
echo $SHELL 看当前用户运行的shell - shell中可以运行子shell或者说叫做切换shell
- /bin/csh –进入子shell
- 退出子shell–exit
- linux下默认的shell是bash
bash特点,快速(上下键);tab键盘自动补齐;自动帮助功能help
文件的默认权限
umask命令,用来指定,用户创建文件、目录,默认的权限位
实验:当umask为022,创建文件,权限位默认是:644
当umask为022,创建目录,权限位默认是755文件权限位=7-umask-1 目录权限位=7-umask
- umask的配置
/etc/profile($HOME/.profile $HONME/.bash_profile)
shell脚本
使用shell脚本的原因
- 功能强大
- 节约时间
基本格式
#!/bin/bash
#shell脚本
mytext="hello world"
echo $mytext;
- 注意初学者易犯错误:
1) 第一行#不是注释 其他#都是注释;
2) echo $mytextA;写错现象–在变量两边加上括号;
3) 写错现象#!bin/bash–缺少绝对路径
4) 脚本如果没有执行权限 chmod a+x 01hello.sh
shell特性
别名
- alias 查看本用户下的alias配置
- 自定义别名: alias ll = ‘ls -alh’
- alias ll = ‘ls –I –color=tty’
- cat $HOME/.bashrc 在这个用户下配置着alias命名的配置
命令替换
- ls
cat myfile
–alh 通过单反引号,把’cat myfile’的内容输出 传给ls命名 - 注意反单引号,在键盘的~符号的下方。也就是在键盘左上角 ESC键的下边
- ls
- 后台处理
- nohup commond &–有的Linux发行版也可不用nohup
- 一个终端可以同时运行多个程序
- nohup tar –cvf 111.tar.gz & 可以同时运行多个大文件压缩
- jobs –l 可以查看后台正在运行的命令
- 管道
- 把一个命令的输出作为另外一个命令的输入
- ls -l| sort; ls | sort
- 重定向 < 输入 >输出
- 与管道相关,可以改变程序运行的输入来源和输出地点
sort< myfile.txt
sort<myfile.txt >myfile+sort.txt
- 模式匹配
- 显示以txt为扩展的文件或者显示以a开头的文件,这种能力叫做模式匹配
- 正则表达式
- 特殊字符
- 双引号(“”):用来使shell无法认出空格、制表符和其他大多数特殊字符,比如:建立一个带空格的文件touch “wang bao ming”。
- 单引号(‘):用来使shell无法认出所有特殊字符。
- 反引号(`):用来替换命令
- 反斜杠():用来使shell无法认出的特殊字符,使其后的字符失去了特殊的含义,转义字符。eg:创建带空格文件名 touch my\ file
- 分号(;):允许在一行上放多个命令。mv 1.txt 2.txt; mv 2.txt 3.txt;
- &:命令后台执行
- 括号():创建成组的命令
- 大括号{}:创建命令块。
- 竖杠(|):管道标示符
- < > &:重定向表示符
- ?/*/ [ ]/ !:表示模式匹配
- $:变量名的开头–引用变量
- #:表示注释(第一行除外)
- 空格、制表符、换行符:当做空白