什么是shell
shell是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。
shell的类型 ash bash ksh csh tcsh
- /etc/shells
- echo $SHELL
程序在shell中运行,shell中可运行子shell
存取权限和安全
setuid(suid/guid) chmod u+s,g+s file
chown 和chgrp(chown user file /chgrp group file)
umask(umask nnn)
ls -l :
下面列出文件类型:
- 普通文件
d 目录文件
l 链接文件
c 字符设备文件 一般放dev下
p 命令管道文件
b 块设备文件 一般放dev下
s socket文件
采用符号模式改变权限
chmod [who] operator [permission] filename
who(u,g,o,a)
operator(+,-,=)
permission(r,w,x,s,t) [s:setuid t:]
采用数字绝对模式改变权限
r-4 w-2 x-1
chmod 644 myfile
chown itlab.itlab hello -R
umask 【在/etc/profile($HOME/.profile
$HOME/.bash_profile】
umask 文件 目录
0 6 7
1 5 6
2 4 5
3 3 4
4 2 3
5 1 2
6 0 1
7 0 0
符号链接 ln -s source-path darget-path
shell简单脚本
・ 使用shell脚本的原因【功能强大,节约时间】
・ shell脚本基本元素
#!/bin/bash --第一行
# --表示注释
变量
流程控制结构
#!/bin/bash
# helloworld.sh
a=helloworld
echo "This is my first shell script $a"
shell特性:
・ 别名 ・ 管道
・ 命令替换 ・ 重定向
・ 后台处理 ・ 模式匹配
・ 变量 ・ 特殊字符
alias ll = 'ls -l' 我们可以从 cat $HOME/.bashrc查看到alias
sort< myfile.txt>myfile_dort.txt
特殊字符:
・ 双引号(“):用来使shell无法认出空格、制表符和其他大多数特殊字符,这样”David Medinets“表示一个值,而不是2个同样”David< Medinets"表示一个值。
・ 单引号(’):用来使shell无法认出所有特殊字符
・ 反引号(`):用来替换命令
・ 反斜杠(\):用来使shell无法认出气候的特殊字符,使其后的支付失去了特殊的含义,如 David \ Medinets
・ 分号(;):允许在一行上放多个命令
・ &:命令后台执行
・ 括号():创建成组的命令
・ 大括号{}:创建命令块
・ 竖杆(|):管道表示符
・ <> :表示重定向
・ * ? [] !:表示模式匹配
・ $:变量名的开头
・ #:表示注释(第一行除外)
・ 空格,制表符,换行符:当做空白