背景
操作系统简史
-
贝尔实验室Unix(AT&T Unix VS BSD SUN)
-
PC时代(比尔盖斯DOS VS 乔布斯 Apple)
-
CUI时代(比尔盖斯Windows VS 乔布斯 Mac OS VS Linux)
-
移动时代(Google Android VS 乔布斯 IOS)
shell的价值
-
人机交互:shell VS GUI
-
批处理:
- Linux、unix、Mac、Android、IOS
- 脚本自动化 VS GUI 自动化
-
工作场景
- 服务端测试
- 移动端测试
- 持续集成与自动化部署
shell种类
-
常用shell
- bash
- sh
- zsh
-
Windows需要安装cygwin
- Cygwin
- git bash
Windows上没有/etc/shells
bash语言
变量
变量的定义
a=1
b=ascsd
c="hell world"
e='hell from "沐川"'
= 左右不要有空格
如果内容有空格,需要使用单引号或者双引号
双引号支持转译 $开头的变量会被自动替换
变量使用
echo $a
echo ${b}
echo "$a"
使用$var 或 v a r 来 访 问 变 量 。 后 者 更 为 严 谨 。 {var}来访问变量。后者更为严谨。 var来访问变量。后者更为严谨。var_x${var}_x是不同的
变量不需要定义也可以使用。引用未定义的变量,默认为空值
系统预定义变量
输入echo $ 敲两次tab键,系统会自动补齐与定义变量,例如:
[a1111@1111deMacBook-Pro ~ % echo $
! TERM_PROGRAM_VERSION
# TERM_SESSION_ID
$ TIMEFMT
* TMPDIR
- TMPPREFIX
0 TRY_BLOCK_ERROR
? TRY_BLOCK_INTERRUPT
@ TTY
ARGC TTYIDLE
CDPATH UID
COLUMNS USER
CPUTYPE USERNAME
EGID VENDOR
EUID WATCH
FIGNORE WATCHFMT
FPATH WORDCHARS
FUNCNEST XPC_FLAGS
GID XPC_SERVICE_NAME
HISTCHARS ZSH_ARGZERO
HISTCMD ZSH_EVAL_CONTEXT
HISTFILE ZSH_NAME
HISTSIZE ZSH_PATCHLEVEL
HOME ZSH_SUBSHELL
HOMEBREW_BOTTLE_DOMAIN ZSH_VERSION
HOMEBREW_CELLAR _
HOMEBREW_PREFIX __CFBundleIdentifier
HOMEBREW_REPOSITORY aliases
HOMEBREW_SHELLENV_PREFIX argv
HOST builtins
IFS cdpath
INFOPATH commands
KEYBOARD_HACK dirstack
KEYTIMEOUT dis_aliases
LANG dis_builtins
LINENO dis_functions
LINES dis_functions_source
LISTMAX dis_galiases
LOGCHECK dis_patchars
LOGNAME dis_reswords
LaunchInstanceID dis_saliases
MACHTYPE fignore
MAILCHECK fpath
MAILPATH funcfiletrace
MANPATH funcsourcetrace
MATCH funcstack
MBEGIN functions
MEND functions_source
MODULE_PATH functrace
NULLCMD galiases
OLDPWD histchars
OPTARG history
OPTIND historywords
OSTYPE jobdirs
PATH jobstates
PPID jobtexts
PROMPT key
PROMPT2 keymaps
PROMPT3 mailpath
PROMPT4 manpath
PS1 module_path
PS2 modules
PS3 nameddirs
PS4 options
PSVAR parameters
PWD patchars
RANDOM