Linux(一)Linux理论、Shell

文章目录

    • 一、Linux概述
      • 1.1 什么是Linux
      • 1.2 Unix和Linux的区别
      • 1.3 Linux的体系结构
      • 1.4 什么是Linux内核
      • 1.15 什么是BASH
      • 1.6 BASH和DOS之间的基本区别
      • 1.7 Linux开机启动过程
      • 1.8 Linux系统缺省的运行级别
      • 1.9 Linux使用的进程间通信方式
      • 1.10 Linux有哪些系统日志文件
      • 1.11 什么是交换空间
      • 1.12 什么是root帐户
      • 1.13 什么是LILO
      • 1.14 什么是CLI
      • 1.15 什么是GUI
      • 1.16 绝对路径和相对路径
      • 1.17 环境变量
      • 1.18 Linux中进程有哪几种状态?在ps显示出来的信息中,分别用什么符号表示的?
      • 1.20 如何查看端口号被哪个进程占用
      • 1.21 查看cpu核的个数主频
    • 二、文件
      • 2.1 Linux文件系统
      • 2.2 Linux的目录结构
      • 2.3 Linux文件系统的相关问题
        • 2.3.1 什么是inode
        • 2.3.2 什么是硬链接和软链接
        • 2.3.3 储存用户信息的文件是什么,包括哪些信息?
        • 2.3.4 数据字典属于哪一个用户的
    • 三、Shell
      • 3.1 Shell脚本中使用的变量
      • 3.2 Shell脚本中嵌套if语法
      • 3.3 Shell脚本中比较两个数字
      • 3.4 Shell脚本中case语句
      • 3.5 Shell脚本中for循环语法
      • 3.6 Shell脚本中while循环语法
      • 3.7 Shell脚本中定义函数
      • 3.8 执行Shell脚本
      • 3.9 能进行数学运算的bash内置命令
      • 3.10 Shell的相关问题
        • 3.10.1 在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
        • 3.10.2 哪个命令专门用来查看后台任务?
        • 3.10.3 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

一、Linux概述

1.1 什么是Linux

  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(Portable Operating System Interface,是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称)和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。
  Linux支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
  Linux内核主要负责的功能:系统内存管理、软件程序管理、硬件设备管理、文件系统管理。

1.2 Unix和Linux的区别

  • 1、开源性
      Linux是一款开源操作系统,不需要付费,即可使用;
      Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
  • 2、跨平台性
      Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上
      Unix操作系统跨平台性能较弱,大多需与硬件配套使用。
  • 3、可视化界面
      Linux除了进行命令行操作,还有窗体管理系统
      Unix只是命令行下的系统。
  • 4、硬件环境
      Linux操作系统对硬件的要求较低,安装方法更易掌握;
      Unix对硬件要求比较苛刻,安装难度较大。

  UNIX系统大多是与硬件配套的,也就是说,大多数UNIX系统如AIX、HP-UX等是无法安装在x86服务器和个人计算机上的,而Linux则可以运行在多种硬件平台上。

1.3 Linux的体系结构

  Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。
Linux(一)Linux理论、Shell_第1张图片

  • 1、Linux内核
      内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
      Linux内核的主要模块分为存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、系统的初始化和系统调用等几个部分。
      Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:
    Linux(一)Linux理论、Shell_第2张图片
  • 2、Linux Shell
      shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,Shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
  • 3、Linux文件系统
      文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。
  • 4、Linux应用
      标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公套件、Internet工具和数据库等。

1.4 什么是Linux内核

  Linux内核本身并不是操作系统,它是一个完整操作系统的组成部分。Linux发行商都采用Linux内核,然后加入更多的工具、库和应用程序来构建一个完整的操作系统。
  Linux内核的常见功能:

  • 1、进程管理
      内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出)。不同进程间通讯(通过信号,管道,或者进程间通讯原语)对整个系统功能来说是基本的,也由内核处理。另外,调度器,控制进程如何共享CPU,是进程管理的一部分。更通常地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU之上的抽象。
  • 2、内存管理
      计算机的内存是主要的资源,处理它所用的策略对系统性能是至关重要的。内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间。内核的不同部分与内存管理子系统通过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。
  • 3、文件系统
      Unix在很大程度上基于文件系统的概念;几乎Unix中的任何东西都可看作一个文件。内核在非结构化的硬件之上建立了一个结构化的文件系统,结果是文件的抽象非常多地在整个系统中应用。
      另外,Linux支持多个文件系统类型,就是说,物理介质上不同的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,普遍使用的FAT文件系统,或者其他几个文件系统。
  • 4、设备控制
      几乎每个系统操作终都映射到一个物理设备上。除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行,这些代码称为设备驱动.。内核中必须嵌入系统中出现的每个外设的驱动,,从硬盘驱动到键盘和磁带驱动器。内核功能的这个方面是本书中的我们主要感兴趣的地方。
  • 5、网络
      网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程:进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发。系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。

