我是靠谱客的博主 健康美女,最近开发中收集的这篇文章主要介绍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 脚本:打印每步执行

最后

以上就是健康美女为你收集整理的Shell-01Shell初相识的全部内容,希望文章能够帮你解决Shell-01Shell初相识所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部