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. 为什么手游选择lua热更新方案。

    https://www.zhihu.com/question/29603593 主要因为iOS系统的原因. 在这个知乎问题里,有两条回答,能解释我的疑惑.如下两个图. 我个人总结为,编译型语言(C#) ...

  2. 编译内核出现错误cc1: error: code model kernel does not support PIC mode

    删除该模块目录下的 .cache.mk 文件就好了,重新 make 即可

  3. GIT迁移仓库地址时如何保留分支和历史记录

    需求背景 GIT仓库(GitLab)所在服务器因某些原因要关停,相关服务需转移到另外一台机器上. 操作步骤 # clone项目 git clone --mirror http://192.168.12 ...

  4. Oracle11g空表导出设置

    alter system set deferred_segment_creation=false; select 'alter table '||table_name||' allocate exte ...

  5. 86、linux离线安装nginx

    参考 nginx  离线安装https://blog.csdn.net/ywd1992/article/details/83095855

  6. 通过nft持有大户地址获取正常交易和内部交易

    /*内部交易*/------------ CREATE TABLE `internal_txlist` ( `blockNumber` varchar(255) DEFAULT NULL, `tx_t ...

  7. .NET 7介绍及环境准备

    环境要求 VS2022 17.4+

  8. windows检查

    # coding: UTF-8 import psutil import platform import re def get_cpu_used(upu_base, interval=1): perc ...

  9. virtualenv管理py环境linux版

    因为服务器上已经安装了python3,所以直接安装virtualenv即可 pip3 install virtualenv -i https://mirrors.aliyun.com/pypi/sim ...

  10. Mac如何用鼠标快速锁屏

    锁屏谁不会啊?本来写这篇文章,感觉自己太多余,但用鼠标直接锁屏就有点小意思,Mac对于很多人来说非常模式,通常是商务.设计这类人事在使用,对于新手而言,它的功能过于隐藏,那么Mac要如何达到快速锁屏呢 ...