Shell 编程基础1 2019-7-6

Shell基础

一、Shell概述

  1. 什么是shell

1) Shell的使用对象人数用对象人数是有限的,仅供自己或是自己的团队,也就是说可以不考虑效率的问题,即不需要进行优化。追求的是实现功能,逻辑简单。

2) 命令解释器,终端输入的内容内核无法识别,这个时候shell用来翻译这些指令为二进制然后内核将返回信息交给shell进行翻译显示在终端。脚本是命令的集合。

常见的Shell种类有:

Bourne Shell(/usr/bin/sh或/bin/sh)----古老,接近淘汰

Bourne Again Shell (/bin/bash)-----Linux标准shell

C Shell (/usr/bin/csh)

K Shell (/usr/bin/ksh)

Shell for Root (/sbin/sh)

  1. Shell脚本的执行方式:

1) Echo命令:输出,带有空格的内容需要放在“”中。

Echo -n:输出内容不换行(默认是自动换行的)

Echo -e:支持反斜杠控制的字符转换(即可支持控制字符)

 转义符的作用: 取消后面字符的特殊含义

  1. shell脚本的执行:

编写脚本一定要加#!/bin/bash  告诉计算机是什么类型的脚本

书写脚本需要注意    书写内容中有!  一定要在!后面加空格

执行三种方法:1) 赋予执行权限chmod 755 hello.sh   然后绝对路径执行/root/hello.sh     2)也要赋予执行权限,采用相对路径执行./hello.sh   注意:使用相对路径执行时应与脚本文件在同一目录下。 3)不需要赋予执行权限,直接用bash调用bash hello.sh

 

二、Bash的基本功能

 

  1. 历史命令

(1) 历史命令的查看:history 会被一直保存下去即使重启也不会消失(存储位置:.bash_history)当前查看.bash_history中命令会少于history所显示的命令,原因就是当前的命令还没有存储到.bash_history。如果想强制直接保存到.bash_history中使用命令history -w 这个在用户注销时会自动写入。历史命令默认存放1000条(在/etc/profile下有一个HISTSIZE 

History -c :清空历史命令

(2) 历史命令的调用

使用原来的历史命令有以下的方法:

  1. 使用上下箭头来调用历史命令
  2. 使用“!n”重复执行第n条历史命令
  3. 使用“!!”重复执行上一条命令
  4. 使用“!字符串”重复执行最后一条以该字符串开头的命令
  5. 使用“!$”重复上一条命令的最后一个参数
  6. 命令的补全是Shell的功能:

.  有三个含义:  单独的一个. 代表source命令

文件名前面加 . 是隐藏文件

目录前面加 . 是当前目录

  1. 别名的优先级比命令要高,命令执行时的具体顺序如下:

① 第一顺位执行用绝对路径或者相对路径执行的命令

② 第二顺位执行别名

③ 第三顺位执行bash的内部命令

④ 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

为了让这个别名永久生效,可以把别名写入环境变量的配置文件“~/.bashrc”中。

命令: vi  /root/.bashrc

  1. 快捷键

Ctrl A:  光标移动到命令行开始的位置

Ctrl D:  光标移动到命令行末尾的位置

Ctrl U:  剪切光标之前命令行(也可作为删除整行来使用)

Ctrl Y:   与Ctrl U一同使用,用来粘贴剪切内容

Ctrl C:   强行终止当前命令

Ctrl L:    清屏

Ctrl D:   退出当前终端

Ctrl Z:    挂起,放入后台。(注意在:不是中止)

  1. 输入输出重定向

1) Bash的标准输入与输出

Linux下的一切皆为文件,键盘名字为:/dev/stdin 作为标准输入 显示器名字为: /dev/stdout 作为标准输出  错误输出为: /dev/stderr 作为标准错误输出。由于不好记录文件描述符设置为0是标准输入,1是标准输出,2是标准错误输出。

2) 输出重定向:命令的输出本来应该输出给标准输出设备的,重定向的作用就是不让命令输出到显示器上而是输出到文件中,改变其输出方向。(最终的结果就是把命令保存到文件中)可以作为记录系统的日志。

 

原文地址:https://www.cnblogs.com/plutozzl/p/11142863.html