跟着鸟哥学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核 ...
随机推荐
- phpcms访问顶级栏目,自动跳到第一个子栏目
在顶级栏目的category页放入如下代码: <?php if($child){ $child_arrary=explode(',',$arrchildid); $to_url=$CATEGOR ...
- Javascript——Context和Scope的一些学习总结
1.1.1 摘要 在我们学习Javascript过程中,常常会遇到作用域(Scope)和执行上下文(Context)等概念.其中,执行上下文与this关键字的关系密切. 有面向对象编程经验的各位,对于 ...
- CSS中的float与clear
参考: http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html http://www.cnblogs.com/iloveyou ...
- Python之队列queue模块使用 常见问题与用法
python 中,队列是线程间最常用的交换数据的形式.queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 1. 阻塞模式 import queue q = queu ...
- ali笔试总结
2012 http://blog.csdn.net/qunqin/article/details/6853956 2014 http://blog.csdn.net/fangjian1204/arti ...
- Unity3d 扩展自定义类Inspector
public class MyClass : MonoBehaviour { public int A; // Use this for initialization void Start () { ...
- 【leetcode】Binary Tree Level Order Traversal I & II
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 浅析 Cordova for iOS
转自@夏小BO的技术博客: Cordova,对这个名字大家可能比较陌生,大家肯定听过 PhoneGap 这个名字,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.(Cordo ...
- mysql my.cnf配置文件详解
本配置文件针对Dell R710,双至强E5620.16G内存的硬件配置.CentOS 5.6 64位系统,MySQL 5.5.x 稳定版.适用于日IP 50-100w,PV 100-300w的站点, ...
- python基础——继承和多态
python基础——继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类 ...