RHCE课程-RH033Linux基础笔记四之shell以及环境变量

简介:
RHCE课程-初级部分4、shell及环境变量简介
Kernel 
系统内核用于在计算机启动时载入基本内存、 管理基本输入输出、管理进程初始化和进程的调度。 
Shell  
系统的命令解释器,翻译成中文也就叫壳,外壳的意思,就是最表面的,用于操作系统与用户的通信,相当于Dos中的command.com。 Red Hat Linux 默认的shell 是Bash ! 
Shell与系统及子进程的层次关系 
                                         + - - - - - - - - - - - - - - - - -- - - - - - - -  + 
                                         |                        用户进程                           | 
                                         | + - - - - - - - - -  - - - - - - -  - - - - - -+  | 
                                         |  |                        shell                        |   | 
                                         |  | + - - - - - - - - - - - - - - - - -  - -+  |   |  
                                         |  |  |                    Kernel                 |   |   | 
                                         |  |  | + - - - - - - - - - - - - -- - - -+  |   |   | 
                                         |  |  |  |              Hardware             |  |   |   |   
                                         |  |  | + - - - - - - - - - --- - -  - - -+  |   |   | 
                                         |  | + - - - - - - - - - - - - - - -  - - - - +   |   | 
                                         | + - - - - - - - - - - -- - - - - - - -- - - - - +  | 
                                         + - - - - - - - - - - -- - - -- - - - - - - - - - - -+
真正工作的是硬件。kernel(内核)就是控制硬件的,但是怎么让内核知道我们想要硬件做什么工作呢? 那就需要shell, 在Unix系统中有各种Shell,Linux采用bash为其默认shell。Bash是GNU计划的一个组件,与Unix上的Bourne Shell完全兼容。支持命令行输入、操作历史查询、快捷键、使用变量等功能们都需要X来运行 。
想知道你们系统中有哪些shell,可以用这个命令:cat /etc/shells
image
这就是我们系统中所有的shell,不过我们一般使用的是第二种,bash
一个用户使用什么shell 可以在 /etc/passwd中查看 
image
最后那项就是用户使用的shell
image
nologin 是个很特殊的shell,也很重要。大家现在 先了解下就可以了,以后我们还会讲

Terminal Emulator 用户交互的窗口界面 
终端模拟器是用户shell运行的平台,在终端模拟器上用户可以交互的操作系统及运行程序并得到提示和反馈,就像在文本编辑器中一样。 
X Window 以C/S模式提供的图形界面接口 
在X中操作,你会重新找回Windows的感觉。当然不只是这样Red Hat Linux中图形界面的易用性已经有了显著的提高,并且通过像GTK+和QT这样的开放的开发工具包,你可以创立自己的图形应用程序。 
Window Manager 提供图形功能 
Window manager是个可以帮你移动窗口和改变它们大小的程序。它通常也支持把一个窗口缩成一个图标或任务条。通常有某种程序执行机构。用户可以使用window manager来做他想做的——任何X应用程序应该可以在任何窗口管理器上工作。但是你一次只能运行一个Window Manager。也就是说,你可以切换于任何多个window manager,但是同一时刻你只能运行一个。屏幕上的所有程序都可以被正在运行的window manager管理。 
Desktop Environment 桌面环境 
GNOME和KDE不是窗口管理器(它们是桌面环境)。KDE是和一个叫KWM的窗口管理器一起的。GNOME则没和任何窗口管理器做在一起,你可以使用任何你想用的窗口管理器,虽然有一些是特地为GNOME写的(Enlightenment就是一个)。但是它Bash是GNU计划的一个组件。 

在Linux里有很多的变量,大致可分为3种: 
环境变量 
内部变量 
用户变量
 
用户可以通过这些变量获得系统、环境的信息
环境变量相当于给系统或用户应用程序设置的一些变量, 具体起什么作用这当然和具体的环境变量相关。比如PATH, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此程序外, 还应到由PATH变量定义的目录中去查找.这个PATH和WINDOWS下面作用一样哈
在bash中有很多预定义环境变量 
用户可以用set或env查询当前的环境变量 
set: 
image
env: 
image
常用的预定义变量: 
HOME:当前用户的主目录 
PATH:当前用户的可执行文件搜索路径 
LANG:程序应该使用的默认语言 
PS1:行提示符
 
