linux学习之十、变量的取用与配置:echo, 变量配置守则, unset

时间:2021-07-25 00:39:42

vim





vim 的环境设定参数

:set nu

:set nonu 就是设定与取消行号啊!





:set hlsearch

:set nohlsearch hlsearch 就是 high light search(高亮度搜寻)。 这个就是设定是否将搜寻的字符串反白的设定值。默认值是 hlsearch





:set autoindent

:set noautoindent 是否自动缩排?autoindent 就是自动缩排。





:set backup 是否自动储存备份档?一般是 nobackup 的, 如果设定 backup 的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为 filename~ 的档案。

 举例来说,我们编辑 hosts ,设定 :set backup ,那么当更动 hosts 时,在同目录下,就会产生 hosts~ 文件名的档案,记录原始的 hosts 档案内容





:set ruler 还记得我们提到的右下角的一些状态栏说明吗? 这个 ruler 就是在显示或不显示该设定值的啦!





:set showmode 这个则是,是否要显示 --INSERT-- 之类的字眼在左下角的状态栏。





:set backspace=(012) 一般来说, 如果我们按下 i 进入编辑模式后,可以利用退格键 (backspace) 来删除任意字符的。 但是,某些 distribution 则不许如此。

此时,我们就可以透过 backspace 来设定啰~ 当 backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字了!





:set all 显示目前所有的环境参数设定值。





:set 显示与系统默认值不同的设定参数, 一般来说就是你有自行变动过的设定参数啦!





:syntax on





:syntax off 是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文本档时,如果开头是以 # 开始,那么该行就会变成蓝色。 如果你懂得写程序,那么这个 

:syntax on 还会主动的帮你除错呢!但是, 如果你仅是编写纯文本档案,要避免颜色对你的屏幕产生的干扰,则可以取消这个设定 。





:set bg=dark





:set bg=light 可用以显示不同的颜色色调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看,会有不同的样式呢!









[root@www ~]# type [-tpa] name

选项与参数:

    :不加任何选项与参数时,type 会显示出 name 是外部命令还是 bash 内建命令

-t  :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:

      file    :表示为外部命令;

      alias   :表示该命令为命令别名所配置的名称;

      builtin :表示该命令为 bash 内建的命令功能;

-p  :如果后面接的 name 为外部命令时,才会显示完整文件名;

-a  :会由 PATH 变量定义的路径中,将所有含 name 的命令都列出来,包含 alias





范例一:查询一下 ls 这个命令是否为 bash 内建?

[root@www ~]# type ls













范例:如果命令串太长的话,如何使用两行来输出?

[vbird@www ~]# cp /var/spool/mail/root /etc/crontab \

> /etc/fstab /root





------------------------------------------

变量的取用与配置:echo, 变量配置守则, unset









变量的取用: echo

echo $HOME 或者是 echo ${HOME}









配置变量





[root@www ~]# echo $myname

       <==这里并没有任何数据~因为这个变量尚未被配置!是空的!

[root@www ~]# myname=VBird

[root@www ~]# echo $myname

VBird  <==出现了!因为这个变量已经被配置了!









变量的配置守则





变量与变量内容以一个等号『=』来连结,如下所示: 

『myname=VBird』





等号两边不能直接接空格符,如下所示为错误: 

『myname = VBird』或『myname=VBird Tsai』





变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误: 

『2myname=VBird』





变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来,但

双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:

『var="lang is $LANG"』则『echo $var』可得『lang is en_US』

单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:

『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』





可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符;





在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号『`命令`』或 『$(命令)』。特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号! 

例如想要取得核心版本的配置:

『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』





若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示:

『PATH="$PATH":/home/bin』





若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量:

『export PATH』





通常大写字符为系统默认变量,自行配置变量可以使用小写字符,方便判断 (纯粹依照使用者兴趣与嗜好) ;





取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的配置:

『unset myname』





例子:

范例一:配置一变量 name ,且内容为 VBird

[root@www ~]# 12name=VBird

-bash: 12name=VBird: command not found  <==屏幕会显示错误!因为不能以数字开头!

[root@www ~]# name = VBird            <==还是错误!因为有空白!

[root@www ~]# name=VBird              <==OK 的啦!





范例二:承上题,若变量内容为 VBird's name 呢,就是变量内容含有特殊符号时:

[root@www ~]# name=VBird's name  