1.15 什么是BASH

  先说Shell,Shell是用户和Linux(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。Shell 是一个命令语言解释器。拥有自己内建的Shell命令集
  Bourne Again shell(bash),是Bourne shell的扩展。bash与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加和增强了很多特性。bash也包含了很多C和Korn shell里的优点。bash有很灵活和强大的编程接口,同时又有很友好的用户界面。
  BASH是运行Linux的大多数系统的默认Shell。

1.6 BASH和DOS之间的基本区别

  BASH和DOS控制台之间的主要区别在于3个方面:

  • 1、BASH命令区分大小写,而DOS命令则不区分
  • 2、在BASH下,/是目录分隔符,\作为转义字符;在DOS下,/用作命令参数分隔符,\是目录分隔符。
  • 3、DOS遵循命名文件中的约定,即8个字符的文件名后跟一个点,扩展名为3个字符。BASH没有遵循这样的惯例。

1.7 Linux开机启动过程

  • 1、 BIOS加电自检
      加电自检,检测硬件设备。然后按照cmos(是计算机系统内一种重要的芯片,保存了系统引导最基本的资料)上面的顺序来搜索处在活动状态下的可以引导的设备。可以是光驱、软盘、USB等。
  • 2、 加载主引导加载程序(MBR)
      主引导程序是一个512字节的映像。包含一点机器码还有一个小的分区。
      主引导程序的任务就是查找并且加载处在硬盘分区上的次引导程序。通过分区表查找活动分区,并将处在活动分区的次引导加载程序读取到内存里面运行。
  • 3、 加载次引导记载程序(GRUB)
      引导加载程序只要就是加载linux内核。
      上一阶段结束之后次引导加载程序就会在内存里面跑起来。就会出现GRUB图形界面,让用户选择加载什么样的内核。
  • 4、 linux内核映像
      用户选择要加载的内核之后,次引导加载程序(GRUB)就会根据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取Linux内核映像,然后把内核映像加载到内存中并把控制权交给Linux内核。
      linux内核获得控制权之后开始干自己的事:

 1) 检测硬件
 2) 解压缩自己并安装必要驱动
 3) 初始化与文件系统相关的虚拟设备,LVM或RAID
 4) 装载根文件系统,挂在根目录下面
 5) 完成之后,linux在进程空间里面加载init程序,下面轮到init干活

  • 5 、 init进程
      init是所有进程的发起者和控制者,所有的进程都由此衍生。
      init进程获得控制权之后,它会执行/etc/rc.d/rc.sysinit脚本,根据里面的代码设置环境变量、网络、启动swap、检查并挂载文件系统、执行其他初始化工作。

  至此,linux启动完成。

1.8 Linux系统缺省的运行级别

运行级别0 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1 单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2 多用户状态(没有NFS)
运行级别3 完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4 系统未使用,保留
运行级别5 X11控制台,登陆后进入图形GUI模式
运行级别6 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

  注:NFS是Network File System的缩写,即网络文件系统。 
  NFS的基本原则是“容许不同的客户端及服务端通过一组RPC(远程过程调用)分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

1.9 Linux使用的进程间通信方式

  Linux下进程通信的八种方法:

  • 1、管道(pipe)
      管道允许一个进程和另一个与它有共同祖先的进程之间进行通信;
  • 2、命名管道(FIFO)
      类似于管道,但是它可以用于任何两个进程之间的通信,命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建;
  • 3、信号(signal)
      信号是比较复杂的通信方式,用于通知接收进程有某种事情发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持UNIX早期信号语义函数signal外,还支持语义符合POSIX.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD即能实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数的功能);
  • 4、内存映射(mapped memory)
      内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它;
  • 5、消息队列(message queue)
      消息队列是消息的连接表,包括POSIX消息对和System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能成该无格式字节流以及缓冲区大小受限等缺点;
  • 6、信号量(semaphore)
      信号量主要作为进程间以及同进程不同线程之间的同步手段;
  • 7、共享内存 (shared memory)
      它使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。这是针对其他通信机制运行效率较低而设计的。它往往与其他通信机制,如信号量结合使用,以达到进程间的同步及互斥;
  • 8、套接字(Socket)
      它是更为通用的进程间通信机制,可用于不同机器之间的进程间通信。起初是由UNIX系统的BSD分支开发出来的,但现在一般可以移植到其他类UNIX系统上:Linux和System V的变种都支持套接字。

