Shell简单了解

本文介绍了Shell,它是Unix操作系统的命令解释器和编程语言。阐述了常见的Shell种类,如sh和csh系列。说明了Shell环境变量的定义,包括临时和永久生效的方式。还讲解了shell脚本编程,涵盖创建、权限赋予、执行方式等,最后介绍了sed文本编辑器和echo命令的用法。

什么是Shell?

Shell是命令解释器(Command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel),能够识别的指令,并且操作系统内核执行完将返回的输出通道通过Shell再呈现给用户。

Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可以直接调用linux命令。
一个系统可以存在多个shell,可以通过 cat/etc/shells 命令查看系统中安装的shell,不同的shell可能支持的命令语法是不同的。

Shell种类

操作系统内核(kernel)与shell是独立的套件,而且都可以被替换;不同的操作系统使用不同的shell。
同一个kernel之上可以使用不同的shell。
常见的shell分为两大主流:
sh:Linux常用的
Bourne shell(sh),Solaris,hpux默认shell
Bourne again shell(bash),Linux系统默认shell
csh:Unix常用的
C shell (csh)
tc shell(tcsh)

Shell环境定义

临时环境变量
所谓临时环境变量是指用户在当前登录环境生效的变量,用户登录系统后,直接在命令行上定义的环境变量只能在当前的登录环境中使用。当退出系统后,环境变量将不能下次登录时继续使用。

将环境变量永久生效
通过将环境变量定义写入到配置文件中,用户每次登录系统时系统自动定义,则无需再到命令行重新定义。

定义环境变量的常见配置文件如下:

/etc/profile	针对系统所有用户生效,此文件应用于所有用户每次登录系统时的环境变量定义(系统环境变量)
$HOME_name/.bash_profile	针对特定用户生效,$HOME为用户的宿主目录,当用户登录系统后,首先继承/etc/profile文件中的定义,再应用$HOME/.bash_profile文件中的定义(用户环境变量)

shell脚本编程

一个shell脚本通常包含如下部分
首行:#!/bin/bash
#!符号能够被内核识别成是一个脚本的开始,这一行必须位于脚本的首行,/bin/bash 是bash程序的绝对路径,在这里表示后续的内容将通过bash程序解释执行。

创建脚本的三种方式
echo “”> firsth.sh
touch firsth.sh
vim firsth.sh

shell脚本的权限
一般情况下,默认创建的脚本是没有执行权限的,需要赋予可执行权限
chood +x firsth.sh

shell脚本的执行
1.输入脚本的绝对路径或相对路径
/root/firsth.sh
./firsth.sh

2.bash或sh+脚本
bash /root/firsth.sh
sh firsth.sh

3.在脚本的路径前再加 "."或source
source /root/firsth.sh
. ./firsth.sh

区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享另一个shell;第三种方式脚本.sh这种方式是在同一个shell里面执行的

最简单的脚本示例,打印内容"hello world

#!/bin/sh
echo "hello world"

sed

sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。

sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。

  • sed的使用方法,调用sed 命令的语法有两种:

一、在命令行指定sed指令对文本进行处理:sed +选项 ‘指令’ 文件

二、先将sed指令保存到文件中,将该文件作为参数进行调用:sed +选项 -f 包含sed指令的文件 文件

sed的常用选项:

-r:使用扩展正则表达式

-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项

-f:后跟保存了sed指令的文件

-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改

-n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行

sed中的编辑命令:

a:追加  向匹配行后面插入内容

c:更改  更改匹配行的内容

i:插入  向匹配行前插入内容

d:删除  删除匹配的内容

s:替换  替换掉匹配的内容

p:打印  打印出匹配的内容,通常与-n选项和用

=:用来打印被匹配的行的行号

n:读取下一行,遇到n时会自动跳入下一行

r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件
  • 例子:
sky@ubuntu:~$ echo "hello world"|sed 's/world/qin/'
hello qin

echo

echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

功能说明:显示文字。
语   法:echo [-ne][字符串]或 echo [--help][--version]

补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参   数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 与\f相同;
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息

例子:倒计时

#!/bin/bash
for time in `seq 9 -1 0`;do
        echo -n -e "\b$time"
        sleep 1
done

echo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值