linux shell 目录

目录

参考链接

类型

unix支持三大主流shell

  1. Bourne shell(AT&T开发 shell),标准的unix shell,以$提示
  2. C shell(Berkeley分校 shell),以%提示
  3. Korn shell (Bourne shell的一个扩展集,AT&T的David Korn开发)

linux支持的shell(可有四种)

  1. GNU的shell,默认GNU bash(Bourne Again shell)
  2. TC shell 是unix C shell的一个兼容分支(模仿TENEX名字)
  3. Z shell 是linux shell的一种,综合体:结合了bash,tcsh,ksh
  4. 还有一种pdksh(Public Domain Korn shell),是需要向AT&T付费

查看支持/etc/shell

POSXI标准,操作系统标准,其中规范了shell和工具软件标准

执行解析顺序

  1. 别名
  2. 关键字
  3. 函数
  4. 内置命令
  5. 可执行程序(派生子shell执行)

​ 命令的退出时子shell完成,exit返回给父shell的状态

部分相关命令

查询进程 ps pstree kill

ps -aux

pstree

kill 2564

查询用户身份 id

为文件创建掩码 umask

为文件创建掩码,可以使目录和文件默认权限减去umask值

chmod 修改文件和目录访问权限

chown 改变文件和目录的所有者

​ chown 用户:组 filetest 例如 chown root:root filetest.txt

env 查看变量

env 显示环境变量(理解为全局)

| 管道

pipe | 管道两边相当于开了两个子shell,同时执行,不过一个要往管道输入东西,一个要从里面读取东西

who | wc 相当于 who > tmpfile;wc tmpfile;rm tmpfile;

shell和信号(进程会反应)

有些输入会形成信号,然后给shell,会致使shell下进程做出下面动作:

  • 忽略信号
  • 停止进程
  • 继续进程
  • 进程被程序中定义的函数捕获,进行处理

信号表:

shell主要内容

1. 开头(第一行)和环境说明

#!/bin/bash

#!为幻数

一个进程(shell)的环境包括:变量、打开的文件、当前工作目录、函数、资源限额、信号等。

使用source(.)命令可以使文件的所有设置成为当前shell的一部分。

/etc/profile 系统级初始化文件

​ 找到/etc/profile.d/*文件执行

.bash_profile(三选一执行) 在用户主目录下,执行~/.bashrc,没有找下面

​ ~/.bashrc,env变量被赋值为名称.bashrc,每次bash脚本,或者shell启动,都会对这个文件进行source,包含了下面设置

​ set -o 打开内置选项

​ set +o 关闭内置选项

​ 直接set -o 查看所有当前设置

​ 执行/etc/bashrc

.bash_login(三选一执行) 没有找下面

.profile(三选一执行)没有就到此为止

​ 用户自定义的初始化文件

命令默认搜索路径 echo $PATH

hash命令 显示登陆会话的已执行命令完全路径名

命令分组(注意内侧空格)

​ ( ls; pwd; date ) > outfile

后台执行

​ man sh | lp&

进程控制(作业控制)

​ [root@192 ~]# jobs -l 显示后台的作业

​ [1]+ 2998 Stopped vi

​ jobs %% 最后一个放进后台的

​ fg %1 拿回前台

​ kill 2998

历史命令history

别名

​ alias cp=‘cp -i’

​ unalias cp 删除别名

2. 注释 使用#号

3. 通配符

有操作含义的字符 ,在shell中不仅仅是看到的字符串

ls f{a,b,stab} 注意里面没有空格

注意此处(){}在执行命令时的区别

()开启子shell

{空格echo aa;cc=cc;} 在本shell中执行

取消了元字符功能

扩展gloabbing功能(和正则有点区别)

对于双引号,单引号处理特殊的元字符,会使其失效,就是普通字符

但是对于双引号不回禁止$变量替换 和 反引号命令替换

\ 转义单个字符,在“” ‘’ 里面也被保护,但是在“” 中碰到特殊元字符会触发保护,可解决双引号$ 和反引号问题

单双互相保护(单双也是特殊字符)

4. 局部变量和全局变量

取消变量 unset

设置变量 declare -a -f -F -i -r -x

设置全局变量

export var=aa

declare -x arr=aa

5. 提取变量 $name 变量修饰符

var2=${var:-word} var有则自己给 if var 为空,则var 为word,var为空;否则var为空,var2为var

var2=${var:+word} var则别人给

var2=${var:=word} var有则自己给 if var 为空,则var 为word,var为空;否则var为word,var2为var

var2=${var:?word} var有则自己给,否则输出word信息

var2=${var:0:4} 0为开始位置,4为长度

var2=${var:0} 0为开始位置

取消变量使用 unset var 没有$符号

${var%模式}鱼尾少不贪 使用上面的通配符匹配

echo ${var:=aaadddccdcc} echo ${var%d??} 注意完整匹配

${var%%模式}

${var#模式}

${var##模式}

/etc/aaa.txt ${var##*/} 可取出basename效果

