linux鸟哥私房菜学习笔记--第11章
来源:互联网 发布:听喊麦用什么软件好 编辑:程序博客网 时间:2024/05/09 06:27
1 认识bash shell
优点:
- 命令记忆功能(history):~/.bash_history记录的是前一次登录以前所执行的命令,而至于这一次登录执行的命令都被暂存在临时内存中,当注销系统的时候,才会保存到~/.bash_history中。
- 命令与文件补全功能([Tab]键的好处)
- 命令别名设置功能:alias lm = ‘ls -al’
- 作业控制台、前台、后台控制
- 程序脚本
- 通配符
type:bash shell的内置命令,用来查看命令是否为bash的内置命令,感觉然并卵。
2.shell的变量功能
变量的显示与设置:echo、unset
myname=lili 注意=号之间不能有空格
echo $myname 显示变量的值
unset myname 取消这个变量
环境变量(重要):功能有主文件夹的变换,提示符的显示,执行文件查找的路径等。可通过env与export查看,另外,set查看所有的变量,包括环境变量与自定义变量。
HOME–代表用户的主文件夹。
SHELL–目前环境使用的shell程序
HISTSIZE–记录历史命令的条数
MAIL–当我们使用mail这个令在收信时系统会去读取的邮件信箱文件。
PATH–执行文件查找的路径,目录与目录中间以冒号分分隔,文件查找是以PATH的变量内的目录来查询。
LANG–语系数据
RANDOM–随机数的变量
其中PATH变量最为重要,安装java,maven,mysql等需要设置的环境变量,在win下是直接找到计算机->管理->高级->环境变量这个直接找到或者新建就行,mac则有点像linux了,要进入到.bash_profile中将java等的变量加入到PATH中,并且要export PATH才能起作用。
3.命令别名与历史命令:
alias lm=’ls -l | more’
这时,执行lm就相当于执行 ls -al more。
unalias lm
取消别名
history:
n :数字,意思是『要列出最近的 n 笔命令行表』的意思!
-c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 命令新增入 histfiles 中,若没有加 histfiles ,
则默认写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中!
4.bash的操作环境
login 与 non-login shell:
login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登陆,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』啰;
non-login shell:取得 bash 接口的方法不需要重复登陆的举动,举例来说,(1)你以 X window 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。(2)你在原本的 bash 环境下再次下达 bash 这个命令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。
一般来说,login shell 其实只会读取这两个配置文件:
/etc/profile:这是系统整体的配置,你最好不要修改这个文件;
~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人配置,你要改自己的数据,就写入这里!
在 login shell 的 bash 环境中,所读取的个人偏好配置文件其实主要有三个,依序分别是:
~/.bash_profile
~/.bash_login
~/.profile
配置文件生效需要重启机器,也可用 source+文件名 命令载入。
以上配置文件只列出了几个重要的,还有很多其他的配置文件,用到了查书就行。
5.数据流重定向:数据流重导向就是将某个命令运行后应该要出现在屏幕上的数据, 给他传输到其他的地方
标准输出与标准错误输出:标准输出指的是『命令运行所回传的正确的信息』,而标准错误输出可理解为『 命令运行失败后,所回传的错误信息』。
- 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
- 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
- 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
标准错误输出:
- 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;
- 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;
- 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;
- 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;
将正确信息与错误信息分别输入到不同文件中:
find /home -name .bashrc > list_right 2> list_error
将正确与错误数据通通写入同一个文件去:
find /home -name .bashrc > list 2>&1
利用 cat 命令来创建一个文件的简单流程:
cat > catfile
testing
cat file test
<==这里按下 [ctrl]+d 来离开
cat > catfile << “eof”
This is a test.
OK now stop
eof <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d
用 stdin 取代键盘的输入以创建新文件的简单流程:
cat > catfile < ~/.bashrc
命令运行的判断依据: ; , &&, ||
直接给个鸟哥的例子:
例题:
以 ls 测试 /tmp/vbirding 是否存在,若存在则显示 “exist” ,若不存在,则显示 “not exist”!
答:
这又牵涉到逻辑判断的问题,如果存在就显示某个数据,若不存在就显示其他数据,那我可以这样做:
ls /tmp/vbirding && echo "exist" || echo "not exist"
意思是说,当 ls /tmp/vbirding 运行后,若正确,就运行 echo “exist” ,若有问题,就运行 echo “not exist” !那如果写成如下的状况会出现什么?
ls /tmp/vbirding || echo "not exist" && echo "exist"
这其实是有问题的,为什么呢?由图 5.2.1 的流程介绍我们知道命令是一个一个往后运行, 因此在上面的例子当中,如果 /tmp/vbirding 不存在时,他会进行如下动作:
若 ls /tmp/vbirding 不存在,因此回传一个非为 0 的数值;
接下来经过 || 的判断,发现前一个命令回传非为 0 的数值,因此,程序开始运行 echo “not exist” ,而 echo “not exist” 程序肯定可以运行成功,因此会回传一个 0 值给后面的命令;
经过 && 的判断,咦!是 0 啊!所以就开始运行 echo “exist” 。
所以啊,嘿嘿!第二个例子里面竟然会同时出现 not exist 与 exist 呢!真神奇~
由于命令是一个接着一个去运行的,因此,如果真要使用判断, 那么这个 && 与 || 的顺序就不能搞错。一般来说,假设判断式有三个,也就是:
command1 && command2 || command3
而且顺序通常不会变,因为一般来说, command2 与 command3 会放置肯定可以运行成功的命令, 因此,依据上面例题的逻辑分析,您就会晓得为何要如此放置啰~这很有用的啦!而且…..考试也很常考~
- linux鸟哥私房菜学习笔记--第11章
- Linux鸟哥私房菜学习笔记--第10章
- 鸟哥的 Linux 私房菜第11章-认识与学习 BASH 学习笔记
- linux学习笔记--鸟哥的linux私房菜第1章 Linux是什么
- linux学习笔记--鸟哥的linux私房菜第0章 计算机概论
- 鸟哥的 Linux 私房菜第13章-学习 Shell Scripts 学习笔记
- 鸟哥私房菜第0章学习笔记
- linux鸟哥私房菜学习笔记--第六,七章
- linux鸟哥私房菜学习笔记--第八章
- Linux鸟哥私房菜学习笔记--第九章
- 鸟哥的LINUX私房菜第二章 学习笔记
- 鸟哥的 Linux 私房菜第14章-Linux账号关了与ACL权限设定 学习笔记
- 鸟哥的Linux私房菜读书笔记-第11章-认识与学习bash
- 鸟叔的linux私房菜:第0章 计算机概论学习笔记
- 鸟哥的 Linux 私房菜第12章-正规表示法与文件格式化处理 学习笔记
- 鸟哥的Linux私房菜-学习笔记-第一章【Linux】
- 鸟哥的Linux私房菜学习笔记--Linux文件属性
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第6章 Linux的档案权限与目录配置 笔记
- TCP/IP协议三次握手与四次握手流程解析
- Scala教程(九)正则表达式
- Linux关机命令详解
- ios通知部分的补充---- 系统通知简介
- iOS9开发之新增通知行为详解
- linux鸟哥私房菜学习笔记--第11章
- log4j.DailyRollingFileAppender 可以自定义时间rolling
- Java 集合框架源码分析-集合框架概述
- 浏览器的navigator
- 防范JAVA内存泄漏解决方案
- 区分DPI、分辨率(PPI)、图像的物理大小、像素宽度
- ksh 控制结构
- Android子线程中处理吐司的情况
- 给同事整理的一些git学习资料