Linux基础笔记之shell以及环境变量.docx
-
资源ID:4886082
资源大小:572.60KB
全文页数:17页
- 资源格式: DOCX
下载积分:15金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
Linux基础笔记之shell以及环境变量.docx
RHCE课程-初级部分4、shell及环境变量简介Kernel系统内核用于在计算机启动时载入基本内存、管理基本输入输出、管理进程初始化和进程 的调度。Shell系统的命令解释器,翻译成中文也就叫壳,外壳的意思,就是最表面的,用于操作系统与用户 的通信,相当于 Dos 中的 。Red Hat Linux 默认的 shell 是 Bash !Shell与系统及子进程的层次关系+ -+|用户进程II + |shellI | + |Kernel| +-+ |Hardware| +-+ | +-+| + |+ -+真正工作的是硬件。kernel (内核)就是控制硬件的,但是怎么让内核知道我们想要硬件做什么工作呢?那就需要shell,在Unix系统中有各种Shell,Linux采用bash为其默认 shello Bash是GNU计划的一个组件,与Unix上的Bourne Shell完全兼容。支持命令行输 入、操作历史查询、快捷键、使用变量等功能们都需要X来运行。想知道你们系统中有哪些shell,可以用这个命令:cat /etc/shellsrootrheF5:IRIe Edit View Terminal Tabs Helprootrhel5 -# cat /etc/shells/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh/bin/kshroot(arheI5 -# |这就是我们系统中所有的shell,不过我们一般使用的是第二种,bash 一个用户使用什么shell可以在/etc/passwd中查看, :x: 3S :38: :/etc/ritD:/sbin/nolcgin,:”-: :x: 68:HAL daenon : : i n/no logi rx:x:43:43:x Font Server:/etc/xil/fc:iT :x:42 :42: : ,vr/c:''n: /sbir-/no'Lciqin&ur;/home/atiayonz/bln/nolaginred hat: : 563: &*3: /hovve/redhst:/bin/ba&hmichaei: x: 504:/hcme/imichael:/bln/bash.: ,:x: 505 :505 l :/noir e/ jfy:/bin/bash最后那项就是用户使用的shells;ih.:y ; x; 86 : 86 : Sabayon user ; hone/.ibriyon:/5b:n/naL0g:iinologin是个很特殊的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:env:常用的预定义变量:HOME:当前用户的主目录PATH :当前用户的可执行文件搜索路径LANG:程序应该使用的默认语言PS1:行提示符注意,我们系统中环境变量是很多的,但是我们需要注意的只要这几个, LINUX下面的变量名字基本都是大写字母哈.可以用echo $变量名字来查看变量echo $PATH这是可执行程序的搜索路径i-J# echci 5PATHj?usr/Kerberos/sbln;r/kerberos/bln;/usr/Igcal/sblnur/lcal/bln/bin: /bin:.us. r/ibln l /us r/bln: / root /btnecho $LANG当前语系rootrhelS -# echo SLANGen US.UTF-8root<arhel_5 -# |echo $HOME当前用户主目录rootiarhelS -# echo $H0ME/rootroot(3rheI5 -# |echo $PS1就是我们提示框的变量rootrhelS -# echo $PS1 u(h WSrootrhelS # |用户变量是用户在编写shell过程中,可以在shell程序内任意使用和修改的变量。(以字母或下划线开头,通常字母是大写母)赋值:变量名=变量值获取变量值$变量名例:VAR=hellorhce ;赋值echo $VAR;显示变量值rootrhelS -# VAR.=hefL0rhceroot(arhe!5 -# echo 5VARhellorhceroot(9rhel5 -#使用echo完成简单地输出echo “hello world”VAR="hello”echo $VAR worldro0t0rhel_5 拼 echo "hello world"helloroot(9rhel5 -# VAR=,ihello,1ro0t(arhel_5 -# echo SVAR worldhellorootrhelS -#也可以使用printf来产生各种格式的输出printf “hellonworldn”|root(arhel5 -# printf FelLcAnwwLci'rr hello worldrootrheI5 -# gread从标准输入读取数据来为varl这个变量赋值-p输出提示字符read -p "Enter a filename: FILE| rooter he 15 -J# read 叩 "nellfl. please ntar your Slcta acxcnjntI roatrheii e<ho SAVR.112233I. rooter he 1&enter yaur 51-ctei- afCQimt password;" AVR imEW; 11XM3大家试试。这样就把一个用户输入的数据变成一个变量,在编程的时候可以转入下个动作,RHCE课程-初级部分4、history命令、BASH、快捷键在bash中输入history指令可以查询用户的过往操作。T:1厂roottSrhelS:*-Hie=dit View Terminal TabsHelprootrhelS -# history1 vi /etc/bashrc2 Logout3 start x4 Logout5 vi /etc/inittab6 reboot7 ntsysv8 ntsysv9 ntsysv10 vi /etc/inittab11 reboot12 vi /etc/inittab13 start x14 startx15 shutdown -h now16 cd /misc/cd17 Is18 logout19 cd /misc/cd20 Is1 r ju i1 1 ii v l21shutdown -h nowalH III ijijjjjJ wF J J1 JI22cd /wisc/cd洽令局'亍 fJIuy23Is内存中记录的过往指令数根据环境变量中HISTSIZE而定。(/etc/profile)history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中。 在下次login时载入。预定的记录为1000条,这些都定义在环境变量中。vim .bash_historyrootrher5:*-File Edit View Terminal Tabs Help /etc/bashrcLogout start x logout vi /etc/inittab reboot ntsysv ntsysv ntsysv vi /etc/inittab reboot vi /etc/inittab start x startx shutdown -h now cd /misc/cd Is Logout cd /misc/cd Is shutdown -h now cd /misc/cd Ls11 .bash history" 307L, 3742C使用!来调用过往指令:!l:重复执行上一条以l为首的指令rootrhelS -#!LIs -a., eggcupsinstall.log.serverauth.3395.esd authinstall.log.syslog.serverauth.4643anaconda-iks. cf g.gccrnf.metacity.serverauth.5203.bash history.gconfd.nautilus.tcshrc.bash_logout gnome.redhat.Trash.bash profile.gnome2.serverauth.2633.viminfo.bashrc.gnome? pivate.serverauth.2762.Xauthority.cshrc.gstTeamer-0.10.serverauth.2906Desktop.gtkrc-1.2-gnoire2.serverauth.29354叫J.dmrc,ICEauthority.serverauth.3092待冬回H剧wroottarhelS -#JX* I” 日!:重复执行上一条指令!number:重复执行上一条在history表中记录号码为number的指令rootrheI5 -# !23install.log install.log.syslogJ LIE LilIs anaconda-ks.cfg Desktop root(arheI5 -# !86 useradd amy useradd: user amy exists root(arhe!5 -# |!-number:重复执行前第number条指令! $:表示获得前面命令行中的最后一项内容大家这样的命令,结果会是什么?大家这样的命令,结果会是什么?File Edit View Terminal Tabs Help root(arhel5 -# ! -99 Is -Id /iimt/cdrom/ drwxr-xr-x 2 root root 4096 Nov 5 12:45 /mnt/cdrom/ root(arhel5 -# !$ /mnt/cdrom/ bash: /mnt/carom/: is m directory root(3rhel5 -#可以用ctrl+r来在history表中查询某条过往指令rootrhel5:File Edit View Terminal Tabs Help root(arhel5 -# ! -99 Is -Id /mnt/cdrom/drwxr-xr-x 2 root root 4096 Nov 5 12:45 /innt/cdroRi/ root(9rhel5 -# !$ /mnt/cdrom/bash: /mnt/cdrom/: is a directoryroot(9rhel5 -#命令行表达式命令行输出一一“ ”将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字 符,则转义。命令行输出一一''将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字 符,不转义。执行引用符一一' ' 引用命令的执行结果前段时间有朋友在论坛提问关于"”'''' $的意思。现在我们就再讲下先说“"吧root(3rhel_5 -# echo ,JhefLo everone11 hello everonerootrhel_5 VAR=goodroot(arhel_5 -# echo hello everone"|hello good everonerootrhelS -# echo "hello everone" hello everonerootrhel5 # VAR=goodroot(arhel_5 -# echo hello SVAR everone hell。 good everone那么我们把“”改成44看效果root(arhe!5 -#rootrhelS echo "hello everone" hello everoneRoot世甬eLSEcho 'hello SVAR everone'hello $VAR everonerootrhe!5 -#总结:命令行输出一一“ ”将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。命令行输出一一 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义 大家能明白吗?root(9rhel5 J# echo HThis time is:date This time is:daterootrhel5 -#我们在date两边加上、执行引用一一' '引用命令的执行结果这个大家能够明白吧?最后一个$就不用讲了吧,HOHO,地球人都知道,嘻嘻!不知道$用处的举手,我捶死他 数学运算一一$2*5 在中括号内的表达式会被数学计算rootrhel5 -# VARSI2*5r00t(arhel_5 -# sch-?外睥10roottarhelS脱逸符用于取消命令行中字符的特殊含义用于表示一行未结束命令行结束符;用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键 例:pwd ; ls - lrootrhelS pwd;l_s -1/roottotal &0-rw1rootroot1163Oct2821:48anaconda-ks.cfgd rwx r-x r-x 2rootroot4096Oct2815::/21Desktop-rw-r-r- 1rootroot29505Oct2821:48install.logJJJ-rw- r - - r - - 1rootroot3502Oct2821:47install. Log . s.yslogmoirootrhelS -#子shell激活()在小括号内的命令行表示激活一个子shell后在子shell中运行还有两个逻辑语符号&&和|shell命令行支持在同一行的两条命令中插入&& (逻辑与)与| | (逻辑或)&&:当前一条指令执行成功时再执行后一条指令| | :当前一条指令执行失败时再执行后一条指令&&前面执行成功才执行后面root(arhel_5 Is /home && echo trueamy lost+found michael redhat.trueI root(arhel5 -#如果ls 一个不存在的文件,大家操作下rootrhel-S -# Is /hoire 腿 echo trueainy Lost+Tound michael. redhat true归已15 # Is /51blog && echoIs,:Mo such file or directoryroot(arhel-5 -#|前面执行失败或者为假,才执行后面的命令rootrheLS -# Ls /51blog | echo falseIs? /51bloq: No such file or directory|fmlse |r0ot(arhel_5 -# l_s /home | | echo falseamy lost+found michael redhatrootrhel5 -# g定制登陆shellbash在用户登录时从四个文件中读取环境设定:全局设置文件: /etc/profile /etc/bashrc用户设置文件: /.bash_profile /.bashrc今天最后一个知识,alias别名在shell下键入alias可以查询当前alias列表。 用户可以alias来为一条命令取一个简单的别名 用户也可以用unalias来取消一条别名记录。alias记录在shell中总是先行。roDtrhelS -W aliasallaalias心辨 aVla-s uLl明 atlasI Ide*11- ymIs -<3 . ' - - color-tty'Is -L -cclor-tty'U -Ciftlu&rstty1mw -iam .虹whLclta"alias | /usr/tHn/whlch - tty-onl/ - - read-alias - - show-dot - -show-tiI rootirhelS- T。这是你当前用户的命令别名alias 11='Is -I -color=tty1这就是别名的作用rootrh&15 # 11 instatl.log-rw-r-r- 1 root root 29565 Oct 27 94:39 install,log Egtrhel5 p# Is -1 installnlog'rw-r-r- 1 root root 25565 Oct 27 04:39 install.togErootrhel5#我们可以把很长的命令或者参数,用一个别名来表示,方便我们输入 创建别名的方法:rcwt§rhel5 alias- Id-'Is -Id"riMtrh«l5 十atlas cp'cp -1BaLlw LUs f . * -eolflrtcy"3整-Id,alias lt"Kt5 -I -color-ttjrBalias ls-fclsallaii-1fcalias cl rm -1*alias which-'al| /tisr/bin/which tty,口L? -r£Ad-Allai& hsw-dt marrciDtrhelSId /hoiwsx 际 raat rat 耳日98 Mau 3 2&:52 /h-»e| rcHJtgrhelSIs -Id /heweI drwxr-xr-x 6 root rMt 4B96 Nov 3 2:52 /noneI rMti-hflXS 十 I这种方法是临时的,如果使你的更改永久生效,需要把他写入一个配置文件 I root(arhel5 -# vim .bashre按照他的格式,写在这里就可以了常用快捷键Ctrl + d:输入已结束。在shell下相当于一个exitCtrl + c:键盘中断请求。Ctrl +s &Ctrl + q:暂停/恢复屏幕输出Ctrl + l:清屏,相当于clear。Tab:自动补完命令行与文件名Tab键双击:可以列出所有可能匹配的选择Ctrl+u:删除当前光标前的所有字符ctrl+k:删除当前光标后的所有字符运行tree /这个命令,然后用Ctrl加s,q和c看看效果rootrhel-S -# tree /|ctrl+s暂停屏幕输出File Edit View TerminalHelpI if ii r-i r-nice nisdomalnnaiFie pgwk四凹> hostnamei i-1!1 L t !pingfiphdraw1I-red - > ed1 !red hat 1st)init1 1-rmJ b-rmdir1 I1 h-rpm rvi -> vl1 brview '> vl1sed1 IsetTont!setserial1t-sn -> basht 11 1-sleep sortI hi l"stty$urootrheis:-帝三Hi。*