Linux的一些学习笔记Ⅲ(shell补充)
这应该是最后一期了
大概总结一下bash
说实话我跳过了很多暂时用不上的部分……见谅
关于shell和bash
一般用户只能通过shell
来跟操作系统的内核进行通信,以让内核达到我们所想要达到的工作
只要能够操作应用程序的接口都能够称为shell
。狭义的shell
指的是命令行方面的软件(命令行窗口)
当然bash
就是其中一种,Linux
的默认shell
就是bash
bash shell的一些功能
摘抄了其中的一部分
命令记忆能力
:即为可以记住你之前一段时间使用过的一定数量的命令,可以按方向键的↑来查看命令和文件补全
的功能:可以使用[tab]
自动补全,[tab]
接在一串命令的第一个字
的后面,则为命令补全
,[tab]
接在一串命令的第二个字
的后面,则为文件补全
命令别名设置功能(alias)
:类似于设置快捷方式
命令的执行
书上的例子——将三个文件复制到一个目录(分两行执行命令)
1 | cp /var/spool/mail/root /etc/crontab \[enter] |
这里的enter
是转下一行的意思(因为被转义了)一般的enter
是执行命令的意思,这个>
是系统自动出现的,不需要用户手动输入
shell的变量功能
输出变量内容(以PATH环境变量为例)
1 | echo $PATH |
设置某个变量的内容
1 | echo $myname |
取消变量的方法
1 | unset 变量名 |
反引号(``)的作用
在一串命令当中,在``当中的命令会被先执行,而其执行出来的结果将作为外部的输入信息
另外,``与$()
两者是可以相互替代使用的
环境变量
环境变量
与一般的变量
不一样,环境变量
会随着父进程
继承到子进程
(在一个bash shell
里面再开一个bash shell
,那么这个新开的shell
即为子进程
,原来的shell
即为父进程
)
可以使用export
来将一般的变量
转化为环境变量
1 | export 变量名称 |
可以大致理解为
环境变量
=全局变量
自定义变量
=局部变量
命令别名
类似于定义变量
例如
1 | alias ll='ls -al' |
bash shell的操作环境
通配符与特殊符号
*
:代表0个到无穷多个任意字符?
:代表一定有一个任意字符[]
:同样代表一定有一个在中括号内的字符(非任意字符)。例如[abcd]代表一定有一个字符(这四个字符当中的其中一个)[~]
:例如[0~9]代表0到9之间的所有数字[^]
:例如^abc代表一定有一个字符(非a,b,c的其他字符即可)
一些统配符的使用例子
1 | ll /etc/cron* |
bash的一些特殊符号(节选)
#
:注释符号\
:转义符号——将特殊字符还原成一般字符;
:连续命令执行分隔符&
:作业控制(job control
)将命令变成背景下工作>
,>>
:数据流重定向,输出
导向,分别是“替换”
和“累加”
<
,<<
:数据流重定向,输入
导向
数据流重定向
数据流重定向即为将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方
标准输入(stdin)
:代码为0
,使用<
或<<
标准输出(stdout)
:代码为1
,使用>
或>>
标准错误输出(stderr)
:代码为2
,使用2>
或2>>
一个范例
1 | ll / > ~/rootfile |
使用>
或>>
的时候,若该文件不存在,则会自动创建这个新文件
>和>>的区别
1>
:以覆盖
的方法将正确的数据
输出到指定的文件或设备
上1>>
:以累加
的方法将正确的数据
输出到指定的文件或设备
上2>
:以覆盖
的方法将错误的数据
输出到指定的文件或设备
上2>>
:以累加
的方法将错误的数据
输出到指定的文件或设备
上
将标准输出和标准错误输出存到不同的文件下
范例
1 | find /home -name .bashrc > list_right 2> list_error |
/dev/null垃圾桶黑洞设备与特殊写法
1 | 将错误的数据丢弃到其他文件,屏幕上显示正确的数据 |
将正确和错误的数据都写入同一个文件当中
1 | 错误写法 |
用stdin将数据输入到新文件里
1 | cat > catfile < ~/.bashrc |
命令执行
一次执行多个命令
1 | cmd1; cmd2; cmd3 |
&&和||的使用
cmd1
&&cmd2
:若cmd1
执行完毕且条件为真(true
)则开始执行cmd2
,若cmd1
执行完毕且条件为假(false
)则cmd2
不执行cmd1
||cmd2
:若cmd1执行完毕且条件为真(true
)则cmd2
不执行,若cmd1
执行完毕且条件为(false
)则开始执行cmd2
一些感想
这本书写的很细致,写的也很通俗易懂,学到了一些Linux的基本知识,其实前前后后也就看了100页左右……就这样了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 R1esbyfe's universe!