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编辑器使用

​ 参考链接

linux shell 目录的更多相关文章

  1. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  2. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  3. Linux Shell Script目录

    目录 Linux Shell基础 开始Shell编程 代码 示例代码查看:https://github.com/Furzoom/demo-C/tree/master/src/shell

  4. Linux Shell高级技巧(目录)

    为了方便我们每个人的学习,这里将给出Linux Shell高级技巧五篇系列博客的目录以供大家在需要时参阅和查找. Linux Shell高级技巧(一) http://www.cnblogs.com/s ...

  5. Linux Shell常用技巧(目录)

    Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...

  6. Linux Shell 常用命令与目录分区的学习总结

    很早就想根据自己的学习规律和遗忘规律,自己总结一下Linux/Unix系统的Shell命令,一来便于自己时常查询之用,二来也分享于各位博友 Linux shell是系统的用户界面,即命令行.它提供了用 ...

  7. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  8. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  9. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  10. Linux Shell 重定向与管道【转帖】

    by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...

随机推荐

  1. List list = new ArrayList()为何父类引用指向子类对象(多态)

    转自--https://blog.csdn.net/Jae_Peng/article/details/80151033 不习惯用csdn,博客园没有搜到类似的,摘录过来. 多态:要有继承,方法的重写, ...

  2. vscode 开发Vue项目

    写在开头 Vue作为前端项目,本身不依赖IDE,完全可以使用任何文本编辑器进行开发.我使用vscode仅是因为比较习惯,vscode几乎可以作为任何项目的开发IDE. 环境安装 安装nodejs,去官 ...

  3. Vue v-once指令 和 v-pre指令

    v-once指令: 1.v-once 所在节点在初始化动态渲染后,就视为静态内容了 2.以后数据的改变不会引起v-once所在结构的更新,可用于优化性能 v-pre指令: 1.跳过其所在节点的编译过程 ...

  4. chrome网页截图

    1. 打开网页 2. F12,打开开发者工具 3. Ctrl+Shift+P,打开应用查找框 4. 输入screenshot,查找相关工具 5. 试用工具 1)Capture area screens ...

  5. nuxt项目中使用store

    首先初始化创建一个nuxt项目 nuxt项目创建以后,内部已自动集成store,所以无需再单独安装和引入 在根目录的store文件夹下新建文件,例如home.js //home.js export c ...

  6. 前端实现HTML转PDF下载的两种方式

    原文链接:https://www.jianshu.com/p/56680ce1cc97 方式一:使用html2canvas和jspdf插件实现 该方式是通过html2canvas将HTML页面转换成图 ...

  7. es6数组去重、数组中的对象去重 && 删除数组(按条件或指定具体元素 如:id)&& 筛选去掉没有子组件的父组件

    // 数组去重 { const arr = [1,2,3,4,1,23,5,2,3,5,6,7,8,undefined,null,null,undefined,true,false,true,'中文' ...

  8. AI 智能搜索 开源hanlp实现

    AI智能搜索 通过网络资源可知有很多种开源方式实现智能搜索,其中hanlp在GitHub中响应居高 参考链接: https://www.hanlp.com/ Java版:https://github. ...

  9. mysql 1130报错只允许localhost登录解决方法

    提示:这些方法会改变登录权限,如果是生产服务器端谨慎操作!!! mysql出现错误码1130的解决办法: 错误描述: 错误代码:1130Host ***.***.***.*** is not allo ...

  10. Feign熔断

    在Feign中使用 @EnableFeignClients中已经默认打开了断路器功能,所以这里的启动类上不需要再加@EnableCircuitBreaker注解 只需要在@FeignClient中为f ...