shell编程基础总结

Shell 是什么:

shell 即 外壳,是一个与系统内核(kernel)通信的程序。
shell 最简单的定义是 命令解释器(command interpreter)。

命令解释器的作用:
  1. 将使用者的命令翻译给内核处理。
  2. 同时将内核处理的结果翻译给使用者。
登入(login)后,我们取得的 shell 叫:

login shellprimary shell

在 shell 内执行的命令,均是 shell 产生的子进程,这个过程叫做 fork
在 shell 内执行脚本(shell script),进程的 fork 过程为:

  1. primary shell 产生 sub shell(即脚本)进程
  2. sub shell 产生脚本中所有命令的进程
查看 Linux 中的 shell:
cat /etc/shells
两大主流 shell:

sh:sh、bash
csh:csh、tcsh、ksh
还有一个叫 zsh

命令提示符最右边的符号:

$:表明登录用户是普通用户
#:表明登录用户是 root

Carriage Return 即回车,按下回车键命令就开始执行。
PS1 为 shell 的内置变量,用于指定命令提示符字符串的样式。

shell 可接受的命令名称包括:
  1. 包含完整路径的外部命令
  2. 命令别名(alias)
  3. 自定义功能(function)
  4. 内置命令(built-in)
  5. $PATH 变量指定的搜索路径中的命令
单引号和双引号的区别:

单引号会去掉所有 shell 元字符的特殊含义,变成普通字符。
双引号会去掉大部分元字符的特殊含义,但保留以下4个符号的特殊含义:

$(美元符)、`(反引号)、\(反斜杠)、"(双引号)

export 导出的环境变量:

环境变量会被子进程继承,注意shell 的环境变量,在子进程中得到的是环境变量的副本,子进程无法改变父进程的环境变量的值

bash/sh、source/.(点)、exec 的区别:

shell 中运行外部命令会 fork 子进程,运行内部命令直接在 primary shell 中运行。
外部命令:bash/sh
内部命令:source/. 和 exec

bash/sh 的作用:
bash script_filename.sh #运行脚本
sh script_filename.sh #运行脚本

source/. 的作用:
直接在当前 shell 中运行(导入)脚本内容,如:
source script_filename.sh
. script_filename.sh

所以,source/. 可以用来加载 shell 初始环境,或者在脚本中导入另一个脚本的代码,就像 Python 的 import 一样。

() 和 {} 的区别:

() 将命令组(command group)置于子 shell中执行,也称为 nested sub-shell。
{} 则在同一个 shell 中执行命令,也成为 non-named command group,其实更像是一个未命名的函数。

命令替换:`cmd` 和 $(cmd):

反引号对有更好的兼容性。
$(cmd) 有更好的代码可读性,建议使用这个。

${} 变量替换:

1,常规替换:
${var}

2,4种特殊替换:
${var:-string},${var:+string},${var:=string},${var:?string}

3,4种模式匹配替换:
${var%pattern}, ${var%%pattern}, ${var#pattern}, ${var##pattern}

4,字符串提取和替换:略

${#var} 可计算出变量的长度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值