1.10 Linux有哪些系统日志文件

  常见的几个:

  • /var/log/cron
      这个文件记录了系统例行性工作调度的相关信息,如你的crontab调度有没有实际被进行?进行过程中有没有发生错误?/etc/crontab是否编写正确?在这个日志文件内都可以查询。
  • /var/log/dmesg
      该文件记录系统在开机时内核检测过程中所产生的各项信息。由于centos默认将开机时内核的硬件检测过程取消显示,因此额外将数据记录在此文件中。
  • /var/log/lastlog
      该文件记录了系统上所有帐号最近一次登入系统时的相关信息。lastlog命令就是利用这个文件所记录的信息来显示结果。
  • /var/log/maillog或/var/log/mail/
      该文件或目录记录邮件的来往信息,其实主要记录SMTP和POP3(IMAP)协议提供者所产生的信息。
  • /var/log/messages
      该文件几乎记录了系统发生的所有错误信息(或者是重要的信息),所以这个文件相当重要;如果系统发生莫名的错误时,这个文件是必查的日志文件之一。

1.11 什么是交换空间

  swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务。当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

1.12 什么是root帐户

  root存在于UNIX系统和类UNIX系统(如Ubuntu等版本的Linux系统以及Android系统)中,超级用户一般命名为root,相当于Windows系统中的system用户。
  root是系统中唯一的超级用户,具有系统中所有的权限,如启动或停止一个进程,删除或增加用户,增加或者禁用硬件等等。
  root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。最好单独建立一个普通的用户,作为日常之用。

1.13 什么是LILO

  LILO是Linux的引导加载程序。它主要用于将Linux操作系统加载到主内存中,以便它可以开始运行。

1.14 什么是CLI

  命令行界面(command-line interface,CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。
  通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。

1.15 什么是GUI

  图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
  图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。

1.16 绝对路径和相对路径

  绝对路径:描述了在虚拟目录结构中该目录的确切位置,以虚拟目录根目录开始,相当于目录全名。以正斜线开始,比如:/usr/local
  相对路径:允许用户执行一个基于当前目录位置的文件路径。
  在相对路径中:

单点符(.):表示当前目录;
双点符(…):表示当前目录的父目录。

  当前目录和上层目录: ./ ../
  主目录: ~/
  切换目录: cd

1.17 环境变量

  bash shell用一个叫做环境变量的特性用来存储有关shell回话和工作环境的信息。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。
  在bash shell中,环境变量分为两类:

全局变量:对于shell回话和所有生成的子shell都是可见的。
局部变量:只对创建他们的shell可见。

  查看所有命令:env。
  查看某个,如 home: env $HOME。

1.18 Linux中进程有哪几种状态?在ps显示出来的信息中,分别用什么符号表示的?

  • 不同的状态
      1、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指进程不响应异步信号。
      2、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
      3、就绪状态:在 run_queue 队列里的状态。
      4、运行状态:在 run_queue 队列里的状态。
      5、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量),而被挂起。
      6、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。
      7、退出状态。
  • 表示状态的符号
      D:不可中断Uninterruptible(usually IO)。
      R:正在运行,或在队列中的进程。
      S:处于休眠状态。
      T:停止或被追踪。
      Z:僵尸进程。
      W:进入内存交换(从内核2.6开始无效)。
      X:死掉的进程。

1.20 如何查看端口号被哪个进程占用

  lsof -i:端口号。

1.21 查看cpu核的个数主频

  cat /proc/cpuinfo。

二、文件

2.1 Linux文件系统

  在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件
  在Linux系统中,有一个重要的概念:一切都是文件。其实这是Unix哲学的一个体现,而Linux是重写Unix而来,所以这个概念也就传承了下来。在Unix系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
  Linux支持5种文件类型,如下图所示:
Linux(一)Linux理论、Shell_第3张图片

2.2 Linux的目录结构

  Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