# 单引号与双引号必须要成对,在上面的配置中仅有一个单引号,因此当你按下 enter 后,

# 你还可以继续输入变量内容。这与我们所需要的功能不同,失败啦!

# 记得,失败后要复原请按下 [ctrl]-c 结束!

[root@www ~]# name="VBird's name"    <==OK 的啦!

# 命令是由左边向右找→,先遇到的引号先有用,因此如上所示,单引号会失效!

[root@www ~]# name='VBird's name'    <==失败的啦!

# 因为前两个单引号已成对,后面就多了一个不成对的单引号了!因此也就失败了!

[root@www ~]# name=VBird\'s\ name     <==OK 的啦!

# 利用反斜杠 (\) 跳脱特殊字符,例如单引号与空格键,这也是 OK 的啦!





范例三:我要在 PATH 这个变量当中『累加』:/home/dmtsai/bin 这个目录

[root@www ~]# PATH=$PATH:/home/dmtsai/bin

[root@www ~]# PATH="$PATH":/home/dmtsai/bin

[root@www ~]# PATH=${PATH}:/home/dmtsai/bin

# 上面这三种格式在 PATH 里头的配置都是 OK 的!但是底下的例子就不见得啰!





范例四:承范例三,我要将 name 的内容多出 "yes" 呢?

[root@www ~]# name=$nameyes  

# 知道了吧?如果没有双引号,那么变量成了啥?name 的内容是 $nameyes 这个变量!

# 呵呵!我们可没有配置过 nameyes 这个变量吶!所以,应该是底下这样才对!

[root@www ~]# name="$name"yes

[root@www ~]# name=${name}yes  <==以此例较佳!





范例五:如何让我刚刚配置的 name=VBird 可以用在下个 shell 的程序?

[root@www ~]# name=VBird

[root@www ~]# bash        <==进入到所谓的子程序

[root@www ~]# echo $name  <==子程序:再次的 echo 一下;

       <==嘿嘿!并没有刚刚配置的内容喔!

[root@www ~]# exit        <==子程序:离开这个子程序

[root@www ~]# export name

[root@www ~]# bash        <==进入到所谓的子程序

[root@www ~]# echo $name  <==子程序:在此运行!

VBird  <==看吧!出现配置值了!

[root@www ~]# exit        <==子程序:离开这个子程序

什么是『子程序』呢?就是说,在我目前这个 shell 的情况下,去激活另一个新的 shell ,新的那个 shell 就是子程序啦!在一般的状态下,父程序的自定义变量是无法在子程序内使用的。

但是透过 export 将变量变成环境变量后,就能够在子程序底下应用了









范例六:如何进入到您目前核心的模块目录?

[root@www ~]# cd /lib/modules/`uname -r`/kernel

[root@www ~]# cd /lib/modules/$(uname -r)/kernel





uname -r:获取系统版本号









范例七:取消刚刚配置的 name 这个变量内容

[root@www ~]# unset name









例题:

在变量的配置当中,单引号与双引号的用途有何不同?

答:

单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号。

我们以底下的例子做说明:假设您定义了一个变量, name=VBird ,现在想以 name 这个变量的内容定义出 myname 显示 VBird its me 这个内容,要如何订定呢?

[root@www ~]# name=VBird

[root@www ~]# echo $name

VBird

[root@www ~]# myname="$name its me"

[root@www ~]# echo $myname

VBird its me

[root@www ~]# myname='$name its me'

[root@www ~]# echo $myname

$name its me













例题:

