shell与变量的声明的操作

摘要:
该字符必须是shell脚本的前两个字符,以告诉系统其后面的参数用于执行文件程序。C、 使用点(.)在当前shell中执行脚本。5.创建变量和引用变量:$在Bash shell中,不需要显式声明变量。但是,在退出子shell并返回到父shell显示后,父shell的全局变量的值没有更改。也就是说,子壳修改在父壳中创建的变量值,并且修改仅在子壳中生效。

1、给命令起别名:alias

执行下面命令后,可以使用dir代替ls –l 命令,显示目录中的文件详细信息:

wps60F5.tmp

还可以用一个别名表示几个命令 的结合:

wps60F6.tmp

2、ps:显示当前登录会话的所有活动进程:

wps6107.tmp

3、更改默认shell:chsh

chsh命令没有预安装,执行时,需要先联网安装。

执行chsh命令,过一会儿就会提示该命令找不到,是否要进行安装,输入y,即可下载包进行安装:

wps6108.tmp

命令安装完了之后,再次执行chsh命令,即可为当前用户更改shell,输入新的shell即可实现更改。

查看环境变量SHELL或者查看/ect/passwd文件,即可发现当前用户使用的shell类型已更改:

wps6109.tmp

4echo命令

echo命令用于在屏幕上显示消息:

wps611A.tmp

Echo命令显示文本,会在文本末尾放置一个新行字符,新行字符会在显示文本后将光标移动到下一行。

使用选项-n可以将光标保持在同一行:

wps611B.tmp

5、创建shell脚本

Shell脚本文件是一个文件,所以可以使用文本编辑器进行操作。

下面我们创建一个shell脚本文件,文件名为hello.sh。在Linux中,文件类型不重要,或者可以说没有文件类型的概念。想要该文件是shell脚本文件,我们只要在文件里书写的是shell命令就可以了。

在命令提示符时候,执行vi hello.sh

wps611C.tmp

打开文件编辑后,编写shell命令:

wps612C.tmp

#! 字符必须是shell脚本的前两个字符,用来告诉系统它后面的参数是用来执行该文件程序。

在shell脚本里,#是注释符号。我们要养成良好的写注释的习惯。

Shell脚本执行有三种方式:

A、sh/bash  shell脚本文件名

将文件名作为shell命令sh/bash的参数执行。要执行任何shell脚本,必须对脚本有读的权限。

wps612D.tmp

B、提示符之后直接执行shell脚本,需要先对脚本文件拥有执行权限

默认,创建文件后,文件所有者对文件没有执行权限,所以想要在提示符之后,通过脚本文件的绝对路径名,需要先使用chmod命令先给文件添加执行权限:

wps612E.tmp

因为使用上述方式执行脚本文件时,会在当前shell创建一个新的子shell并在新创建的shell中执行脚本。

C、使用点(.)在当前shell中执行脚本

wps613F.tmp

5、创建变量,引用变量:$

在Bash Shell 中,不必显式声明变量。可以在任何时间通过简单赋值来创建它们。创建变量语法:

<variable_name>=<value>

可以通过赋值运算符右边留空来创建没有值的变量。

声明变量时,赋值运算符(=)的两边都不能有空格。

wps6140.tmp

$符号用来引用变量,$符号引用变量时,一般情况加变量名字可以不用加双引号:

wps6141.tmp

Shell创建的变量一般被视为字符串。

wps6151.tmp

注意上面变量var不是数字变量,而是字符串变量,var包含的是字符1和字符5组成的字符串,而不是数字15.

$变量名来引用变量的值,可以用大括号在界定变量名称,一般情况下{}可以省略。但是当涉及到连接操作时,{}不可以省略:

wps6152.tmp

上面命令中,day变量值为20,如果变量x想要包含day变量值,并在值之后连接字符串th,则day变量在引用时,必须加{},否则就会把day当做普通字符串处理,不会认为是变量名。

6、将值读取到变量:read

read命令允许用户在执行shell脚本期间从键盘将值输入到变量。read命令可以用在shell提示符之后,但通常用在shell脚本中。

需要注意的是,执行read命令后,不会提示用户输入数据,只是进行光标闪烁。

wps6153.tmp

如果要提示用户进行输入,我们必须自己使用echo命令。

wps6164.tmp

上面脚本文件执行后效果:

wps6165.tmp

7、本地和全局shell变量

在shell中创建的变量对于创建它的shell是本地变量,在shell中创建一个新shell。新shell不知道父shell的变量,新shell可以对父shell同名的变量赋新值,而父shell不会知道这一情况。bash命令可以创建新shell,从新shell退回,返回父shell使用exit命令。

wps6166.tmp

有时候可能需要所有的子Shell了解父Shell的变量,所以需要把本地变量导出为全局变量。实现这一操作,可以使用export命令:

wps6177.tmp

使用export命令导出变量后,子shell可以知晓父shell的变量,可以引用该变量,也可以给该变量赋新值。但是退出子shell,返回父shell显示后,父shell的该全局变量的值没有发生改变。也就是子shell修改父shell中创建的变量值,该修改只在子shell生效。

