Shell
系统上合法的 shell 写入/etc/shells 文件
登入取得的shell记录在 /etc/passwd 文件
alias
命令别名设定功能
alias 显示所有命名别名
alias xx=‘xxx’ 设定别名
alias lm=‘ls -al’
unalias
取消命令别名
unalias lm
type
type [-typa] name
主要用于找出【执行档】而不是一般文件名
可以用于类似 which 指令的用途~找指令
type | name 显示出 name是外部指令话说 bash 内建指令 |
---|---|
-t | type 会将name 以底下这些字眼显示出他的意义 |
file 表示为外部指令 | |
alias 表示该指令为命令别名所设定的名称 | |
builtin 表示该指令为bush内建的指令功能 | |
-p | 如果后面接的 name 为外部指令时,才会显示完整文件名 |
-a | 会由 PATH 变量定义的路径中,将所有含 name 的指令全部列出 来,包括 alias |
\
跳脱及换行
\可以跳脱紧接着下一个字符
快速编辑
组合键 功能与示范 | |
---|---|
[ctrl] + u/k | 从光标处向 前/后 删除 指令串 |
[ctrl] + a/e | 让光标移动到整个指令串最 前/后 面 |
变量
变量即以一组文字或符号等,来取代一些设定或者是一串保留的数据
变量的取用 echo
echo $XXX 或者 echo ${XXX}
例如将mikey 这个变量名称的内容设定为 I
mikey=I (变量的设定)
echo ${mikey} (查看变量)
在bash中,但一个变量名称尚未被设定时,预设的内容是 【空】 的。
变量设定的规则
1.变量与变量内容以一个等号【=】来连结
mikey=yussi
2.等号两边不能直接空格
mikey =yussi
mikey= yussi
3.变量名称只能是英文字母与数字,但是开头字符不能是数字
5mikey= yussi
4.变量内若有空格可使用双引号【"】或者单引号【’】将变量内容结合起来
-
双引号内的特殊字符如 $ 等,可以保留原有的特性。
var=“lang is $LANG” 则 echo $var 可得 lang is zh_TW.UTF-8 -
单引号内的特殊字符仅为一般字符(纯文本)
var=’lang is $LANG‘ 则 echo $var 可得 lang is $LANG
5.可用跳脱字符 [ \ ] 将特殊符号如 [Enter],$,\,空格等)变成一般字符
myname=VBird\ Tsai
- 在一串指令的执行中,还需要籍由其他额外的指令提供信息时,可以使用反单引号【`】或[$]
例如想要获取核心版本的设定
version=${uname -r} 在 echo $version可得 3.1…0-229.e17.x86_64
7.若该变量为拓展变量内容时,则可用"$变量名称"或${变量}累加内容
PATH="
P
A
T
H
"
:
/
h
o
m
e
/
b
i
n
或
P
A
T
H
=
PATH":/home/bin 或 PATH=
PATH":/home/bin或PATH={PATH}:/home/bin
8.若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量
export PATH
9.通常大写字母为系统默认变量,自行设定变量可以使用小写字母,方便判断(纯粹按照使用者兴趣与嗜好
10.取消变量的方法为使用 unset :【unset 变量名称】
unsrt myname
env
观察环境变量与常见环境变量说明
set
观察所有变量(包括环境变量与自定义变量)
PS1
提示字符的设定
\d 可显示出【星期 月 日】的日期格式 如“Mon Fer 2” | |
---|---|
\H | 完整的主机名 |
\h | 仅取主机名第一个小数点之前的名字 |
\t | 显示时间,为 24 小时格式的【HH:MM:SS】 |
\T | 显示时间,为 12 小时格式的【HH:MM:SS】 |
\A | 显示时间,为 24 小时格式的【HH:MM】 |
@ | 显示时间,为 24 小时格式的【am/pm】样式 |
\u | 目前使用者的账号名称 |
\v | BASH版本信息 |
\w | 完整的工作目录名称,由根目录写起的目录名称,但家目录会以~取代 |
\W | 最后一个目录名 |
# | 下达的第几个指令 |
$ | 提示字符,若为 root 时,提示字符为 # ,否则为 $ |
例如:
[dmtsai@mikey ~]$ cd/home
[dmtsai@mikey home]$ PS1='[\u@\h \w \A #\#]$ '
[dmtsai@mikey /home 16:22 #55]$
PID
目前这个 Shell 的线程代号
使用 echo $$ 可现实 PID 码
?
上一个执行的指令所回传的值
如果成功的执行该指令,则会回传一个 0 值,若执行过程中发生错误,则会回传一个非 0 的数值来取代
read
读取来自键盘输入的变量
-p | 后面可以接提示字母 |
---|---|
-t | 后面可以接等待的 秒数 |
declare/typeset
宣告变量的类型
-a | 将后面名为variable 的变量定义成数组(array)类型 |
---|---|
-i | 将后面名为variable 的变量定义成整数数字 (integer)类型 |
-x | 用法与export一样,将后面的 variable 变成环境变量 |
-r | 将变量设定成为 readonly 类型,该变量不可能被更改内存,也不能 unset |
变量类型默认为【字符串】,所以不指定变量类型,则 1+2 为一个【字符串】 而不是【计算式】。
bash环境的数值运算,预设最多仅能达到整数形态,所以 1/3 结果是 0;
ulimit
ulimit [-SHacdfltu] [配额]
-H | 严格的设定,必定不能超过这个设定值 |
---|---|
-S | 警告的设定 |
-a | 后面不接任何选项与参数,可列出所有的限制额度 |
-c | 限制每个核心文件的最大容量 |
-f | 建立最大文件容量 |
-d | 程序可使用的最大断裂内存容量 |
-l | 可用于锁定的内存量 |
-t | 可使用的最大 cpu 时间(单位为秒) |
-u | 单一用户可以使用的最大程序数量 |
变量的删除,取代与替换
变量设定方式 | 说明 |
---|---|
${变量#关键词} | 若变量内容从头开始的数据符合 【关键词】,则将符合的最短数据删除 |
${变量##关键词} | 若变量内容从头开始的数据符合 【关键词】,则将符合的最长数据删除 |
${变量%关键词} | 若变量内容从尾向前的数据符合 【关键词】,则将符合的最短数据删除 |
${变量%%关键词} | 若变量内容从尾向前的数据符合 【关键词】,则将符合的最长数据删除 |
${变量/旧字符串/新字符串} | 若变量内容符合 【旧字符串】,则【第一个旧字符会被新字符串取代】 |
${变量//旧字符串/新字符串} | 若变量内容从头开始的数据符合 【关键词】,则【全部旧字符会被新字符串取代】 |
history
历史命令
n | 数字,意思是【要列出最近 n 笔命令行表】 |
---|---|
-c | 将目前 shell 中所有 history 内容全部消除 |
-a | 将目前新增 history 指令新增入 histfiles 中, 若没有加 histfiles,则预设写入 -/.bash_history |
-w | 将目前的 history 记忆内容写入 histfiles 中 |
-r | 将 histfiles 的内容读到目前这个 shell 的 history 记忆中 |
!number | 执行第几笔指令的意思 例如:!2 |
---|---|
!command | 由最近的指令向前搜寻【指令开头为command】的那个指令,并执行 |
!! | 执行上一个指令【相当于按↑按键后,按 Enter】 |
学习总结:
bash的功能很方便,history和alias的功能让我特别惊喜和喜欢。变量的测试和内容替换这部分还是不是很明白。希望能够继续坚持下去!
2020/2/27
参考鸟哥linux私房菜
本文章仅用于记录学习过程内容