跟着鸟哥学Linux系列笔记3-第11章BASH学习
认识与学习bash
1. 硬件、内核与shell
2. 用户界面《=====》核心Kernal(cpu进程,内存管理、磁盘输入输出)《=====》硬件
3. Shell定义:只要能够操作应用程序的接口,狭义的shell指的是命令行方面的软件,包括bash,广义的shell则包括图形界面的软件
为何要学shell:
1. 命令行界面的shell支持所有distribution
2. 远程管理,命令行界面快
3. Linux的任督二脉
bash简称:Bourne Again SHell
shell命令存储于/etc/shells/...,shell有多种:sh, bash, ksh, tcsh, csh, zsh
bash shell 功能:
命令记忆能力(history),默认记忆功能达到1000个,记录在~/bash_history
命令与文件补全功能(tab多按几次就知道了)
命令别名设置功能(alias): ln='ls -al'
作业控制,前台,后台控制(job control, foreground, background)
脚本程序(shell script)
通配符(wildcard): ls -l /usr/bin/X*
bash shell 内置命令:type,用于查看是内置bash命令还是外部命令
type [-tpa] name
type ls
type cd
type -t ls
shell 的变量功能
变量的可变性与方便性
影响bash环境操作的变量:PATH, HOME, MAIL, SHELL
脚本程序设计(shell script)的好帮手
变量就是以一组文字或符号等,来替代一些设置或是一串保留的数据
变量的显示、设置:echo, unset
输出变量:echo $PATH 或echo ${PATH}
设置变量值:myname=Garin
变量定义规则:
1. 等号两边之间不能有空格
2. 变量名只能是英文字母与数字,但开头不能为数字
3. 若有空格,则使用双引号:双引号内可以使用变量
或单引号:单引号内不能使用变量(命名规则跟PHP字符串相似)
4. 可以使用转义字符"\",将特殊符号变为一般字符
5. 反单引号"`",提供其他命令提供的信息:
例如:取得内核版本:version=$(uname -r) 或version=`uname -r`
echo `version` /echo $version
6. 若变量需要修改,则可用"$变量名称"或${变量}累加内容
PATH="$PATH":/home/bin
7. 若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量,例:export PATH
8. 通常大家的字符为系统默认变量,自行设置变量可以使用小写字符,方便判断
9. 取消变量的方法为使用"unset 变量名称"
unset myname
子进程:在目前这个shell情况下,去打开另一个新的shell,新的shell就是子进程,在一般状态下,父进程的自定义变量是无法在子进程内使用的,但是通过export将变量变成环境变量后,就能够在子进程下面应用了
例如:如何进入到你目前内核的模块目录:
cd /lib/modules/`uname -r`/kernal
cd /lib/modules/${uname -r}/kernal
环境变量的功能:
nev: 查看环境变量与学见环境变量说明
HOME: 可以直接cd去
SHELL: 目前使用的是哪个shell程序,默认/bin/bash
HISTSIZE: 历史命令条数
MAIL: 读取邮件信箱文件
PATH: 文件路径
LANG: 重要,语系数据,很多信息都会用到它,中文编码通常是zh_CN.gb2312或zh_CN.UTF-8
RANDOM: 在bash下随机数范围为0~32767,例如取得0~9之间的随机数:
declare -i number=$RANDOM*10/32767
echo $number
set查看所有变量(包含环境变量与自定义变量)
与目前shell操作接口有关的变量,通常会被设置为大写字母,以下为比较重要的环境变量:
PS1: 提示符的设置(登录进Linux后会显示的字符)
\d: 日期格式;\H: 完整的主机名;\h: 仅取主机第一个小数点之前的名称;\t: 显示时间为24小时格式;\T: 显示时间为12小时格式
\A: 显示时间格式24小时格式:HH:MM;\@: 显示时间,12小时,am/pm;\u:目前用户的帐户名称如root;\v: bash版本信息
\w: 完整的工作目录名称,主文件夹会以~替代;\W: 利用basename函数取得工作目录名称;\#: 执行的第几条命令
\$: 提示符,如果是root时,提示符为#,否则是$,
例如提示信息为:[root@www /home/dmtsai 16:50 #12]#
PS1='[\u@\h \w \A #\#]\$'
$(关于本shell的PID)
$本身也是个变量,这个代表的是目前这个shell的线程代号,即是所谓的PID(ProcessID), 用echo $$, 可显示PID号码
?(关于上个执行命令的回传码)
问号也是一个特殊的变量,这个变量是上一个执行的命令所回传的什,当一个命令执行后会有一个返回值,若命令执行成功,就会返回0, 若发生错误,则会返回错误码,打印上一个命令的错误码:echo $?
OSTYPE, HOSTYPE, MATCHTYPE:主机硬件与内核等级
export:自定义变量转成环境变量
自定义变量与环境变量的区别就是该变量是否会被子进程所继续引用,bash有子进程,子进程会继承父进程的环境变量,但不会继承环境变量
影响显示结果的语系变量:locale
查询linux到底支持多少语系:locale -a
语系文件放在/usr/lib/locale
系统默认语系定义在:/etc/sysconfig/i18n
变量的有效范围
跟着鸟哥学Linux系列笔记3-第11章BASH学习的更多相关文章
- 跟着鸟哥学Linux系列笔记2-第10章VIM学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...
- 跟着鸟哥学Linux系列笔记0-如何解决问题
跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1. 在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...
- 跟着鸟哥学Linux系列笔记1
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...
- 跟着鸟哥学Linux系列笔记0-扫盲之概念
相关缩写全称: POSIX(Portable Operation System Interface):可携式操作系统接口,重点在于规范内核与应用之间的接口,由IEEE定义发布 IEEE: 美国电气与电 ...
- 鸟哥的Linux私房菜——第十六章:学习Shell Scripts
视频链接:http://www.bilibili.com/video/av10565321/ 1. 什么是 Shell Script (shell写的脚本)1.1 干嘛学习 shell s ...
- 鸟哥的linux私房菜——第十六章学习(程序管理与 SELinux 初探)
第十六章.程序管理与 SE Linux 初探 在 Linux 系统当中:"触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的 ...
- 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)
第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...
- 鸟哥的Linux私房菜——第十九章:例行命令的建立
视频链接:http://www.bilibili.com/video/av11008859/ 1. 什么是例行性命令 (分为两种,一种是周期性的,一种是突发性的)1.1 Linux 工作排程的种类: ...
- 鸟哥的Linux私房菜——第十四章:Bash Shell
视频链接:http://www.bilibili.com/video/av10094012/ 本章目录: 1. Bash shell1.1 什么是 shell ? (我们通过shell与Kernel核 ...
随机推荐
- midi格式
http://www.ccarh.org/courses/253/handout/smf/
- Git SourceTree 冲突解决方案
Git现在越来越火,很多人都从Svn迁移到Git上面,Git让我们更加与世界接轨,不再是"局域网"的程序猿,特别是掌握了Git之后,会发现它真的很好用,本文对Git中比较烦人的冲突 ...
- 百度云+ KeePass 网络同步你的密码
百度云+ KeePass 网络同步你的密码 百度云一个目前不限流量不限格式能直链的网盘,速度在我这里很快,难得了!KeePass(小众介绍过 KeePass.) 是一个免费开源的密码管理类软件, ...
- js里面的 InttoStr 和 StrtoInt
javascript 字符串 和 数字的转换,话说好灵活,感觉回不去pascal了 int转换string: 1,var str=String(int); 2,num.toString(param) ...
- VMware Workstation 下进行 桥连接
大家都知道进行桥连接的时候,需要我们的宿主机与虚拟机同处于一个网络段, 使得mask与默认网关相同即可进行连接 ; 本地的IP .掩码 . 网关: 虚拟机的Ip 掩码,网关: // 当然这里的DNS ...
- 解读Unity中的CG编写Shader系列八(镜面反射)
转自http://www.itnose.net/detail/6117378.html 讨论完漫反射之后,接下来肯定就是镜面反射了 在开始镜面反射shader的coding之前,要扩充一下前面提到的知 ...
- Storm集成Kafka应用的开发
我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果 ...
- Provider:SSL提供程序,error:0 - 接收到的消息异常,或格式不正确
引自 :http://www.cnblogs.com/liuguozhu2015/p/3413496.html 非常感谢这位同学 我用笔记本的sql客户端去连服务器,正常连接. 在页面中连接时,直接导 ...
- ffmpeg-20160510-git-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- jquery若干问题
1.获取服务器端的控件 $("#<%=photopath.ClientID%>").uploadPreview({ Img: "ImgPr", Wi ...