linux编程--shell编程01

Advertisement

1.Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。

2.Unix是一个多用户多任务操作系统。

3.登录系统后,Shell会有一个初始化的过程,用来设置环境变量。这个阶段,Shell会读取 /etc/profile 和 .profile 两个文件,过程如下:

  • Shell首先检查 /etc/profile 文件是否存在,如果存在,就读取内容,否则就跳过,但是不会报错。
  • 然后检查你的主目录(登录目录)中是否存在 .profile 文件,如果存在,就读取内容,否则就跳过,也不会报错。

读取完上面两个文件,Shell就会出现 $ 命令提示符:

  1. $

出现这个提示符,就可以输入命令并调用相应的程序了。

注意:上面是Bourne Shell的初始化过程,bash 和 ksh 在初始化过程中还会检查其他文件。

4./etc/profile文件包含了通用的Shell初始化信息,由Unix管理员维护,一般用户无权修改。

但是你可以修改主目录下的 .profile 文件,增加一些“私人定制”初始化信息,包括:

  • 设置默认终端类型和外观样式;
  • 设置 Shell 命令查找路径,即PATH变量;
  • 设置命令提示符。

5.

设置终端类型

一般情况下,我们使用的终端是由 login 或 getty 程序设置的,可能会不符合我们的习惯。

对于没有使用过的终端,可能会比较生疏,不习惯命令的输出样式,交互起来略显吃力。所以,一般用户会将终端设置成下面的类型:

  1. $TERM=vt100
  2. $

vt100 是 virtual terminate 100 的缩写。虚拟终端是一种假的终端,真正有自己的显示器和键盘的终端,会通过特殊电缆(如串口)连到计算机主机。vt100 是被绝大多数Unix系统所支持的一种虚拟终端规范,常用的还有ansi、xterm等。

6.

设置PATH变量

在命令提示符下输入一个命令时,Shell 会根据 PATH 变量来查找该命令对应的程序,PATH变量指明了这些程序所在的路径。

一般情况下PATH变量的设置如下:

  1. $PATH=/bin:/usr/bin
  2. $

多个路径使用冒号(:)分隔。如果用户输入的命令在PATH设置的路径下没有找到,就会报错,例如:

  1. $hello
  2. hello: not found
  3. $

PS1和PS2变量

PS1变量用来保存命令提示符,可以随意修改,如果你不习惯使用 $ 作为提示符,也可以改成其他字符。PS1变量被修改后,提示符会立即改变。

例如,把命令提示符设置成'=>':

  1. $PS1='=>'
  2. =>
  3. =>
  4. =>

也可以将提示信息设置成当前目录,例如:

  1. =>PS1="[[email protected] w]$"
  2. [[email protected] /var/www/tutorialspoint/unix]$
  3. [[email protected] /var/www/tutorialspoint/unix]$

命令提示信息包含了用户名、主机名和当前目录。

下表中的转义字符可以被用作PS1的参数,丰富命令提示符信息。

转义字符 描述
t 当前时间,格式为 HH:MM:SS
d 当前日期,格式为Weekday Month Date
n 换行
W 当前所在目录
w 当前所在目录的完整路径
u 用户名
h 主机名(IP地址)
# 输入的命令的个数,每输入一个新的命令就会加1
$ 如果是超级用户 root,提示符为#,否则为$。

你可以在每次登录的时候修改提示符,也可以在 .profile 文件中增加 PS1 变量,这样每次登录时会自动修改提示符。

如果用户输入的命令不完整,Shell还会使用第二提示符来等待用户完成命令的输入。默认的第二命令提示符是 >,保存在 PS2 变量,可以随意修改。

下面的例子使用默认的第二命令提示符:

  1. $ echo "this is a
  2. > test"
  3. this is a
  4. test
  5. $

下面的例子通过PS2变量改变提示符:

  1. $ PS2="secondary prompt->"
  2. $ echo "this is a
  3. secondary prompt->test"
  4. this is a
  5. test
  6. $

常用环境变量

下表列出了部分重要的环境变量,这些变量可以通过上面提到的方式修改。

变量 描述
DISPLAY 用来设置将图形显示到何处。
HOME 当前用户的主目录。
IFS 内部域分隔符。
LANG LANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。
PATH 指定Shell命令的路径。
PWD 当前所在目录,即 cd 到的目录。
RANDOM 生成一个介于 0 和 32767 之间的随机数。
TERM 设置终端类型。
TZ 时区。可以是AST(大西洋标准时间)或GMT(格林尼治标准时间)等。
UID 以数字形式表示的当前用户ID,shell启动时会被初始化。

