Shell的类型

Linux中默认的Shell是/bin/bash,流行的Shell有ash、bash、ksh、csh、zsh等,不同的Shell都有自己的特点以及用途,在liunx里面使用的都是一般都是bash

查看本机的shell种类

cat /etc/shells
/bin/sh                #是bash的一个快捷方式
/bin/bash            #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin        #表示非交互,不能登录操作系统
/bin/dash            #小巧,高效,功能相比少一些
/bin/csh #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh #是csh的增强版,完全兼容csh注:/bin/sh 和 /bin/bash 是一个东西,/bin/sh 是bash的一个快捷方式

站在用户登录的角度来说,SHELL的类型

  • 登录式shell:

    • 正常通常某终端登录

      • su - USERNAME
      • su -l USERNAME
  • 非登录式shell:
    • su USERNAME
    • 图形终端下打开命令窗口
    • 自动执行的shell脚本

Shell的运行方式

1、作为可执行程序

#!/bin/bash
.....

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

2、作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

Shell的运行返回

程序执行,可能有两类返回值

  1. 程序执行结果
  2. 程序状态返回代码(0-255)
    • 0: 正确执行
    • 1-255:错误执行,1,2,127系统预留;

定义脚本退出状态码

exit: 退出脚本
exit #

如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;

管道和重定向

shell、管道和重定向都是liunx特别厉害的设计,一般也是结合使用

重定向

涉及重定向,必须了解INPUT设备与OUTPUT设备

系统设定

  • 默认输出设备:标准输出,STDOUT, 1
  • 默认输入设备:标准输入, STDIN, 0
  • 标准错误输出:STDERR, 2
  • 标准输入:键盘
  • 标准输出和错误输出:显示器
Linux:
>: 覆盖输出
>>:追加输出
2>: 重定向错误输出
2>>: 追加方式
&>: 重定向标准输出或错误输出至同一个文件set -C: 禁止对已经存在文件使用覆盖重定向;强制覆盖输出,则使用 >|
set +C: 关闭上述功能/dev/null: 软件设备, bit bucket,数据黑洞    <:输入重定向
<<:Here Document

管道

前一个命令的输出,作为后一个命令的输入

命令1 | 命令2 | 命令3 | ...

bash的配置文件

bash: 脚本解释器

  • 全局配置

    • /etc/profile, /etc/profile.d/*.sh, /etc/bashrc
  • 个人配置

    ~/.bash_profile, ~/.bashrc

    • profile: 定义环境变量、运行程序或脚本
    • bashrc:定义本地变量、命令别名

登录式shell如何读取配置文件?

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非登录式shell如何配置文件?

~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh

bash调试参数

测试脚本是否有语法错误:

bash -n 脚本

调试脚本:

bash -x 脚本:打印每步执行

Shell-01Shell初相识相关推荐

  1. 数据可视化系列(一):Matplotlib初相识

    前言 期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈 这次我主要目的是最近要写篇论文,也正好为以后建模画图打捞基础~ 大家可以多看看官方教程: 中文官方网站:http ...

  2. matplotlib可视化初相识

    目录 第一回:Matplotlib初相识 一.认识matplotlib 二.一个最简单的绘图例子 三.Figure的组成 四.两种绘图接口 五.通用绘图模板 第一回:Matplotlib初相识 一.认 ...

  3. 学习打卡1-Matplotlib初相识

    学习打卡1-Matplotlib初相识 一.认识matplotlib matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利 ...

  4. 数据可视化组队学习:《Task01 - Matplotlib初相识》笔记

    第一回:Matplotlib初相识 本文为组队学习任务01学习笔记. Matplotlib简要总结 Matplotlib的结构 一个完整的Matplotlib图像包括四个层级: Figure:容纳所有 ...

  5. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

  6. (二)HTTP初相识--了解HTTP协议

    HTTP初相识--了解HTTP协议 浏览器背后的故事 HTTP协议的前世今生 透过TCPIP看HTTP DNS域名解析 回溯HTTP事务处理过程 与HTTP请求的第一次亲密接触 浏览器背后的故事 通过 ...

  7. 【自动驾驶摸爬滚打路】自动驾驶仿真软件SCANeR 001初相识

    自动驾驶仿真软件SCANeR 001初相识 最近开始学习使用自动驾驶仿真软件SCANeR Studio 于是乎找了一圈,好像没有发现这个软件的pojie版 于是上官网申请试用版 AVSimulatio ...

  8. Hive查询系列之初相识

    Hive查询系列之初相识 1 基本查询(select--from) 1.1 全表和特定列查询 0)数据准备 (0)原始数据 dept: 10 ACCOUNTING 1700 20 RESEARCH 1 ...

  9. 初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

  10. shell脚本初体验

    今天学习了下写shell脚本,有点激动,特此记录下(其实不难写嘛) 原因: 现在做的项目,需要多工程依赖,但是麻烦的是,并没有将多个工程自动关联上...所以,每次操作,就是先切到A 工程目录 下,更新 ...

最新文章

  1. Linux程序映像的布局
  2. 使用conan编译安装poco
  3. 运行jar中某个类的main方法
  4. 量化策略回测tdma
  5. 挑netfilter的11个不足之处
  6. 视频演示SHAtter越狱iOS 4.1
  7. vue综合项目——悦听音乐播放器
  8. 嵌入式linux保存参数数据
  9. 肖特基二极管焊接注意事项和判断正负极的方法
  10. 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
  11. SSD固态硬盘怎么选?选对接口是关键
  12. PNG透明图片叠加(Opencv实现,包括旋转缩放以及边界处理)
  13. 操盘建议----全球顶尖交易员的成功实践和心路历程(三)
  14. 【tm1650调试记录】
  15. OrientedRepPoints_DOTA环境搭建训练流程及问题
  16. python空间相册爬虫_淘女郎相册爬虫(Python编写)
  17. PMOS和NMOS在开关应用中高侧和低侧驱动的对比
  18. 初创电商步步谈(一)- 前期准备的内容真不少
  19. python matlab 多条曲线 单位_【基础篇】MATLAB科研制图常用代码命令
  20. 专访光庭:传统测绘与众包模式融合,高精地图呼唤新的算法与平台

热门文章

  1. 轻便易用的三维建模软件
  2. Excel应用技巧:不规则合并单元格的求和
  3. window7调用计算机,教你查看win7系统电脑使用记录的具体方法
  4. 深信服实习面经11_02
  5. 认识java安全管理器SecurityManager
  6. html引用css文件无效,关于html引用文件无效。
  7. 人工智能——机器学习与深度学习思维导图
  8. 新生活、新成长、新认知
  9. 奇异值分解实验:图像压缩与推荐系统
  10. 大数据分布式数据库系统介绍