(1)第一章:shell基本特性

1.1、打开终端后,就会出现一个提示符,其形式通常如下:

[email protected]$

或者是:

[email protected]#

要么就简单地以$或#表示。

($表示普通用户,#表示超级用户(root user))。

1.2、linux下的所有脚本语言,都以#!后跟解释权路径这样一个被称为shebang的特殊行作为起始的。shell脚本常以#!/bin/bash起始。

有两种运行脚本的方式:一种是将脚本作为sh命令的参数,另一种是将脚本作为具有执行权限的可执行文件。

将脚本作为参数时运行方式如下:

$sh a.sh#假设脚本在当前目录下,此时第一行就没用了

或者

$sh /home/a.sh #使用完整路径

赋予脚本权限:

$chod a+x acript.ah

执行:

$ ./a.sh # ./ 表示当前目录,也可以使用绝对路径

执行过程:shell程序读取首行,查看shebang行是否为#!/bin/bash。它会识别/bin/bash,并在内部以$  /bin/bash  a.sh这样的形式执行脚本。

1.3、当一个终端被打开时会执行一组初始化指令,这组指令位于home目录下的.bashrc文件(~/.bashrc)。

~./bash_history脚本用于保存用户运行过 的命令。~是一种简写,代表用户的home目录 的路径。

命令是通过换行符来分隔的:$  cmd1;cmd2

等同于 $cmd1

cmd2

注释以#起始,一直延续到行尾

2、终端打印

2.1、echo

单引号、双引号、不带引号都可以完成同样的任务:

$ echo  “welcome to bash”

$ echo  ‘welcome to bash’

$  echo   welcome to bash

这三种方法看起来相似,但各有一些特殊用途和副作用。

三种方法的副作用如下:

  • 不带引号时,没法在文本中使用分号(;)
  • 使用双引号时,双引号中的一切文本都将被原样打印出来
  • 使用单引号时,Bash不会对单引号中的变量求值,而只是照原样显示。如 $  echo  ‘$var’将会返回$var,而 $ echo  $var 或使用双引号将会根据变量$var定义与否,返回其值。

该命令参数很多,必须用一篇文章 才能叙述的完。

2.2、printf

和c语言的printf完全一样。

补充:

echo和printf中的标志(如-e、-n等)应该出现在命令行内任何字符串之前,否则bash会将其视为另一个字符串。

在echo中转义换行符

默认情况下,echo会将一个换行符追加到文本尾部,使用-n标志可以可以忽略结尾换行符。

彩色打印

彩色文本:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,杨红=35,青色=36,白色=37

如:echo  -e  “\e[1;31m  This  is  red  text  \e[0m”

\e[a;31m 将颜色设为红色,\e[0m将颜色置回

彩色背景:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,杨红=45,青色=46,白色=47

如:echo  -e  “\e[1;42m  green background  \e [0m”

3、变量与环境变量

脚本语言中的变量通常是动态类型的,不需预先声明类型,直接赋值即可。bash中的变量皆为字符串。一些特殊变量会被shell和操作系统用来存储一些特别的值,即环境变量。

env命令:查看与每个进程运行时 的环境变量:

cat /proc/#PID/environ #其中,将PID设成相关进程的ID (PID总是一个整数)。

ID获取:假设一个叫做gedit的程序正在运行。可以使用pgrep命令来获取gedit的进程ID:

$ pgrep gedit
12501

此时使用

$ cat /proc/12501/environ

命令将会返回一个包含环境变量名及其对应变量值的列表。每一个变量以name=value的形式表述,由null字符(\0)分隔,将\0用\n替换,既可以在每一行显示一对name=value。替换用tr命令实现:

$ cat /proc/12501/environ | tr ‘\0‘ ‘\n‘

4、变量操作

赋值:var=value

如果值中包含任何空白字符(如空格),即必须使用单引号或双引号。

注意:var0=value不等于var = value,前者是赋值操作,后者是相等操作。

在变量名之前加上 $ 前缀就可以打印出变量 的内容:

var="jiang"
echo $var
echo ${var}

5、环境变量

export命令用来设置环境变量:

$ export PATH="$PATH:/home/user/bin"

#也可以使用
$  PATH

="$PATH:/home/user/bin"

$  export  PATH

从当前shell脚本执行的任何程序都会继承这个变量。我们还可以按照自己的需要,在执行的应用程序或shell脚本中到处特定的变量。默认情况下有很多变量可供使用。

PATH就是其中之一:

$ echo $PATH

在给出所要执行的命令后,shell自动在PATH环境变量所包含的目录列表中(各目录路径之间以冒号分隔)查找对应的可执行文件。$PATH通常定义在/etc/environment或/etc/profile或~/.bashrc

还有一些众所周知的环境变量:HOME、PWD、USER、UID、SHELL

6、一些技巧

6.1获取字符串长度 : length=${#var}

$ var=12345678901234567890

$  echo

${#var} 20

6.2、识别当前shell版本

$ echo $SHELL /bin/bash $ echo $0

bash

6.3、检查是否为超级用户

UID是一个重要的环境变量,可以用于检查当前脚本是以超级用户还是以普通用户身份运行的:

if [ $UID -ne 0 ] ; then echo Non root user . Please run as root. else echo "Root user" fi#root用户的UID是0

6.4、修改Bash提示字符串

可以利用 PS1 环境变量来定制提示文本。默认shell提示文本是在文件 ~/.bashrc 的某一行设置的。

# 找出设置PS1的哪一行 $ cat ~/.bashrc | grep PS1 PS1=‘${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ ‘

#设置字符串,可以输入:
$  PS1

="PROMPT>"

时间: 2024-08-09 19:15:22

(1)第一章:shell基本特性的相关文章

第一章 Shell基础知识

1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处理流程示意图: Shell既然是工作在Linux内核之上,那我们也有必要知道下Linux相关知识. Linux是一套免费试用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. 1983年9月27日,Richard Stallman(理查德

《跟老男孩学Linux运维之shell编程实战》-第一章 shell脚本初步入门

本文是在学习<跟老男孩学Linux运维之shell编程实战>这本书时记录的知识点.看了这本书,我受益匪浅,当然这仅是我个人观点.下面我们言归正传,开始了解一下shell脚本吧! shell本身是一个命令解释器,它的作用是解释执行用户输入的命令及程序等. shell脚本语言的种类:sh.ksh.bash.csh.tcsh,Linux中主流的shell是bash,所以本文及后续shell脚本以bash为主. 那我们如何查看Linux系统中默认的shell? [[email protected] ~

[第一章]Shell 基础

什么是 Shell 大纲             [前言]         1.Shell简介         2.Bash功能介绍              2.1.记录命令历史              2.2.命令和文件名补全              2.3.别名              2.4.管道符/重定向              2.5.快捷键          3.Bash使用技巧              3.1.重定向技巧              3.2.命令序列号使用

第一章 Shell基本概述

1. Shell课程大纲介绍 01)Shell基本概述 02)Shell变量定义 03)Shell数值运算 04)Shell流程控制 05)Shell循环语句 06)Shell数组函数 07)Shell内置命令 08)Shell正则表达式 2. 什么是Shell ? Shell是一个命令解释器,它的作用是解释和执行用户输入的命令及程序等,用户输入一条命令,Shell就解释执行一条. Shell存在于操作系统的最外层,负责直接与用户对话,把用户输入的命令解释给操作系统,并处理各种各样的操作系统的输

(linux shell)第一章--小试牛刀(下)

文章来源: (linux shell)第一章--小试牛刀(下) 1.6 数组和关联数组 1.6.1 预备知识 Bash同一时候支持普通数组和关联数组.普通数组仅仅能使用整数作为数组索引,而关联数组能够使用字符串作为数组索引.关联数组在非常多操作中相当实用. 1.6.2 实战演练 定义数组的方法有非常多,能够在单行中使用一列值来定义一个数组: array_var=(1,2,3,4,5,6)   #这些值将会存储在以0为起始索引的连续位置上 另外.还能够将数组定义成一组索引-值: array_var

《Linux Shell脚本攻略》 笔记 第一章:Shell起步基础

<Linux Shell脚本攻略> 笔记 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo $length

(linux shell)第一章--小试牛刀(上)

来源:(linux shell)第一章--小试牛刀(上) 从今天开始,我们一起来学习<linux shell脚本攻略>这本书. 1.1简介 shell脚本通常是一个以#!起始的文本文件,如下所示: #!/bin/bash 有两种执行shell脚本的方式,分别如下: sh script.sh 或者./script.sh 但是在执行脚本以前,我们需要给脚本执行权限才行,不然脚本无法执行 chmod a+x script.sh 在命令中行中,如果需要同时执行多个命令,可以使用 cmd1;cmd2 1

linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

<linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功能和系统管理的那些部分.这些部分包括内核.设备驱动程序.启动应到程序.命令行shell或者其他种类的用户界面.基本的文件管理系统工具. 内核:如果说用户界面是操作系统的外在表像,那么内核就是操作系统的内在核心. 内核空间:系统态和保护起来的内存空间. 内核的组成: 1.中断服务程序(响应中断) 2.调度程序(

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效