此图反映了shell所在的位置与作用。
既然Shell与KDE和application等都是用户与Kernel的接口,那为什么还要学习呢?书中也给出了答案。
通用性,可以这样理解,也就是所谓的跨平台机制。这个跨平台非windows,linux这种跨平台,是跨套件管理模块。
简单快捷 远程的时候毕竟文字传输肯定比桌面联机操作要快得多。
装逼:右键 复制粘贴 跟ctrl+c/v跟在dos下进行处理。你懂得。是不是dos下处理会让人看起来更 我擦 一些。
所有的shell文件都存放在/etc/shells档案目录中。
bash是Linux预设的shell。通用shell,就上上面第一条所谓的通用性的由来。所有的Linux系统都会有这玩意。所以通用喽
就类似于所有电脑都装个jvm,所以java就通用了,一样的道理
Bash shell的功能
1 命令编修功能 按上下键,以前适用的命令都会进行记录加载
2 命令与文件补全功能。 【Tab】按键,将剩余的命令进行补齐。你要是脑子记不住的话,可以长按
3 命令取别名 很多常用命令,你记不住的话,那就起个别名。比如 给 ls-al取个叫lm的别名 alias lm='ls -al'
4 工作控制,前景背景控制。打开的东西太多的话,避免按键出错
5 程序化脚本 类似于批处理文件
6 通配符 【ls -l /usr/bin/x*】那个*就是通配符。将首字母带x的都给我列出来
变量 普通变量 环境变量 都是变量
echo来读取变量 echo $PATH
变量的设定规则。直接截图吧,不写了
注意的几点
1 不能有空格。有空格要加双引号 name="xxxxx xxxx"
2 单引号双引号必须成对出现,如果必须单个单引号出现,需要用\来转义
3 累加 PATH=${PATH}:xx/x//xx
4 增加内容 name=${xx}xxxx追加xxxx
5 子程序与父程序的问题。 如下图实例
首先定义name ,在负shell中设置name=AAAAA。然后bash进入子shell,读取这个变量,他的内容时空的,就是第一个框,白色部分。如何让子shell能够读取到父shell中的变量,就需要export命令,让他变成一个全局变量,书中说转换成环境变量。然后才能在子shell中读取到父变量。图中最后一个框中的AAAAA被打印出来
取消变量名unset name
获取当前用户系统的环境变量
用 env 命令来获得。
具体介绍如下图:
set命令观察所有变量(包含环境变量和自定义变量)
PS1 设定命令提示符
红框位置就是设定后的命令提示符
$:(关于本shell的PID)
echo $$ 获得本shell的PID的值
? 关于上个执行指令的回传值
判断指令是否执行成功。一般执行成功会返回0,执行失败会返回错误代码。这个?就可以获取这个代码
,红框就是上面命令错误之后的返回代码。可以根据这个代码来查找错误原因
export 自定义变量转换成环境变量
自定义变量只适应于本shell。尤其是用在父子shell中时,如果子shell定义了变量,父shell是无法获取的,要想父shell获取到子shell的变量值,就需要将该变量置成环境变量。export命令的
locale 本地编码
本地编码的资料文件都存储在/usr/lib/locale/目录中
转换本地编码,如下图例