下面的例子中使用了部分环境变量:

  1. $ echo $HOME
  2. /root
  3. ]$ echo $DISPLAY
  4. $ echo $TERM
  5. xterm
  6. $ echo $PATH
  7. /usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
  8. $

Similar Posts:

  • Linux的shell编程——语法

    Linux的shell编程 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支.它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的

  • Linux下Shell编程快捷键大全(日常整理)

    有时候,我们需要在 Bash 中重复执行先前的命令.你当然可以使用上方向键来查看之前曾经运行过的命令.但这里有一些更好的方式,例如,数量掌握以下的快捷键. 1) !!:重复执行上一条指令 2) !a:重复执行上一条以a为首的指令 3) !number:重复执行上一条在history表中记录号码为number的指令 4) !-number:重复执行前第number条指令 5) !$:表示获得上一条命令中的最后一项内容 6) 用Ctrl + r 组合键来进入历史搜索模式在history表中查询某条过

  • Linux Unix shell 编程指南学习笔记(第一部分)

    第一章:文件安全与权限: 1.文件和目录的权限 创建文件时系统保存了文件所有相关的信息,包括 文件的位置 . 文件类型 . 文件长度 . 哪位用户拥有该文件,哪些用户可以访问该文件 . i 节点 . 文件的修改时间 . 文件的权限位 . 文件类型: d: 目录 l : 符号链接(指向另一个文件) s: 套接字文件 b: 块设备文件 c: 字符设备文件 p: 命名管道文件 -: 不属于上述类型的文件 文件权限 XXX       XXX        XXX 最左边 XXX : 文件属主 权限位

  • Linux的shell编程 (bash)

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支.它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Li

  • 转载 Linux的Shell编程

    作为命令语言互动式地解释和执行用户输入的命令只是Shell功能的一个方面,Shell还可以用来进行程序设计,它提供了定义变量和参数的手段以及丰富的程序控制结构.使用Shell编程类似于DOS中的批处理文件,称为Shell script,又叫Shell程序或Shell命令文件. Shell基本语法 像高级程序设计语言一样,Shell也提供说明和使用变量的功能.对Shell来讲,所有变量的取值都是一个字串,Shell程序采用$var的形式来引用名为var的变量的值. Shell有以下几种基本类型的变

  • linux shell编程 bash中对变量的操作方法

    shell编程Bash中对变量的操作方法谈 1.条件变量替换: Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换 条件放在{}中. (1) ${value:-word} 当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值. (2) ${value:=word} 与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将 word赋值给value (3) ${value:?message} 若变量以赋值的话,正常替换.否则将消息messag

  • linux for shell编程

    Shell俗称壳(用来区别于核),是指"提供使用者使用界面"的软件(命令解析器). 它类似于DOS下的command和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序. Shell Script,Shell脚本与Windows/Dos下的批处理相似, 也就是用各类命令预先放入到一个文件中, 方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的. crontab crontab命令常见于Unix和类Unix的操作系统之中, 用于设置周期性被执行的指令.该命令从标

  • Linux学习——shell编程

    小结(一):Linux编程 -字符测试与数据转换函数 先看一道比较经典的题目: 题目1. 现有文件名为tmp的文件,内容为:Linux Programmer 请编写一段shell程序顺序完成以下操作: 1.建立temp.c源文件: 2.从键盘输入程序代码,并写入temp.c文件,用C程序实现对tmp文件的读取显示其内容: 3.统计tmp中的字节数,并显示tmp的属性: 4.对temp.c文件进行编译,并执行. 解法如下:1.新建一个csdn.sh文件命名 2.按题中要求在csdn.sh文件中写如

  • Linux的Shell编程(一)基本语法【转】

    像高级程序设计语言一样,Shell也提供说明和使用变量的功能.对Shell来讲,所有变量的取值都是一个字串,Shell程序采用$var的形式来引用名为var的变量的值. Shell有以下几种基本类型的变量. (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录

  • Linux 与 Shell编程(2)-条件测试

    转自: ttp://linux.chinaitlab.com/SHELL/752101.html   条件测试是程序设计中不可缺少的一部分.以下就是shell程序设计中常见的条件测试方法.    "test"或"[ ]"命令:使用这二个命令用来测试条件是真还是假.使用方法:     if test –f file.c 或 if [ -f file.c ]     then - then -     fi fi     当条件满足(即为真)时,则执行then后面的语句

Tags: