Shell-01Shell初相识
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的运行返回
程序执行,可能有两类返回值
- 程序执行结果
- 程序状态返回代码(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初相识相关推荐
- 数据可视化系列(一):Matplotlib初相识
前言 期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈 这次我主要目的是最近要写篇论文,也正好为以后建模画图打捞基础~ 大家可以多看看官方教程: 中文官方网站:http ...
- matplotlib可视化初相识
目录 第一回:Matplotlib初相识 一.认识matplotlib 二.一个最简单的绘图例子 三.Figure的组成 四.两种绘图接口 五.通用绘图模板 第一回:Matplotlib初相识 一.认 ...
- 学习打卡1-Matplotlib初相识
学习打卡1-Matplotlib初相识 一.认识matplotlib matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利 ...
- 数据可视化组队学习:《Task01 - Matplotlib初相识》笔记
第一回:Matplotlib初相识 本文为组队学习任务01学习笔记. Matplotlib简要总结 Matplotlib的结构 一个完整的Matplotlib图像包括四个层级: Figure:容纳所有 ...
- mysqldump单个库导出_初相识 | 全方位认识 sys 系统库
前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...
- (二)HTTP初相识--了解HTTP协议
HTTP初相识--了解HTTP协议 浏览器背后的故事 HTTP协议的前世今生 透过TCPIP看HTTP DNS域名解析 回溯HTTP事务处理过程 与HTTP请求的第一次亲密接触 浏览器背后的故事 通过 ...
- 【自动驾驶摸爬滚打路】自动驾驶仿真软件SCANeR 001初相识
自动驾驶仿真软件SCANeR 001初相识 最近开始学习使用自动驾驶仿真软件SCANeR Studio 于是乎找了一圈,好像没有发现这个软件的pojie版 于是上官网申请试用版 AVSimulatio ...
- Hive查询系列之初相识
Hive查询系列之初相识 1 基本查询(select--from) 1.1 全表和特定列查询 0)数据准备 (0)原始数据 dept: 10 ACCOUNTING 1700 20 RESEARCH 1 ...
- 初相识 | 全方位认识 sys 系统库
前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...
- shell脚本初体验
今天学习了下写shell脚本,有点激动,特此记录下(其实不难写嘛) 原因: 现在做的项目,需要多工程依赖,但是麻烦的是,并没有将多个工程自动关联上...所以,每次操作,就是先切到A 工程目录 下,更新 ...
最新文章
- Linux程序映像的布局
- 使用conan编译安装poco
- 运行jar中某个类的main方法
- 量化策略回测tdma
- 挑netfilter的11个不足之处
- 视频演示SHAtter越狱iOS 4.1
- vue综合项目——悦听音乐播放器
- 嵌入式linux保存参数数据
- 肖特基二极管焊接注意事项和判断正负极的方法
- 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
- SSD固态硬盘怎么选?选对接口是关键
- PNG透明图片叠加(Opencv实现,包括旋转缩放以及边界处理)
- 操盘建议----全球顶尖交易员的成功实践和心路历程(三)
- 【tm1650调试记录】
- OrientedRepPoints_DOTA环境搭建训练流程及问题
- python空间相册爬虫_淘女郎相册爬虫(Python编写)
- PMOS和NMOS在开关应用中高侧和低侧驱动的对比
- 初创电商步步谈(一)- 前期准备的内容真不少
- python matlab 多条曲线 单位_【基础篇】MATLAB科研制图常用代码命令
- 专访光庭:传统测绘与众包模式融合,高精地图呼唤新的算法与平台