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的运行返回

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

  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 脚本:打印每步执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值