Shell
- Shell字面理解是“壳程序”(操作系统可以分为核心kernel和外壳Shell两部分),用于用户和系统内核间的交互。相当于是一个命令解析器,其接收用户命令,然后调用相应的内核指令,完成相应的功能。
- Shell有很多种,如Bourne Shell(sh)、Bourne Again SHell(bash)、C SHell(csh)、Z
shell(zsh)等,这些Shell最大的区别就是命令集的不同。 - 注1:在linux/mac中预设的Shell就是bash;在Windows中的Shell是cmd和PowerShell,cmd功能较为简单,PowerShell功能则非常强大,可以看作cmd的超集。
- 注2:如何区分各种shell?可通过命令的开头字符,如果是
$, #
则为bash($
为普通用户,#
为管理员root超级用户);如果是PS <当前地址>
则为Powershell,如果直接是<当前地址>
则为cmd。 - 注3:同时Shell又是一种编程语言,可自动执行一连串的命令,并具有定义变量、循环/分支控制结构等特性。
目录写法
- 绝对路径:从根目录开始,以
/
开头 - 相对路径:相对当前目录的路径,不以
/
开头 ./
表示当前目录,../
表示上一级目录(iterable)~
表示当前用户目录,即/Users/user_name/
- 路径结尾:文件夹的话结尾最好加
/
以和文件区分两种斜杠区别
正斜杠/
:网址路径,linux、mac下地址路径(斜率为正因此称为正斜杠),网址路径和地址路径本质是一样的,都是资源定位符;
反斜杠\
:转义字符、win下地址路径;
Command-line syntax: some basic concepts
命令行是指可以在终端中运行的命令,通常会有很多的选项、参数,这些选项和参数有多种组合形式,而如何描述这些组合形式则需要一定的规则(syntax),这套规则不仅运用在command line的相关文档中,很多函数相关的文档也用这套sytax来规定如何使用参数,对其了解清楚会很便于我们后续阅读文档,因此在此介绍一些基本的概念。
command line基本形式
program_name command --option <argument>
,如git commit -m <msg>
program_name
:执行命令的程序;command
:程序要做的动作/要干什么事;--option
:动作的一些附加选项;<argument>
:这些附加选项的参数信息;
命令中常见的符号
<positional argument>
:尖括号angle brackets,表示位置参数,即必须要传入值的参数,positional指传入的是哪个参数的值是由位置指定的,因此其都是跟在某个option后面固定位置的;- 注意
<>
只等用来表示参数,不同表示option. [optional option]
:方括号square brackets,用来表示可选的选项,放在这里的选项都是可写可不写的。(直接写出来的选项都是必须写的)(required option)
:圆括号parens,表示必须写的选项的,其和直接把选项写出来的区别是:其通常和|
pipe符号连用,表示一组必须要有一个的相斥选项;{default values}
:花括号curly braces,用来指定一些默认的值;|
:竖线pipe,用来表示一组相斥的选项,即多个选项只能选其一。-
和--
:短杠dash,分为单短杠和双短杠两种,短杠后接参数的简写形式,双短杠则接参数的全称,两种情况是等效的。
eg.git commit -m <msg>
=git commit --message=<msg>
参考博客
docopt(一款命令解析软件的文档)
Command-line syntax: some basic concepts
环境变量/PATH
基本概念
- 环境变量是指一些列和系统直接相关的变量,其中最常用的为
PATH
变量(但不仅仅包含PATH),通常来说设置环境变量即为设置PATH
变量的意思。 PATH
变量中存储了一系列路径,输入终端的指令都要到PATH
变量包含的路径中,搜索名字匹配的文件来执行。- 设置
PATH
变量的好处:如果不加到PATH
变量中,每次执行程序就必须输入程序对应的目录,而将程序的目录加入PATH
后,每次就只需要输入程序名就可以了(终端会自己去目录下搜索名字匹配的程序)。
如何修改PATH变量
- 如何查看:
echo $PATH
- 环境变量格式:字符串形式,”dir1:dir2:dir3”,目录间以分号
:
分隔。 - 如何设置环境变量:
- 修改环境变量对应的文件,只针对当前用户的环境变量,在
/Users/user_name/.bash_profil
环境中修改;针对所有用户的环境变量:在/etc/profil
文件中修改。 - 设置
PATH="{$PATH}:directory_path"
- 或者直接通过终端执行上述命令也可以。
- 修改环境变量对应的文件,只针对当前用户的环境变量,在
export命令
设置环境变量:export name=value
;显示所有环境变量:export -p
。
注1: export的效力仅及于该次登陆操作,一旦退出用户,此次登陆就无效了。
注2: export和普通赋值的区别:本质都是对变量赋值,区别在于export的变量,次进程后续产生的子进程也可以访问,但普通赋值的变量就只能对当前的进程起作用。
terminal 操作命令
- 光标移至行首:ctrl+a
- 光标移至行尾:ctrl+e
- 删除一行/结束当前命令:ctrl+c
- ctrl+d:删除一个字符,如果没有字符的话就相当于发送Eof
- ctrl+z:挂起当前进程
Shell脚本编写
- 开头定义解释器环境
#! /bin/bash
- 定义变量:
variable_name=xxx
,直接等号赋值即可。注意:等号两边不能有任何空格! - 使用变量:
${variable_name}
,美元符号指明这是一个变量,外面的花括号用来指明变量边界(可选)。 - 脚本保存为:
script_name.sh
- 脚本执行:
sh script_name.sh
iterm2 + zsh + oh my zsh 改进终端体验
- iterm2: 可以理解为mac下terminal的增强版,增加了一些实用的功能,如:分屏、记录命令行历史等。
- zsh:z shell,是bash的增强版,兼容bash,且进行了一些改进。
- oh my zsh:是z shell的一个管理工具,可以对zsh进行扩展,功能有:更换zsh主题、对zsh装插件等。
如何切换shell
- 查看已安装的shell:
cat /etc/shells
- 切换shell:
chsh -s /bin/zsh
- 查看当前shell:
echo $SHELL
Post Date: 2019-02-23
版权声明: 本文为原创文章,转载请注明出处