Linux(一)Linux理论、Shell_第4张图片

  • /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • /usr : 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录;
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot存放用于系统引导时使用的各种文件
  • /lib : 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

2.3 Linux文件系统的相关问题

2.3.1 什么是inode

  文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
  操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个 block。
  文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"
  每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

2.3.2 什么是硬链接和软链接

  建立软链接和硬链接的语法:

	# 软链接
	ln -s 源文件 目标文件
	# 硬链接
	ln 源文件 目标文件

  软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的;硬链接等于cp -p加同步更新
  软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系。
  硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。

2.3.3 储存用户信息的文件是什么,包括哪些信息?

  /etc/password文件用来存储一些和用户有关的信息,包括:

登录用户名;
用户密码;
用户账户的UID(数字形式);
用户账户的组ID(GID)(数字形式);
用户账户的文本描述(称为备注字段);
用户HOME目录的位置;
用户的默认shell。

2.3.4 数据字典属于哪一个用户的

  数据字典是属于SYS用户的,用户SYSSYSEM是由系统默认自动创建的。

三、Shell

  一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。
  Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序。简单来说:Shell就是一个用户跟操作系统之间交互的命令解释器

  • 1、默认登录Shell
      在Linux操作系统,"/bin/bash"是默认登录Shell,是在创建用户时分配的。
      使用chsh命令可以改变默认的Shell 。示例:
## chsh <用户名> -s <新shell>
## chsh ThinkWon -s /bin/sh
  • 2、在Shell脚本中,如何写入注释
      注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以 # 开头。示例:
#!/bin/bash
## This is a command
echo "I am logged in as $USER"

3.1 Shell脚本中使用的变量

  • 1、系统定义变量
      系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过 set 命令查看。
  • 2、用户定义变量
      用户变量由系统用户来生成和定义,变量的值可以通过命令 “echo $<变量名>” 查看。

3.2 Shell脚本中嵌套if语法

  示例1:

  if [ condition ]
  then 
        if [ condition ]
        then 
            commands1
        else
            commands2
         fi    
   fi

  示例2:

if [ condition ]
then 
    if [ condition ]
    then 
         commands1
    else    
         commands2
    fi
else
    commands3
fi

3.3 Shell脚本中比较两个数字

  在if-then中使用测试命令( -gt 等)来比较两个数字。示例:

#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

3.4 Shell脚本中case语句

  示例:

case 变量 in 
值1 )
    执行动作1
    ;;
值2 )
    执行动作2
    ;;
值3 )
    执行动作3
    ;;
....
* )
    如果变量的值都不是以上的值,则执行此程序
    ;;
esac

  示例2:

case "找工作条件" in
    给的钱多)
        给你工作...
    ;;
    给股份)
        给你工作...
    ;;
    有发展前景)
        可以试试...
    ;;
    *)
        bye bye !!
esac

3.5 Shell脚本中for循环语法

  示例:

for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

  或:

for 变量 in 串行
do
   执行命令
done

  更详细的for语法可以参考:Shell中for循环的几个常用写法。

3.6 Shell脚本中while循环语法

  如同 for 循环,while 循环只要条件成立就重复它的命令块。示例:

while [ 条件 ]
do
命令…
done

  do-while 语句的基本格式示例:

do
{
命令
} while (条件)

3.7 Shell脚本中定义函数

  函数定义示例:

# func_name 函数名  
function func_name(){
	#函数体内容
}# func_name 函数名
func_name(){
#函数体内容
}

  函数调用示例:

func_name parm 

  函数体中,可以通过$1 $2 …$9接受函数调用中的变量;函数可以通过return 返回函数执行的结果。

3.8 执行Shell脚本

  • 1、直接执行Shell脚本
      示例:
sh sleep.sh
./sleep.sh
  • 2、在后台执行脚本
      一般都是使用&在命令结尾来让程序自动运行。示例:
./sleep.sh &

3.9 能进行数学运算的bash内置命令

  bash shell的内置命令let可以进行整型数的数学运算。示例:

#! /bin/bash
…
…
let c=a+b

3.10 Shell的相关问题

3.10.1 在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?

  使用Llinux命令disown -r可以将所有正在运行的进程移除。

3.10.2 哪个命令专门用来查看后台任务?

  job -l

3.10.3 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

  把后台任务调到前台执行:fg
  把停下的后台任务在后台执行起来:bg

你可能感兴趣的:(【Linux】,linux,服务器,Shell)