shell的使用
来源:互联网 发布:白银理财实时数据 编辑:程序博客网 时间:2024/06/05 06:23
Shell的使用的使用的使用的使用
1. 什么是Shell?
Shell是一个系统程序,在前台提供Linux系统与用户交互操作
的界面;另外一方面Shell是一个命令的编译解释器,会将用
户命令经过编译和解释后,交给内核进行执行,也就是说将用
户命令解释为系统和内核可以理解和识别的机器语言。
我们目前所使用的操作系统实际上是一个核心(内核Kernel)
。作为使用者无法直接对内核(Kernel)进行操纵,而是通过
内核的“外壳程序”来与内核进行沟通,这个外壳程序因此得
名,实际上就是Shell。 Shell是使用者与系统的一个互
动界面,主要是要使用者通过命令行来完成工作,所以Shell
的定义就是命令的编辑解释器:将使用者的命令翻译给核心;
将核心处理结果翻译给使用者。 当用户登录的时候,就
获得了一个Shell。 Shell和内核实际上是不同的两套软
件:不同的操作系统上可以使用不同的Kernel,而相同的操作
系统上也可以使用不同的Shell。 2. Shell有哪些种类?
① Bsh:是Bourne Shell的简称,是较早的UNIX Shell程序,
实现了基本的Shell程序功能,除了承担命令解释器的功能外
,Bsh还是编程语言。 ② Csh:是C Shell的缩写,使用C语
言的语法风格。Csh与Bsh相比,更加适合于用户命令交互。
③ Ksh:结合了Bsh和Csh两者的功能优势,兼有Bsh的语法和
Csh的交互特性。 ④ Bash:是Bsh的升级替代品。是GNU项
目的成员,也是著名的开源软件项目。大多数Linux发行版本
都使用Bash作为默认的Shell,当运行Shell程序时,系统实际
运行的是Bash程序。 3. 各种Shell之间如何切换? 系统启
动后,默认运行的是Bash。 #bsh(运行Bsh,此时的Bsh是
Bash的子shell) #exit(退回到Bash) #csh(运行Csh,
此时的Csh是Bash的子shell) #exit(退回到Bash) 4. 如
何更改用户帐户的Shell? 使用chsh命令可以更改帐户的
Shell。 #useradd teacher(创建用户帐户teacher) #
passwd teacher(为teacher帐户设置密码) #grep teacher
/etc/passwd(列出passwd文件中所有包含有字符串“teacher
”的行)
teacher:x:500:500:teacher:/home/teacher:/bin/bash(可
以看到,teacher帐户用的是Bash) #chsh teacher(更改
帐户teacher的shell,可以键入/bin/bsh把teacher的Shell改
为Bsh) 新的Shell并不马上生效,将在用户下一次登录系
统时生效。 5. 什么是变量?变量的作用是什么? 所谓的变
量,就是利用一个特定的“名称”(变量名)来存储可以变化
的“值”。 变量的作用在于存储环境参数和保存Shell的信息
。变量里的值可以在与用户的交互操
作中被用户读取使用。 6. Shell变量可以分为哪些类型?
可以分为:环境变量、预定义变量、位置变量、自定义变量(
本地变量)四种类型。 7. 什么是环境变量? 环境变量是用
户登录时Linux系统为用户预先设定好的一类Shell变量。其功
能是设置用户在当前Shell中的工作环境,包括用户宿主目录
、命令查找路径、用户当前目录等。 环境变量具有如下特点
: ① 环境变量的名称不使用小写字母。 ② 环境变量在
Linux系统中拥有固定的含义,因此环境变量的名称是固定的
。 ③ 环境变量的初始值在用户登录后就已经存在,并可以被
其他命令读取和使用。 ④ 环境变量的值通常由Linux系统
自动维护,无需用户人工设置。 ⑤ 环境变量中的值会随着
用户状态的改变而改变,用户可以通过读取环境变量了解自己
的当前状态。 8. 如何查看系统中都有哪些Shell变量?
set命令用于显示系统中的所有的各类型的Shell变量,但其中
大多数是环境变量。 #set | more(分屏显示当前用户
全部Shell变量的名称和变量的值) 9. 如何查看某一个具体
的变量的值? 使用echo命令,此命令的参数为变量名前面
加上“$”符号,这样就可以查看到变量中存储的值。 #
echo $PATH(查看环境变量PATH中的值) 10. 常用的环境变
量有哪些? ① USER:存储的是当前帐户的帐户名。 ②
UID:存储的是当前用户帐户的用户号。 ③ SHELL:存储的
是当前用户登录时所使用的Shell。 ④ HOME:存储的是当
前用户的宿主目录。 ⑤ PWD:存储的是用户当前所在的目
录。 ⑥ PATH:存储的是当前用户的命令搜索路径,即用户
输入命令而不指定命令文件的路径时,Shell程序将在哪些目
录中进行该命令程序的搜索。 ⑦ PS1:主提示符,在特权
用户下,缺省的主提示符是#;在普通用户下,缺省的主提示
符是$。 ⑧ PS2:在Shell接收用户输入命令的过程中,
如果用户在输入行末尾输入\,然后回车,或者当用户按回车
继续输入命令的其余部分,缺省的辅助提示符是>。 11. 用
户的环境变量是如何设置的? Shell的大部分环境变量是在用
户登录启动shell之后就存在并且有了初值了,那么,这些变
量及其初值是如何设置出来的呢?系统是通过一系列的环境变
量配置文件设置这些环境变量的。作为root用户可以修改这些
文件从而对用户的环境变量进行定制。 环境变量配置文件
可分为全局配置文件和用户配置文件两种。 环境变量全局
配置文件包括“/etc/profile”和“/etc/bashrc”两个文件
,Linux系统中所有的用户在登录时都会按照全局配置文件的
内容设置工作环境。“/etc/profile”文件负责设置全局的环
境,适用于所有的用户的登录;“/etc/bashrc”文件用于定
义全局的函数和别名。 在执行完上述配置文件之后,bash会
执行登录用户宿主目录下的“.bash_profile”文件
和“.bashrc”文件。通过这两个配置文件设置用户个性化的
环境变量。在这里的设置可以覆盖上述两个配置文件的设置。
这两个文件的作用分别类似于全局的“/etc/profile”文件和
“/etc/bashrc”文件。 12. 什么是位置变量? 在Shell程
序执行过程当中,shell可以通过位置变量来获得用户在命令
行上附加的参数。位置变量共有九个,从$1到$9,分别标识了
用户输入的整个命令行中以空格分隔开的字符串,$1表示第一
个参数,$2表示第二个参数,依此类推。 $0代表所执行命
令的名称,虽然$0与位置变量的格式相同,但是$0属于预定义
变量而不是位置变量。 13. 什么是预定义变量? 预定义变
量是Shell内部已经定义好的变量,其值是由Shell根据系统环
境的变化自动赋值,不能进行手工更改。所有预定义变量都是
由$符号加上另外一个符号组成,用户通过他们可以获得当前
脚本程序的运行信息,常用的预定义变量有: $# 表示
位置参数的数量。 $* 表示所有位置参数的内容。
$? 表示命令执行后返回的状态,返回0表示成功执行,其他
表示错误执行。 $$ 表示当前进程的进程号。 $!
表示后台运行的最后一个进程号。 $0 表示当前执行的
进程名称。 预定义变量通常使用在Shell脚本中,在Shell
交互命令中并不常使用,但是仍然可以使用“echo”命令查看
预定义变量的值。 #echo $$(查看当前进程的进程号)
14. 什么是用户自定义变量? 用户自定义变量是Shell用户自
己定义的变量,只在用户自己的Shell中有效,因此又称为本
地变量。自定义变量能够实现更加灵活的功能,因此自定义变
量也是用户最常使用的一类变量。 ① 自定义变量的设置
#DAY=sunday(给自定义变量DAY赋值为sunday) ② 自
定义变量的查看 #echo $DAY(查看自定义变量DAY的值)
③ 自定义变量的输出 用户在自己的Shell中定义了某个变
量后,只能在当前的Shell中使用这个变量,而在当前Shell的
子Shell中是无效的。可以用export命令把用户自定义变量输
出为全局变量,就可以在子Shell中引用这个变量了。 #
export DAY(将自定义变量DAY声明为全局变量) ④ 自定
义变量的清除 #unset DAY(清除自定义变量DAY
15. Bash有哪些常用功能? ① 命令的补全功能:当用户输
入某条命令时,可以只输入命令名中开始部分的字符,然后使
用Tab键进行命令的补全。 ② 目录名、文件名的补全功能
:利用Tab键,在已经输入的路径中,对文件和目录名进行匹
配查找,从而补全。 ③ 命令功能功能:该功能可以让用户快
速地重复地执行已经输入过的命令。 #history(显示Bash中
保存的所有历史命令,在本命令的执行结果中,每个用过的历
史命令占1行记录,前面标有行号) #!22(执行历史命令
中的第22条命令) #!his(执行历史命令中前三个字符是
“his”的那条命令) #history –c(清空历史命令)
为了提高系统的安全性,可以将“history -c”命令添加到“
.bash_logout”文件(此文件是用户注销时执行的脚本)中,
这样每次用户退出Shell时都会自动将用户的历史命令列表清
空。 ④ 别名功能:该功能可以把频繁使用的复杂命令定义
为简单的别名命令,简化了命令的输入。 #alias
benet=’mount –t iso9660 /dev/cdrom /media/cdrom/’(
定义别名命令“benet”) #alias benet(查看别名命
令“benet”的内容) #benet(执行别名命令,进行光盘
的挂载) 当自定义的别名命令与系统中的命令重名时,该
命令执行时,系统调用执行的是别名命令。 #unalias
benet(取消别名命令“benet”) 用户定义的别名,只在
当前用户Shell环境中有效,下次重启动后,定义的别名将消
失,因此,用户固定使用的自定义别名命令应保存在用户宿主
目录的“.bashrc”文件中。 系统定义的别名命令,保存在
“/etc/profile.d/”目录中的配置文件中,这些配置文件,
在每次用户登录时,用来配置用户的环境,因此,用户
用“unalias”命令取消的系统定义的别名,在下次启动后,
会恢复回来。 16. 输入输出的种类有哪些? Linux系统中对
所有的设备都通过文件的形式来引用,而每一个文件在Linux
系统内核中都分配一个文件描述符(非负整数)。 ① 标准输
入:固定的0号文件描述符被分配给标准输入文件(stdin),
通常对应终端的键盘。 ② 标准输出:1号文件描述符分配给
标准输出文件(stdout),通常对应终端的屏幕。 ③ 标准错
误:2号文件分配给标准错误输出文件(stderr),也对应终
端的屏幕。 shell在启动时会打开0、1、2三个标准输入输出
文件,在用户执行命令没有指定输入输出文件时,缺省使用这
3个输入输出文件来读写信息。 17. 什么是输入重定向?
输入重定向就是将某命令接收输入的途径由默认的键盘更改为
指定的文件,即改变了命令的输入源。 输入重定向需要使
用“<”重定向操作符。 #wc < myfile(把文本文件
myfile中的内容做为键盘的输入,交给wc命令进行处理) 18.
什么是输出重定向?
输出重定向是将命令的输出结果定向到指定的文件中,而不输
出到标准输出文件(显示器)中。 输出重定向需要使用“>
”和“>>”重定向操作符。 #ls /etc/ > myfile(把ls命
令的输出结果,保存到myfile文件中) #ls /dev/ >
myfile(把ls命令的输出结果,覆盖保存到myfile文件中)
#ls /bin/ >> myfile(把ls命令的输出结果,插入保存到
myfile文件中) 19. 什么是错误重定向? 当我们输入错
误的命令时,系统提供的错误提示信息将显示在屏幕上,可以
将这些错误信息重定向到指定的文件。 错误重定向需要使
用“2>”重定向操作符。 #nocmd 2> errfile(“nocmd”
是一条不存在的命令,键入该命令后,系统会出现错误提示信
息,把这些提示信息保存到errfile文件中) 20. 输出重定
向和错误重定向如何组合使用? 如果需要将标准输出和错
误输出重定向到同一个文件,需要使用“&>”重定向操作符。
例,在当前目录中,有文件afile和allfile,执行下面的命
令: #ls afile bfile &> allfile 将标准输出和错误输
出同时重定向到了文件allfile中。(因为有afile文件,所以
有标准的输出结果;因为没有bfile文件,所以要报错) 21.
什么是管道? 通过管道符“|”,可以把多个简单的命令
连接起来,实现复杂的功能。 管道符左边的命令的执行结
果,作为管道符右边的命令的操作源。 #ls /etc/ | head
-2(显示出/etc/目录下的文件列表中的前两行) #ls
/etc/ | grep net(显示出/etc/目录下的文件列表中带有字
符串“net”的行) 22. 什么是Shell脚本? ① Shell脚
本程序类似于DOS中的批处理文件,是Shell命令语句的集合,
用于实现特写的功能。 ② Shell脚本程序保存在文本文件
中,可以使用文本处理程序进行阅读和编辑。 ③ Shell脚
本程序是由Shell环境解释执行的,不需要在执行前进行编译
。 ④ 执行Shell程序时,Shell脚本文件需要具有可执行的
属性。 23. 编写一个完整可运行的Shell脚本需要哪些步骤
? ① 建立Shell脚本文件。 #vi hello.sh(创建脚本
文件hello.sh,并打开此文件) ② 编辑脚本文件,在脚本
中输入内容。 #!/bin/bash(表示需要使用Bash对此脚本
进行解释执行) #This is my first program.(以“#”
开头的句子,是注释语句,即说明信息) echo Hello
World!(用“echo”命令,在屏幕上显示字符串“Hello
Word!”) ③ 存盘退出。 ④ 为属主添加hello.sh文件
的可执行属性。 #chmod u+x hello.sh(为属主添加可执
行属性)
24. 如何运行脚本程序? 执行脚本程序的方法有三种:
① 用bash命令,调用脚本程序。 #bash hello.sh ②
用“.”命令,调用脚本程序。 #. Hello.sh ③ 直接
输入脚本文件名,调用脚本程序。
#/home/teacher/hello.s
- shell 的使用体会
- shell 函数的使用
- Shell 循环的使用
- shell 脚本的使用
- HBASE的shell使用
- shell shift的使用
- shell的使用
- shell “(())”的使用
- Shell变量的使用
- shell test的使用
- shell---数组的使用
- shell if的使用
- MongoDB Shell的使用
- shell数组的使用
- linux shell的使用
- shell中的${},##, %% , :- ,:+, ? 的使用
- shell函数的使用
- sqlite3 shell的使用
- jQuery数据篇-底层函数队列操作
- 软件工程精要概述3-软件需求分析
- 数据结构总结
- servlet学习之servlet入门案例
- git basics
- shell的使用
- Android 日历开发教程[四]
- 2013.1.3
- 平衡计分卡
- hdu 1061
- configure: error: recommended PNG functions feature could not be enabled
- Java运算符重写问题
- pthread_key_t和pthread_key_create()详解
- 结构体函数在Java中的运用