shell 概述 shell 入门基础必知

shell 概述

shell 的两层含义: 既是一种应用程序, 又是一种程序设计语言


作为应用程序:

交互式地解释、 执行用户输入的命令, 将用户的操作翻译成机器可以识别的语言, 完成相应功能 , 称之为 shell 命令解析器

shell用户Linux 内核 之间的接口程序

用户在提示符下输入的命令都由 shell 先解释然后传给 Linux 核心

它调用了系统核心的大部分功能来执行程序、 并以并行的方式协调各个程序的运行

Linux 系统中提供了好几种不同的 shell 命令解释器, 如 sh、 ash、 bash 等。 一般默认使用 bash 作为默认的解释器。

shell 是用户跟内核通信几种方式的一种


作为程序设计语言:

它定义了各种变量和参数, 并提供了许多在高级语言中才具有的控制结构, 包括循环分支完成类似于 windows 下批处理操作, 简化我们对系统的管理与应用程序的部署 , 称之为 shell 脚本

c/c++等语言, 属于编译性语言(编写完成后需要使用编译器完成编译、 汇编、 链接等过程变为二进制代码方可执行)

shell 脚本是一种脚本语言, 我们只需使用任意文本编辑器, 按照语法编写相应程序, 增加可执行权限, 即可在安装 shell 命令解释器的环境下执行

shell 脚本主要用于:

帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中, 通过简单的一步执行操作完成相应任务, 从而解放他们的负担

增加可执行权限 :

chmod +x xxx.sh

直接执行即可

./xxx.sh 

shell 脚本大体可以分为两类:

系统调用 :

这类脚本无需用户调用, 系统会在合适的时候调用

/etc/profile: 此文件为系统的每个用户设置环境信息, 当用户第一次登录时, 该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bash.bashrc: 为每一个运行bash shell的用户执行此文件. 当bash shell被打开时, 该文件被读取.

~/.bashrc: 该文件包含专用于你的bash shell的bash信息, 当登录时以及每次打开新的shell时, 该文件被读取.

~/.bash_logout: 当每次退出系统( 退出bash shell )时, 执行该文件.

另外, /etc/profile 中设定的变量(全局)的可以作用于任何用户, 而 ~/.bashrc 等中设定的变量(局部) 只能继承 /etc/profile 中的变量, 他们是"父子"关系.

用户编写, 需要手动调用的 :

无论是系统调用的还是需要我们自己调用的, 其语法规则都一样


shell 脚本的定义与执行

定义以开头:

#!/bin/bash

\#! 用来声明脚本由什么 shell 解释, 否则使用默认 shell

单个"#"号代表注释当前行

执行:

增加可执行权限后执行

chmod + x xxx.sh ./xxx.sh 

直接指定使用 bash 解释 xxx.sh

bash xxx.sh 

使用当前 shell 读取解释 xxx.sh

.xxx.sh

# 或 

source test.sh

三种执行脚本的方式不同点:

./bash 执行过程基本一致,

前者首先检测 #!, 使用 #! 指定的 shell, 如果没有使用默认shell

后者明确指定 bash 解释器去执行脚本, 脚本中 #! 指定的解释器不起作用


./bash 去执行会在后台启动一个新的 shell 去执行脚本

. 去执行脚本不会启动新的 shell , 直接由当前的 shell 去解释执行脚本


栗子 clear.sh :

#!/bin/bash

# 清屏
clear

# 打印
echo "this is the first shell script"

全部评论

相关推荐

秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++ & Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务