8、环境变量

导出的所有变量都是环境变量。

A、HOME变量

环境变量HOME用于存储用的主目录的位置:

wps6178.tmp

B、PATH变量

PATH变量包含以冒号分隔的目录列表,Shell会通过它定位用户调用的命令。

设置路径时,用户不必转到可执行程序文件所在的目录,不管当前目录是什么,用户都可以执行程序。

wps6188.tmp

不像MS-DOS,在Linux中不会自动搜索当前目录。只会搜索PATH中指定的目录。所以如果要搜索当前目录,必须在PATH中执行。可以通过在PATH中加入一点.(.表示当前目录)或提供一个空路径来指定当前目录:

a. PATH=/bin:/usr/bin: [以下列顺序搜索:/bin、/usr/bin、当前目录]

b. PATH=:/bin:/usr/bin [以下列顺序搜索:当前目录、/bin、/usr/bin]

c. PATH=/bin: :/usr/bin [以下列顺序搜索:/bin、当前目录、/usr/bin]

C、PS1变量

PS1(提示符变量)变量包含Shell提示符:默认为$符号。(Root用户的提示符为#,其他用户提示符为$)。我们可以通过该环境变量修改提示符:

wps6189.tmp

PS1变量中还可以包含特定的预定义提示符字符串。例如:w提示符字符串用于显示用户的当前工作目录;u表示当前用户;h表示主机名。

wps618A.tmp

如果想要重新设置成默认提示符,root用户可以使用:PS1="[u@h W]# ",非root用户可以使用:PS1="[u@h W]# "

wps619B.tmp

D、PS2变量

PS2变量用于设置次提示符的值的环境变量,默认情况为>。当在命令行提供了不完整的目命令时,会显示次提示符。

wps619C.tmp

退出次提示符可以使用ctrl+c或Ctrl+d:

wps619D.tmp

ctrl+c,会显示^C,然后退出;Ctrl+d会显示原因,然后退出

E、LOGNAME变量

LOGNAME变量包含用户的登录名:

wps61AD.tmp

F、SHLVL变量

SHLVL变量包含当前工作的Shell层

wps61AE.tmp

登录Shell,该变量值被赋为1.无论何时创建一个新的Shell,该变量的值都会加1.

G、SHELL变量

SHELL变量存储用户的默认Shell

wps61AF.tmp

9、env命令

env命令可以查看所有导出的环境变量及其各自值的列表:

wps61B0.tmp

10、补充:创建空文件,且不进入编辑状态:touch

使用touch命令可以创建空文件,并且不进入文件的编辑状态。也可以根据命令后给出的文件名列表同时创建多个空文件

wps61C1.tmp

免责声明:文章转载自《shell与变量的声明的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NTFS多流文件、结构化存储和摘要属性集合同一微信开放平台下 unionid 作用。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shell-基础2-字符串文本处理${}

一、为什么使用${}引用变量   1、$a和${a}的效果与区别     因为个别特殊字符会影响正常引用,所以需要使用${}引用变量,加花括号是为了帮助解释器识别变量的边界     $a和${a}效果一样,当变量后面连接其他字符的时候必须给变量加上大括号${a}_bc [root@master ~]# VAR=111 [root@master ~]# ec...

HDFS+MapReduce+Hive+HBase十分钟快速入门

  1.     前言 本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。 2.     Hadoop家族 截止2009-8-19日,整个Hadoop家族由以下几个子项目组成: 成员名 用途 Hadoop Common Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和...

c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)

最近项目上因为遇到数据量过大导致查询统计性能问题(oracle数据库、单表每月1亿多条车辆定位记录,由一个windows环境下的链路服务程序来接收车辆上传的定位数据写入oracle),急需使用大数据架构来解决。前期同事已经提出整体解决思路(修改链路服务程序,在写oracle的基础上同时写入kafka,之后再用etl工具从kafka保存到hive下)并从技术...

xcode 修改类名 变量名

修改类名 1.将鼠标点击放在类的名称上,右击选择refactor->rename,或选择Xcode工具栏中的edit->refactor->rename: 2.之后,将类名更改为我们需要的模式点击preview,记得将下面的关联文件勾选: 3.Xcode会为我们检测出需要更改的地方,浏览无误后点击save。 4.我们的类的文件名,类名...

十五.ProtoBuf3的基础总结

转自:https://blog.csdn.net/u011518120/article/details/54604615 定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 添加注释 保留标识符(Reserved) 从.proto文件生成了什么? 标量数值类型 默认值 枚举 使用其他消息类型 导入定义 使用proto2消息...

Windows消息大全收藏

Windows消息目录 1. WM_NULL=$0000: 2. WM_CREATE=$0001:     应用程序创建一个窗口 3. WM_DESTROY=$0002:     一个窗口被销毁 4. WM_MOVE=$0003: 移动一个窗口 5. WM_SIZE=$0005:改变一个窗口的大小 6. WM_ACTIVATE=$0006: 一个窗口被激活...