`
dcj3sjt126com
  • 浏览: 1857753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell学习一

阅读更多

 

目录

1. shell的作用和历史

2. shell的常用功能 

3. shell变量种类

3. shell脚本的运行

4. 编写简单的shell脚本

 

Shell的作用及常见种类

Shell的作用 -- 命令解释器,“翻译官”

 

Bash的常用功能

Tab键自动补齐

命令历史

命令别名

标准输入输出

重定向操作

管道操作

 

Bash的命令历史

命令历史

保存用户曾经执行过的命令操作

存放位置:~/.bash_history 文件 

查看历史命令 

使用↑、↓按键逐条翻看,允许编辑并重复执行

执行:history

清除历史命令

执行:history -c 

 

Bash的命令历史

调用历史命令

!n:执行历史记录中的第n条命令

!str:执行历史记录中以“str”开头的命令

设置记录历史命令的条数

修改 HISTSIZE 参数(默认为1000条) 

Vi /etc/profile    设置:HISTSIZE=200

 

Bash的命令别名

命令别名

为使用频率较高的复杂命令行设置简短的调用名称

存放位置:~/.bashrc 

 

Bash的标准输入输出

交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

 

类型设备文件文件描述编号默认设备

标准输入/dev/stdin0键盘

标准输出/dev/stdout1显示器

标准错误输出/dev/stderr2显示器

Bash的重定向操作

改变标准输入、标准输出、标准错误的方向

类型操作符用途

重定向标准输入<将命令中接收输入的途径由默认的键盘更改为指定的文件 

重定向标准输出>将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上 

>>将命令执行的结果追加输出到指定文件 

重定向标准错误2>清空指定文件的内容,并将标准错误信息保存到该文件中

2>>将标准错误信息追加输出到指定的文件中

重定向标准输出和

标准错误&>将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上

Bash的管道操作

管道操作符号“|” 

[root@localhost ~]# free –m | head -2

[root@localhost ~]# free –m | grep “Mem” | awk ‘{print $2,$4}’

 

Shell变量的应用

Shell变量

为灵活管理Linux系统提供特定参数,有两层意思:

1.变量名:使用固定的名称,由系统预设或用户定义

2. 变量值:能够根据用户设置、系统环境变化而变化

Shell变量的种类

用户自定义变量:由用户自己定义、修改和使用

环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改

预定义变量:Bash预定义的特殊变量,不能直接修改

位置变量:通过命令行给程序传递执行参数

 

变量的赋值与引用

定义新的变量

变量名要以英文字母或下划线开头,区分大小写

格式:变量名=变量值

查看变量的值

格式:echo  $变量名

[root@localhost ~]# DAY=Sunday

[root@localhost ~]# echo $DAY

 

从键盘输入内容为变量赋值

 格式: read  [-p  "信息"]  变量名

结合不同的引号为变量赋值

双引号 “ ” :允许通过$符号引用其他变量值

单引号 ‘ ’ :禁止引用其他变量值,$视为普通字符

反撇号 ` ` :将命令执行的结果输出给变量

 

设置变量的作用范围

格式:export   变量名...

                export  变量名=变量值  [...变量名n=变量值n]

清除用户定义的变量

格式:unset   变量名

 

变量赋值、引用和删除

[root@localhost ~]# echo $FILESVR

filesvr.lamp.com

[root@localhost ~]# export FILESVR

[root@localhost ~]# zsh 

[root@localhost]~# echo $FILESVR

filesvr.lamp.com

[root@localhost]~# exit

[root@localhost root]# unset  FILESVR

[root@localhost root]# echo $FILESVR

 

数值变量的运算

计算整数表达式的运算结果

格式:expr  变量1   运算符  变量2  ...[运算符 变量n]

expr的常用运算符

加法运算:+ 

减法运算: - 

乘法运算: \*

除法运算: / 

求模(取余)运算: % 

 

环境变量

1.环境变量配置文件

全局配置文件:/etc/profile 

用户配置文件:~/.bash_profile 

2.查看环境变量 

set命令可以查看所有的Shell变量,其中包括环境变量

 

环境变量

常见的环境变量:

 $USER 、$LOGNAME

 $UID 、 $SHELL 、$HOME

 $PWD、 $PATH 

 $PS1、$PS2

 

查看环境变量

[root@localhost ~]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# PATH="/opt/bin:$PATH"

[root@localhost ~]# echo $PATH

/opt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

 

位置变量

表示为 $n,n为1~9之间的数字

[root@localhost ~]# ./exam01 one two three four 

$0:当前执行的进程/程序名 exam01

$1 表示one

$2 表示 two

依次类推

 

查看当前所执行进程的名称、PID号

[root@localhost ~]#echo $0 $$

bash 5887

[root@localhost ~]#echo $?

127

返回0表示上一条命令正常,返回非0表示上一条命令异常

 

Shell脚本的概念

Shell脚本

1.用途:完成特定的、较复杂的系统管理任务

2.格式:集中保存多条Linux命令,普通文本文件

3.执行方式:按照预设的顺序依次解释执行

 

编写可执行的Shell脚本

建立包含执行语句的脚本文件 

#脚本文件中包括的内容 

 运行环境设置:#!/bin/bash 

 注释信息:以#开始的说明性文字 

 可执行的Linux命令行

为脚本文件添加可执行权限

 

给shell脚本增加执行权限

[root@localhost ~]# vi repboot.sh

#!/bin/bash

# To show usage of /boot directory and mode of kernel file.

echo "Useage of /boot: "

du -sh /boot

echo "The mode of kernel file:"

ls -lh /boot/vmlinuz-*

[root@localhost ~]# chmod a+x repboot.sh 

 

运行Shell脚本程序

1.直接执行具有“x”权限的脚本文件

 例如:./repboot.sh 

2.使用指定的解释器程序执行脚本内容

 例如:bash  repboot.sh、sh  repboot.sh

3.通过source命令(或 . )读取脚本内容执行

 例如:souce  repboot.sh  或  .   hello.sh 

 

Shell脚本应用示例

示例一

[root@localhost ~]# vi /opt/ftpclean.sh

#!/bin/bash

date  >>  /var/log/pubdir.log

ls  -lhR  /var/ftp/pub  >>  /var/log/pubdir.log

rm  -rf  /var/ftp/pub/*

 

示例二

[root@localhost ~]# vi /opt/dbbak.sh 

#!/bin/bash

DAY=`date +%Y%m%d`

SIZE=`du -sh /var/lib/mysql`

echo "Date: $DAY" >> /tmp/dbinfo.txt

echo "Data Size: $SIZE" >> /tmp/dbinfo.txt

cd /opt/dbbak

tar zcvf mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt

rm -f /tmp/dbinfo.txt 

 

小结:

1.shell的作用

2.常用的shell类型

3.熟练shell的常用功能

4.shell变量的种类

5.shell脚本的运行条件

 

练习:

1.对shell常用功能的操作

2.练习shell的各种变量的定义、查看和使用

3.写一个简单的多条命令的shell脚本

4.如何去运行以上的那个shell脚本

5.开机如何自动执行这个shell脚本

 

练习一参考:

查询命令相关

1 查询data.f文件中字符串”abc”出现的行号以及内容

grep –n ‘abc’ data.f 

2 查询data.f文件中字符串”abc”出现的行的内容

grep ‘abc’ data.f

3 查询data.f文件中字符串”abc”出现的行数

grep –n ‘abc’ data.f | cut –f 1 –d  ‘:’

4 查询data.f文件中不包含字符串”abc”出现的行号以及内容

grep –vn ‘abc’ data.f

5 使用正则表达式写出与 grep –i “sept” data.f 作用相同的代码

grep ‘[sS][eE][pP][tT]‘ data.f

6 正则表达式 grep ‘48[34]’ data.f 的含义

匹配’483’ or ‘484’

7 正则表达式grep ‘^[^48]’ data.f的含义

匹配不是以4或者8开头的行

8 正则表达式grep ‘K…D’ data.f的含义

.代表任意字符,也就是匹配K ____D

9 正则表达式grep '[0-9][0-5][0-6]' data.f的含义,与grep '^[0-9][0-5][0-6]' data.f的区别?

    第一个:匹配3个连续的数字,第一位是0-9,第二位是0-5,第三位是0-6。

第二个:匹配的3个数字必须在行首

 

10 查询文件中空行的正则表达式

   grep '^\s*$' data

11 正则表达式 grep "0:0" /etc/passwd | egrep -v '^root'的真正意图

查找UID和GID都为0的非root用户。

开机自动执行shell脚本

source test.sh 将此命令添加到/etc/rc.local即可

 
分享到:
评论

相关推荐

    shell学习,第一章

    Shell学习第一章主要涵盖了Shell脚本语言的基础知识,包括Shell的介绍、基本语法、变量和字符串操作等内容。以下是对这些知识点的详细阐述: 1. **Shell介绍**:Shell是一种命令行解释器,它允许用户与操作系统进行...

    linux shell学习资料

    Linux Shell是Linux操作系统中用于与系统交互的一种命令行界面,它是用户与Linux内核之间的桥梁。Shell不仅可以执行单一的命令,还可以通过编写脚本实现复杂的自动化任务。在本学习资料包中,包含了三本关于Linux ...

    实用的shell学习资料

    **实用的Shell学习资料概述** Shell是Linux和Unix操作系统中的一种命令解释器,它作为用户与操作系统之间交互的界面,允许用户输入命令并执行。在众多的Shell中,Bash(Bourne Again SHell)是最流行的一个,广泛...

    shell学习1

    1. 使用文本编辑器创建一个新的文件,如`shellTest.sh`,并在文件中添加`#!/bin/bash`作为第一行,这是Shebang,指定该文件应由bash shell解释器执行。 2. 编写Shell命令,例如`echo "Hello world"`用于在终端打印...

    shell基础学习资料

    以上内容总结了Shell基础学习资料中的关键知识点,包括Shell脚本的基础结构、注释、变量管理、环境变量的概念以及一系列常用的Unix命令和相关概念。这对于初学者来说是非常宝贵的资源,有助于快速掌握Shell脚本的...

    shell脚本学习指南

    1. **什么是Shell**:Shell是操作系统提供的一种命令行界面,它允许用户通过输入指令来与操作系统交互。而在Linux系统中,常见的Shell有Bash(Bourne-Again SHell)、Sh、Csh和Zsh等。 2. **脚本结构**:一个基本的...

    shell学习经典资料

    以下是对标题“shell学习经典资料”及相关文件的详细解析: 首先,我们看到标题提及了“shell学习”,这指的是对shell编程的学习。Shell编程是一种使用命令行界面编写脚本的技能,它允许用户通过编写简单的或复杂的...

    shell脚本学习手册

    《Shell脚本学习手册》 Shell,是Linux系统中的一种命令语言和程序设计语言,它由C语言编写,作为用户与操作系统内核交互的桥梁。Shell不仅提供了命令行接口,还允许用户编写脚本程序,实现自动化任务处理。本文将...

    shell学习方法

    ### Shell学习方法详解 #### 一、Shell简介 在计算机科学领域中,Shell是一种非常重要的交互式编程环境,被广泛应用于各种操作系统中,包括Linux、Unix等。Shell通常被称为“壳”,用来区别于操作系统的核心部分...

    linux shell脚本学习文档

    这份"Linux Shell脚本学习文档"是针对初学者的一份详细教程,旨在帮助读者快速理解和掌握Bash Shell脚本的基本概念和用法。 首先,让我们从基础开始。在Shell脚本中,每一行都是一个命令或指令,可以执行诸如创建、...

    shell脚本学习指南,中文清晰带书签

    ### Shell脚本学习指南知识点详解 #### 一、Shell脚本概述 - **定义与作用**:Shell脚本是用于Unix/Linux系统中的自动化任务的一种编程语言。它通过一系列的命令来实现对系统的控制和管理,可以极大地提高工作效率...

    shell编程学习资料

    Shell编程是Linux/Unix系统中不可或缺的一部分,它是一种命令行解释器,允许用户与操作系统进行交互,执行系统命令,以及编写脚本自动化任务。在本文中,我们将深入探讨Shell编程的基础知识,包括基本命令、变量、...

    Linux教程+ shell学习笔记 + Shell脚本常用命令+shell脚本100例资源合集

    本文整理了一份Linux shell学习笔记及基本命令合集,包含了LINUX常用操作命令和命令行编辑快捷键、shell基本命令,Linux相关使用配置教程等,需要的朋友可下载试试! shell是一个用C语言编写的程序,它是用户使用...

    shell学习资料

    在学习Shell的过程中,理解这些基本概念和技巧对于有效利用命令行环境至关重要。熟悉这些操作不仅能够提高操作系统的使用效率,还能帮助用户在日常工作中快速地完成任务。尤其对于系统管理员和需要进行自动化脚本...

    Linux Shell学习笔记

    Linux shell是学习Linux必须掌握的脚本之一,该文档为本人学习Shell脚本时总结的一些基础知识,包括Shell的语法、简单示例和总结,欢迎下载学习。

    Shell脚本学习指https://pan.baidu.com/s/1sPfOlmfcq1PmzOkD0ZnsyA

    这个“Shell脚本学习指南”资源显然旨在帮助初学者和进阶者更好地理解和掌握这一核心技术。 首先,我们需要理解什么是Shell。Shell是操作系统提供的一种用户界面,它允许用户通过命令行与操作系统内核交互。在Linux...

    很不错的Linux Shell的详细学习文档

    本文旨在提供一个详尽的学习文档,帮助初学者了解Shell编程的基本概念和技术。 #### 二、为什么要学习Shell编程? 1. **灵活性与自动化**:Shell提供了丰富的命令集和控制结构,可以轻松编写脚本来完成自动化任务...

Global site tag (gtag.js) - Google Analytics