Linux基础之Shell快速入门

在这里插入图片描述
在学习shell之前,有必要了解下vim编辑器

一、Vi和vim编辑器

1、什么是 vim

​ 所有的 Linux 系统都会内建 vi 文本编辑器,Vim是从 vi 发展出来的一个文本编辑器,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

2、vi/vim 的三种模式

vi/vim 大致可以分为三种模式,分别是

  1. 命令模式(Command mode)
  2. 插入模式(Insert mode)
  3. 底线命令模式(Last line mode)

这三种模式相互区别又紧密相连

2.1、命令模式

命令模式又叫做正常模式,即在命令行输入 vi/vim ××××,就进入了该模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

常用的几个命令:

  • i 切换到输入模式
  • : 切换到底线命令模式

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
:在此模式下不能编辑文档

2.2、输入模式

在命令模式下按下i就进入了输入模式(插入模式)。

常见的按键:

  • ENTER:换行
  • BACK SPACE:删除光标前一个字符
  • DEL:删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • ESC,退出输入模式,切换到命令模式

2.3、底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

常见的基本命令(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

模式转化如图所示:

在这里插入图片描述

3、vi/vim 常用键

移动光标的方法
向左箭头键(←)光标向左移动一个字符
j向下箭头键(↓)光标向下移动一个字符
向上箭头键(↑)光标向上移动一个字符
向右箭头键(→)光标向右移动一个字符
进入输入或取代的编辑模式
i, a,o进入输入模式(Insert mode)
指令行的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!强制写入
:q离开 vi (常用)
:q!强制离开不储存
:wq存储后离开

4、vi/vim 举例

使用vim编辑器编写一个test.java文件

#  进入编辑
[root@root /]# vim /home/itbestboy/test02/test.java
#编写test.java文件

    #1.0 先输入 i 进入编辑模式。
public class changliang {

        public static void main(String[] args) {
                final char sex1='男';
                final char sex2='女';
                final double price=176.2;
                System.out.println(sex1);
                System.out.println(sex2);
                System.out.println("平均价格是----"+price);
        }

}
    #2.0 编辑完成后 点击  ESC 退出编辑模式    
    #3.0 点击  ESC 退出编辑模式 ,此时进入命令模式,然后在该模式下输入冒号 :
    #4.0 输入冒号(英文状态下)后进入底线命令模式,此时输入wq q!等其中任意一个命令,进行退出操作。   



#查看结果
[root@root /]# more /home/itbestboy/test02/test.java
public class changliang {

	public static void main(String[] args) {
		final char sex1='男';
		final char sex2='女';
		final double price=176.2;
		System.out.println(sex1);
		System.out.println(sex2);
		System.out.println("平均价格是----"+price);
	}

}

vim 编辑器是学习shell必不可少的工具之一,一定要注意快捷键及按键的使用

二、Shell编程

1、Shell定义

​ Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序.

​ 同时Shell也是一种功能很强大的编程语言,是一个用 C 语言编写的程序,它易于编写调试,灵活性很强,它是解释执行的脚本语言,可以直接调用linux系统命令。

在这里插入图片描述

2、Shell分类

  1. BourneShell(sh):是由AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
  2. CShell(csh):是加州伯克利大学的Bill Joy为BSD Unix开发的,共有52个内部命令,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
  3. KornShell(ksh):是AT&T Bell实验室的David Korn开发的,共有42 条内部命令,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
  4. ash:ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。
  5. BourneAgain Shell (即bash):是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。。

3、配置文件

Shell的配置文件默认在/etc/shells

[root@root /]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

如果需要进行切换,可以直接输入相应的名字。

[root@root /]# sh
#进入,输入exit退出
sh-4.2# exit
exit
[root@root /]# 

4、Shell快速入门

脚本的格式:

  • 所有的脚本都必须以#!/bin/bash 开头
    -#!这是一个约定的标记,它告诉系统这个脚本该用什么解释器去执行,即使用那种shell去执行,一般现在都用bash.
  • 所有文件都必须以.sh为后缀名,虽然在linux系统中不区分文件后缀名,但是最好还是加上,方便我们识别。
  • 脚本需要有可执行权限,即x。例如chmod +x ./×××××.sh

案例

编写一个shell文件,输入hello Shell

#编写shell文件
[root@root /]# vim /home/itbestboy/test02/test.sh

#!/bin/bash
echo"hello.shell!!"
#查看文件的权限
[root@root test02]# ll
total 8
-rw-r--r-- 1 root root 1214 Jul 27 13:18 helloTwo.java
-rw-r--r-- 1 root root   33 Aug 13 02:20 test.sh
#赋予执行的权限chmod +x 。/test.sh
[root@root test02]# chmod 744 test.sh 
#再次查看文件的权限
[root@root test02]# ll
total 8
-rw-r--r-- 1 root root 1214 Jul 27 13:18 helloTwo.java
-rwxr--r-- 1 root root   33 Aug 13 02:20 test.sh
#执行  
[root@root test02]# ./test.sh 
hello.shell!!

[root@root test02]# /bin/sh test.sh 
hello.shell!!




注:一般有两种执行方式

  1. 作为可执行程序

    注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

  2. 作为解释器参数

直接运行解释器,其参数就是 shell 脚本的文件名

在使用这种方式执行时,可以在第一行不用加#!/bin/bash

注释

shell中的注释分为单行注释和多行注释。

其中单行注释以#开头,比较简单。

如果需要注释多行时可以在每一行前加#,但是比较麻烦,所以一般会采用:<<EOF注释内容...EOF,其中EOF可以换成其他符号,如:<<!注释内容...! 或者:<<'注释内容...'

欢迎交流探讨
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值