shell学习笔记

shell学习笔记

  • Shebang
  • 脚本执行
  • 数据类型
    • shell脚本是弱类型语言,
    • 特殊变量
    • 引号
  • 会话
    • history
    • 线程
  • 环境变量
    • 检查环境变量
  • 基本内置命令
    • echo
    • eval
    • exec
    • 子串

Shebang

在windows中脚本为*.bat文件,Liunx脚本为*.sh文件。

  • #!/bin/sh程序执行时调用/bin/sh,即bash解释器。
  • #!usr/bin/python调用python解释器。
  • #!/usr/bin/env 解释器名称从环境变量中寻找解释器。

脚本执行

  • 文件没有可执执行权限或未添加Shebang:bash script.shsh script.sh
  • 文件有可执行权限:./script.sh即以相对路径或绝对路径执行。
  • source script.sh. script.sh两种方式等价。
  • 较少用的方式:sh < script.sh将数据流写入shbash

查看系统支持的解释器:

cat /tec/shells

查看sh路径:

echo $SHELL

数据类型

shell脚本是弱类型语言,

name="老王"  # 变量后面不能有空格,且无需申明类型

# 引用变量
echo $name
echo ${name}

特殊变量

# 参数变量
$0  #脚本文件名和脚本路径
$1...$n  # 参数
$#  # 参数个数
$*  # 获取所有参数,将所有参数保存为一个整体
$@  # 获取所有参数,参数独立保存

# 状态变量
$?  # 上条命令是否执行成功
$$  # 当前脚本进程号
$!  # 上次后台进程的PID
$_  # 上次命令的最后一个参数

引号

# 单引号不能识别特殊字符
name2='$name'  # $name
# 双引号可以识别特殊字符
name3="$name"  # 老王

# 反引号,将代码的结果保存下来
name=`ls`

会话

history

# 查看历史命令
history
# 查看最大数量
echo $HISTSIZE
# 清空历史命令
history -c
# 恢复历史命令
history -r
# 调用历史记录命令 !+id
!3006
# 执行上次命令
!!
sudo !!

线程

# 开启子线程
bash
# 退出子线程
quit
# 查看线程数
pstree


# bash执行命令会开启子线程
bash script.sh
# 使用source或者.则不会开启子线程
source script.sh

环境变量

检查环境变量

环境变量可以在shell中临时创建,退出即丢失,想永久生效,可以添加到配置文件中。

  • 用户个人配置:~/.bash_profile~/.bashrc
  • 全局配置文件:/etc/profile/etc/bashrc

检查环境变量

  • set 输出所有变量
  • env 输出全局变量
  • declare 输出所有变量,如同set
  • export 显示和设置环境变量值

找到某个环境变量

export |gerp 变量名
  • unset 变量名:删除变量或函数
  • readonly:只读变量

基本内置命令

echo

-n 不换行输出
-e 解析字符串中的特殊字符

eval

执行多个命令

eval ls;cd www

exec

不创建子进程并执行后续命令,执行完程序后退出exit。

子串

${变量}  				# 变量值
${#变量}  			# 变量长度
${变量:start}  		# 从索引后截取子串,如${name:2}
${变量:start:length}
${变量#word}  		# 从变量开头删除最短匹配的word子串
${变量##word}  		# 删除最长匹配的word子串
${变量%word}  		# 从后向前删
${变量%%word}

${变量/pattern/string}# string代替第一个pattern
${变量//pattern/string}# string代替所有的pattern

你可能感兴趣的:(python,shell)