注意,我们系统中环境变量是很多的,但是我们需要注意的只要这几个, LINUX下面的变量名字基本都是大写字母哈.
可以用 echo  $变量名字 来查看变量
echo $PATH  这是可执行程序的搜索路径 
image
echo $LANG 当前语系
image
echo $HOME 当前用户主目录
image
echo $PS1就是我们提示框的变量
image
用户变量是用户在编写shell过程中,可以在shell程序内任意使用和修改的变量。(以字母或下划线开头,通常字母是大写母) 
赋值:变量名=变量值 
获取变量值  ${变量名} 
例:VAR=hellorhce  ;赋值         
echo ${VAR}       ;显示变量值
image
使用echo完成简单地输出 
echo “hello  world” 
VAR=“hello” 
echo ${VAR} world
image 
也可以使用printf来产生各种格式的输出 
printf “hello\nworld\n”
image

read 从标准输入读取数据来为var1这个变量赋值 
-p输出提示字符 
read -p "Enter a filename: " FILE
image
这样就把一个用户输入的数据变成一个变量,在编程的时候可以转入下个动作,大家试试。
 
RHCE课程-初级部分4、history命令、BASH、快捷键
在bash中输入history指令可以查询用户的过往操作。
 
内存中记录的过往指令数根据环境变量中HISTSIZE而定。(/etc/profile)

history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中。在下次login时载入。预定的记录为1000条,这些都定义在环境变量中。
vim .bash_history
 
使用!来调用过往指令: 
!l:重复执行上一条以l为首的指令

!!:重复执行上一条指令
 
!number:重复执行上一条在history表中记录号码为number的指令

!-number:重复执行前第number条指令

!$:表示获得前面命令行中的最后一项内容

可以用< ctrl+r>来在history表中查询某条过往指令
 
命令行表达式
命令行输出——“ ” 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。 
命令行输出——‘ ’ 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。 
执行引用符——` ` 引用命令的执行结果
前段时间有朋友在论坛提问关于 “”  ‘’ `` $ 的意思。 现在我们就再讲下
先说“”吧
image
大家这样的命令,结果会是什么? 
hello good everone
image
那么我们把“” 改成 ‘’ 44看效果
image
总结: 
命令行输出——“ ” 
将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。 
命令行输出——‘ ’ 
将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义
大家能明白吗?
image
我们在date两边加上``  
执行引用符——` ` 
引用命令的执行结果
image
这个大家能够明白吧?
最后一个$ 就不用讲了吧 ,HOHO,地球人都知道,嘻嘻! 不知道$用处的举手,我捶死他~~~~
 
数学运算——$[2*5 ] 
在中括号内的表达式会被数学计算
 
脱逸符——
用于取消命令行中字符的特殊含义 
用于表示一行未结束

命令行结束符—— ;
用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键 
例:pwd ; ls –l

子shell激活——() 
在小括号内的命令行表示激活一个子shell后在子shell中运行
 
还有两个逻辑语符号&&和|| 
shell命令行支持在同一行的两条命令中插入&&(逻辑与)与  ||(逻辑或) 
&&:当前一条指令执行成功时再执行后一条指令 
  ||:当前一条指令执行失败时再执行后一条指令
 
&&  前面执行成功才执行后面
image
如果 ls 一个不存在的文件,大家操作下
image
||  前面执行失败或者为假,才执行后面的命令
image
 
定制登陆shell
bash 在用户登录时从四个文件中读取环境设定: 
全局设置文件: 
     ① /etc/profile 
     ② /etc/bashrc 
用户设置文件:  
     ③ ~/.bash_profile 
     ④ ~/.bashrc\
 
今天最后一个知识,alias 别名
在shell下键入alias可以查询当前alias列表。 
用户可以alias来为一条命令取一个简单的别名 
用户也可以用unalias来取消一条别名记录。 
alias记录在shell中总是先行。
image
这是你当前用户的命令别名
image
这就是别名的作用
image
我们可以把很长的命令或者参数,用一个别名来表示,方便我们输入
创建别名的方法
image
这种方法是临时的,如果使你的更改永久生效,需要把他写入一个配置文件
image
按照他的格式,写在这里就可以了
image
 
常用快捷键
Ctrl + d:输入已结束。在shell下相当于一个exit 
Ctrl + c:键盘中断请求。 
Ctrl +s &Ctrl + q:暂停/恢复屏幕输出 
Ctrl + l:清屏,相当于clear。 
Tab:自动补完命令行与文件名 
Tab键双击: 可以列出所有可能匹配的选择 
Ctrl+u: 删除当前光标前的所有字符 
ctrl+k: 删除当前光标后的所有字符
运行 tree / 这个命令,然后 用 Ctrl加s,q 和c 看看效果
image
ctrl+s暂停屏幕输出
image







本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/110250 ,如需转载请自行联系原作者
相关文章
|
2月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
164 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
28天前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
33 0
Linux 如何更改默认 Shell
|
1月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
53 4
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
79 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
113 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
771 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
36 0