在命令下达的过程中,反单引号( ` )这个符号代表的意义为何?

答:

在一串命令中,在 ` 之内的命令将会被先运行,而其运行出来的结果将做为外部的输入信息!例如 uname -r 会显示出目前的核心版本,而我们的核心版本在 /lib/modules 里面,

因此,你可以先运行 uname -r 找出核心版本,然后再以『 cd 目录』到该目录下,当然也可以运行如同上面范例六的运行内容啰。 





另外再举个例子,我们也知道, locate 命令可以列出所有的相关文件档名,但是,如果我想要知道各个文件的权限呢?举例来说,我想要知道每个 crontab 相关档名的权限:

[root@www ~]# ls -l `locate crontab`









例题:

若你有一个常去的工作目录名称为:『/cluster/server/work/*_2005/003/』,如何进行该目录的简化?

答:

在一般的情况下,如果你想要进入上述的目录得要『cd /cluster/server/work/*_2005/003/』, 以鸟哥自己的案例来说,

鸟哥跑数值模式常常会配置很长的目录名称(避免忘记),但如此一来变换目录就很麻烦。 此时,鸟哥习惯利用底下的方式来降低命令下达错误的问题:

[root@www ~]# work="/cluster/server/work/*_2005/003/"

[root@www ~]# cd $work

linux学习之十、变量的取用与配置:echo, 变量配置守则, unset的更多相关文章

  1. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

  2. Linux学习笔记(16)shell基础之Bash变量

    1. 用户自定义变量 (1)变量设置规则 ① 变量名称可由字母.数字和下划线组成,但不能以数字开头: ② 变量的默认类型为字符串类型,如果要对数值运算,则必须指定变量类型为数值型: ③ 变量用等号连接 ...

  3. Linux学习之十八-sudo分权管理

    sudo分权管理 1.为什么需要sudo? 当我的主机是多人共管的环境时,如果大家都使用 su 来切换成为 root 的身份,那么就得每个人知道 root 的密码,这样密码太多人知道可能会流出去,很不 ...

  4. python学习第二十九天函数局部变量如何改变外部变量

    python函数局部变量如何改变外部变量,之前我说过,局部变量是没办法改变外部变量的,除非局部变量找不到,去外部找,输出变量,使用关键词global 使变量改变外部变量. 1,使用关键词global ...

  5. Linux学习之CentOS--CentOS6&period;4下Mysql数据库的安装与配置【转】

      如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--C ...

  6. Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1

    shell简介 分为两种c shell 和b shell b shell:sh.ksh.Bash.psh.zsh: (Bash和sh兼容,linux基本shell是Bash) c shell:csh. ...

  7. Linux学习之十五、基础正规表示法&bsol;延伸正规表示法

    原文地址: http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php 基础正规表示法 既然正规表示法是处理字串的一种表示方式,那么对字节排 ...

  8. linux学习(十&rpar;Shell中的控制语句

    目录 1. 条件测试语句 1.1 test语句 1.2[]语句 1.3文件测试 1.4字符串测试 1.5数值测试 1.5逻辑操作符 @(Shell中的控制语句) 1. 条件测试语句 测试语句十Shel ...

  9. Linux学习Day4:管道符、重定向与环境变量

    仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...

随机推荐

  1. SharePoint 2013 搜索爬网功能

    最近在*部门介绍SharePoint 2013 新功能,我也准备了很多,比如SharePoint 2013的Search.以后有机会谈谈Office Web App,Workflow等. Share ...

  2. js 判断某个对象是不是dom对象

    <script type="text/javascript">//首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement的浏览器中,类型却是有 ...

  3. Oracle 查看相关优化器参数

    select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf, 7), 1, 'MOD ...

  4. zipline

    history 多只股票时会返回某几只股票停牌没数据 if not symbol(stock) in data: 聚宽 多只股票如果某几只没有发行 600485: nan 多只股票如果某几只停牌 60 ...

  5. noip第4课作业

    1.    计算邮资 [问题描述] 根据邮件的重量和用户是否选择加急计算邮费.计算规则:重量在1000克以内 (包含1000克),基本费8元.超过1000克的部分,每500克加收超重费4元,不足500 ...

  6. 计划任务crond服务

    什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiWiFi-R3-srv ~]# rpm ...

  7. http协议之 COOKIE

    cookie我们都很了解,这里描述下cookie的几个参数意义 key = "qq", value = "Bobser" .. os.time(), path ...

  8. &lbrack;SSH&rsqb;struts2-spring-plugin&period;jar了解

    在struts2-spring-plugin.jar中有一个struts-plugin.xml,里面声明了action类由spring工厂创建.在struts2插件文档里,这样写着“The Sprin ...

  9. CSS选择器:&num;id和&period;class中间有空格和无空格的区别

    相信大家都知道 .class1 .class2 和 .class1.class2 是两种不同的选择规则,但具体怎样不同呢? 首先中间有空格的情况:是选择到.class1类下的.class2类子节点,即 ...

  10. jenkins邮箱配置以及结合ansible进行批量构建

    tomcat8.5以上版本,jenkins2.7以上版本 首先填写你的系统管理员邮件地址,否则会使用jenkins系统本身的邮箱 填写的163邮箱,通过smtp认证填写正确的账号和密码(注意这里的密码 ...