${#var} 变量长度

6. 显示输出 echo printf

echo用法

printf 用法

7. 读取用户输入 read

read var1 var2 var3 对于其余的都会给var3

默认给REPLY

8. 脚本位置参数 $* shift

注意,$@ $*

如果是 “$@” 看成分割的"aa" "BB" "cc",此时for循环三次

如果是 “$*” 看成不分割的"aa BB cc"

9. 重定向符号

shell 启动时继承了3个文件stdin stdout stderr

来自键盘 去向屏幕 去向屏幕

1>

2>

find . -name *.c -print > foundit 2> /dev/null 双向奔赴

&> 或者 >& 一起走向

&1

&2

>>

exec和重定向

exec ls 运行后退出shell,小心

here文档和重定向输入<<

shell调用选项

内置set命令选项

shopt命令和选项

shell内置命令

10. 数组使用

数组参考链接

11. 命令替换型变量赋值

反引号 `命令`

$(命令)

12. 算数运算

求值给变量赋值

$[ exp ]

可不带空格 echo $[1+5*3]

echo \([\)v1+53] echo $[v1+53] 使用变量

$(( exp ))

echo $((1+5*3))

echo \(((\)v1+53)) echo $((v1+53)) 使用变量

declare -i var1 必须先声明,再var1=5+5/5

let 可用于整数运算和数值表达式测试

let “i+=1” ((i+=4))代替let

使用expr(待补充中)

浮点运算

echo “scale=3; 13/2”|bc

使用awk

13. 运算符 大小 等于 逻辑

14. 条件语句 if case

条件结构和流程控制

15. 循环语句 for while until

16. 文件测试(和if一起使用)

17. 函数

18. 调试shell脚本

19. 三剑客和linux正则表达式

​ 三剑客参考链接

​ linux正则表达式参考链接

20. linux 正则表达式参考

21. vim编辑器使用

​ 参考链接

最新文章

  1. sharedUserId
  2. CentOS-7下安装MySQL5.6.22
  3. [ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)
  4. 使用SignalR构建一个最基本的web聊天室
  5. HDOJ2014青年歌手大奖赛_评委会打分
  6. Java中的局部变量表及使用jclasslib进行查看
  7. word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
  8. CP342-5做主站的profibus-dp组态应用
  9. transition-timing-function 属性
  10. Head First设计模式读书笔记
  11. ELK 构建 MySQL 慢日志收集平台详解
  12. 设计模式之桥接模式 c++11
  13. VB播放声音
  14. 中国移动CMPP协议、联通SGIP协议、电信SMGP协议短信网关
  15. Highcharts.Chart
  16. CTO详细讲解海量日志处理ELK
  17. Unix 网络编程 读书笔记1
  18. RIGHT-BICEP单元测试——“二柱子四则运算升级版”
  19. MNIST神经网络的训练
  20. 【BZOJ 1566】 1566: [NOI2009]管道取珠 (DP)

热门文章

  1. AndroidStudio 集成kotlin,以及Kotlin-gradle-plugin-1.5.0.jar 下载失败
  2. centos6.5升级python3.6并安装boto3模块
  3. 国际版Office365客户端配置
  4. SparkRDD所有算子操作,建议全部手敲一遍
  5. SQL0818N/SQL0901N error when running db2advis
  6. 安装gitlab的总结
  7. HTML学习笔记4----更多元素
  8. fragment加radio不可滑动
  9. iOS 扩展与分类的区别
  10. OpenStack 虚拟机制作qcow2格式镜像