[Linux Shell学习系列一]Linux及Linux Shell简介

D1

立个flag:学习Linux Shell命令行和脚本编程,并形成笔记。笔记以问题形式,便于查阅,暂定每天至少总结5个问题。

系列文章相关内容转载自《Linux Shell命令行及脚本编程实例详解》一书,示例有调整。

 

1. 什么是Linux?

Linux是自由开源的类Unix操作系统。

 

2. 主流的Linux发行版本

Debian(及其派生版本,如Ubuntu和Linux Mint)、Red Hat Enterprise Linux(及其派生,如Fedora和CentOS)、openSUSE(及其商业版)、Arch Linux。

 

3. Linux、Linux内核、Linux发行版指什么?

Linux术语含义为操作系统本身,但通常使用Linux内核表达;Linux常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。

Linux发行版包含Linux内核、配套的实用程序和库,通常还有满足发行版使用目的的大量应用软件。

 

4. Linux具备哪些服务器操作系统必须具有的特性?

稳定的;健壮的;安全的;高性能的。(同时,它还是自由和开源的。)

 

5. Linux作为操作系统应用在哪里?

台式计算机;

网站服务器;

软件开发工作站;

网络监控工作站;

工作组服务器;

杀手级网络服务(如DHCP、防火墙、路由、FTP、SSH、邮件、代理以及代理缓存服务器等等)。

 

D2

6. Linux Kernel是什么?

Linux操作系统的核心。包含以下模块:

进程管理;

定时器;

中断管理;

内存管理;

模块管理;

虚拟文件系统接口;

文件系统;

设备驱动程序;

进程间通信;

网络管理;

系统引导。

 

7. 什么是Linux Shell?

Linux Shell是用户和Linux内核之间的接口程序,为用户提供使用操作系统的接口。

 

8. 访问和使用Shell有哪些方式?

1)终端——Linux桌面提供就基于GUI的登录系统,如XTerm,GTerm,KTerm应用程序。

2)安全Shell连接(SSH)——通过它远程登录服务器或工作站来访问其Shell。

3)使用控制台——一些Linux系统同样提供基于文本的登录系统。通常系统登陆后就可以直接访问Shell。

 

9. 控制台中的命令行默认的提示符是什么?

普通用户是“$”,超级用户是“#”

 

10.Shell执行命令时查找命令的顺序是什么?

首先检查命令是否是内部命令;

若不是再检查是否是一个应用程序(可以是Linux本身的实用程序,如date,或购买的商业程序,如rtds,或自由软件,如emacs),在搜索路径里寻找这些应用程序;

上述都找不到,Shell会显示一条错误信息。

如果成功找到命令,该命令会被分解为系统调用并传给Linux内核。

 

D3

11. Shell下,可以使用哪些按键组合来编辑和回调命令?

CTRL+W:删除光标位置前的单词;

CTRL+U:清空行;

↑,↓:方向键,查看命令历史;

Tab:自动补全文件名、目录名和命令等等;

CTRL+R:搜索先前使用的命令;

CTRL+C:终止当前命令;

CTRL+D:退出登录Shell;(也可以使用logout命令、exit命令结束登录对话

进程)

ESC+T:调换光标前的两个单词。

 

12. Shell程序设计语言有哪些特性?

Shell自身就是一个解释型的程序设计语言,支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构等。

Shell编程语言简单易学,任何在提示符中能输入的命令都可以放到一个可执行的Shell脚本中

(注:需要注意命令及参数放到脚本中时需要做的处理)

 

13. Shell有哪些种类?

最常用的有Bourne Shell(sh)、C Shell和Korn Shell,各有优缺点。

Bourne Shell是UNIX最初使用的Shell,在每种UNIX上都可以使用。在Shell编程方面相当优秀,但处理与用户的交互不如其他几种。

Bourne-Again Shell(bash)是Linux系统最常用的Shell。它是Bourne Shell的扩展,与Bourne Shell完全向后兼容,且增加、增强了很多特性,具有很多特色如命令不全、命令编辑和命令历史等功能,还包含了很多C Shell和Korn Shell的有点,有灵活而强大的编程接口,同时又有很友好的用户界面。

