[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
注:第一章结束
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号