C Shell(csh)比Bourne Shell更适合编程,语法和用法与C语言很相似。Linux为喜欢C Shell编程的人提供了TCSH。

TCSH是C Shell兼容的增强版本,包括命令行编辑、可编程单词不全、拼写校正、历史命令替换、作业控制和类似C语言的语法。

Korn Shell(ksh)集合了C Shell和Bourne Shell的优点,并和Bourne Shell完全兼容。Linux系统提供了ksh的扩展,它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。

Linux还有ash和zsh等其他类型的Shell,但它们最主要的功用都是解译使用者在命令行提示符中输入的指令。

 

14. 如何查看系统中所有可用的Shell?

执行命令:cat /etc/shells

可以看到多行,如:

/bin/sh

/bin/bash

/bin/tcsh

 

15. 如何指定用户使用哪种Shell?

1)在/etc/passwd中指定

执行命令:grep root /etc/passwd #查看root帐号的配置

结果如:root:x:0:0:System Admin:/root:/bin/bash #最后一个分号后面的内容说明该帐号使用的Shell是bash

2)执行:echo $SHELL

结果如:/bin/bash #表示当前帐号使用的是bash

3)执行:ps -p $$

结果如:

PID TTY TIME CMD
23579 pts/5 00:00:00 bash

 

16. 怎样使用Shell?

1)系统启动后进入文本模式,则登录系统后就可以直接使用Shell,输入命令并执行;

2)系统以图形界面的模式启动,如GNOME或KDE桌面,则:

  单机“应用程序->系统工具->终端”来打开Shell;(启动的是默认的Shell,可以随时切换)

  或按Ctrl+Alt+F1组合键切换到虚拟控制台并使用你的用户名和密码登录。(使用Alt+F7组合键切换回图形模式)

 

17. Shell脚本是什么?

Shell脚本简单的功能类似与.bat,将很多指令汇整在一起,让使用者很容易能够一个操作执行多个命令,方便管理员进行设置或者管理;

但比windows的批处理强大在提供数组、循环、条件及逻辑判断等重要功能,使用者直接以Shell来写程序,由于使用Linux/Unix下的命令,比用其他编程语言编写的程序效率更高。

 

18. Shell脚本的内容有哪些?

Shell关键字:如if...else,for do...done

Shell命令:如export, echo, exit, pwd, return

Linux命令:如date, rm, mkdir

文本处理功能:如awk, cut, sed, grep

函数:通过函数把一些常用的功能放在一起。如/etc/init.d目录的大部分或全部系统Shell脚本使用的函数都包含在文件/etc/init.d/functions中

控制流语句:如if...then...else或执行重复操作的Shell循环

 

19. shell脚本如何执行?

可以像命令一样执行,如:

先给文本文件添加执行权限:chmod +x a.sh

执行: a.sh

 

D4

20. 为什么要使用shell脚本?

使用简单;

节省时间:可以把冗长的重复的一连串命令合并成一条简单的命令;

可以创建你自己的自动化工具和应用程序;

使系统管理任务自动化;

经过良好的测试的脚本,做类似配置服务或系统管理任务时,发生错误的机会将大大减少。

 

21.Shell脚本常见的应用有哪些?

监控你的Linux系统;

备份数据和创建快照;

创建邮件告警系统;

查找耗尽系统资源的进程;

查找是否所有的网络服务都正常运行等。

 

22. Shell脚本的一个实例。

1)编写my_script

#!/bin/bash  
#My first script

ls -l .*

第一行:告诉shell使用什么程序解释脚本的特别指示;

第二行:注释,#后的内容被bash忽略,解释代码;

最后一行:ls命令,列出当前目录中所有以点开头的文件和目录(即所有隐藏文件和目录)

2)允许Shell执行你的脚本

-bash-3.2$ chmod 755 my_script

755:表示拥有者有读写执行权限,其他用户只有读和执行权限

700:表示拥有者有读写执行权限,其他用户没有权限

3)执行

-bash-3.2$ ./my_script

 

注:第一章结束

posted @ 2020-04-29 17:37  workingdiary  阅读(307)  评论(0)    收藏  举报