Linux基础

鸟哥的 Linux 私房菜 -- 基础学习篇

变数的可变性与方便性

举例来说,我们每个帐号的邮件信箱预设是以 MAIL 这个变数来进行存取的, 当 dmtsai 这个使用者登入时,他便会取得 MAIL
这个变数,而这个变数的内容其实就是 /var/spool/mail/dmtsai, 那如果 vbird 登入呢?他取得的 MAIL 这个变数的内容其实就是
/var/spool/mail/vbird 。 而我们使用信件读取指令 mail 来读取自己的邮件信箱时,嘿嘿,这支程式可以直接读取 MAIL 这个变数的内容,
就能够自动的分辨出属于自己的信箱信件啰!这样一来,设计程式的设计师就真的很方便的啦!

[图片上传中。。。(1)]图 2.1.1、程式、变数与不同使用者的关系

如上图所示,由于系统已经帮我们规划好 MAIL 这个变数,所以使用者只要知道 mail 这个指令如何使用即可, mail 会主动的取用 MAIL
这个变数,就能够如上图所示的取得自己的邮件信箱了!(注意大小写,小写的 mail 是指令, 大写的 MAIL 则是变数名称喔!)

那么使用变数真的比较好吗?这是当然的!想像一个例子,如果 mail 这个指令将 root 收信的邮件信箱 (mailbox) 档名为
/var/spool/mail/root 直接写入程式码中。那么当 dmtsai 要使用 mail 时,将会取得 /var/spool/mail/root
这个档案的内容! 不合理吧!所以你就需要帮 dmtsai 也设计一个 mail 的程式,将 /var/spool/mail/dmtsai 写死到 mail
的程式码当中! 天呐!那系统要有多少个 mail 指令啊?反过来说,使用变数就变的很简单了!因为你不需要更动到程式码啊! 只要将 MAIL
这个变数带入不同的内容即可让所有使用者透过 mail 取得自己的信件!当然简单多了!

影响 bash 环境操作的变数

某些特定变数会影响到 bash 的环境喔!举例来说,我们前面已经提到过很多次的那个 PATH 变数! 你能不能在任何目录下执行某个指令,与 PATH
这个变数有很大的关系。例如你下达 ls 这个指令时,系统就是透过 PATH 这个变数里面的内容所记录的路径顺序来搜寻指令的呢!如果在搜寻完 PATH
变数内的路径还找不到 ls 这个指令时, 就会在荧幕上显示‘ command not found ’的错误讯息了。

如果说的学理一点,那么由于在 Linux System 下面,所有的执行续都是需要一个执行码, 而就如同上面提到的,你‘真正以 shell 来跟 Linux 沟通,是在正确的登入 Linux 之后!
’这个时候你就有一个 bash
的执行程序,也才可以真正的经由 bash 来跟系统沟通啰!而在进入 shell 之前,也正如同上面提到的,由于系统需要一些变数来提供他资料的存取
(或者是一些环境的设定参数值, 例如是否要显示彩色等等的) ,所以就有一些所谓的‘环境变数

需要来读入系统中了!这些环境变数例如 PATH、HOME、MAIL、SHELL 等等,都是很重要的,
为了区别与自订变数的不同,环境变数通常以大写字元来表示呢!

脚本程式设计 (shell script) 的好帮手

这些还都只是系统预设的变数的目的,如果是个人的设定方面的应用呢:例如你要写一个大型的 script
时,有些资料因为可能由于使用者习惯的不同而有差异,比如说路径好了,由于该路径在 script 被使用在相当多的地方,如果下次换了一部主机,都要修改 script
里面的所有路径,那么我一定会疯掉! 这个时候如果使用变数,而将该变数的定义写在最前面,后面相关的路径名称都以变数来取代, 嘿嘿!那么你只要修改一行就等于修改整篇
script 了!方便的很!所以,良好的程式设计师都会善用变数的定义!Bash shell 的功能

命令编修能力 (history):
命令与档案补全功能: ([tab] 按键的好处)
[Tab] 接在一串指令的第一个字的后面,则为命令补全;
[Tab] 接在一串指令的第二个字以后时,则为‘档案补齐’!
命令别名设定功能: (alias)
工作控制、前景背景控制: (job control, foreground, background)
程式化脚本: (shell scripts)
万用字元: (Wildcard)

Bash shell 的内建命令: type

[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
ls is aliased to `ls --color=tty' <==未加任何参数,列出 ls 的最主要使用情况

[root@www ~]# type -t ls
alias                             <==仅列出 ls 执行时的依据
[root@www ~]# type -a ls
ls is aliased to `ls --color=tty' <==最先使用 aliase
ls is /bin/ls                     <==还有找到外部指令在 /bin/ls

范例二:那么 cd 呢?

[root@www ~]# type cd
cd is a shell builtin             <==看到了吗? cd 是 shell 内建指令

透过 type 这个指令我们可以知道每个指令是否为 bash 的内建指令。 此外,由于利用 type
搜寻后面的名称时,如果后面接的名称并不能以执行档的状态被找到, 那么该名称是不会被显示出来的。也就是说, type 主要在找出‘执行档’而不是一般档案档名喔!
呵呵!所以,这个 type 也可以用来作为类似 which
指令的用途啦!
找指令用的!

Shell 的变数功能
变数是 bash 环境中非常重要的一个玩意儿,我们知道 Linux 是多人多工的环境,每个人登入系统都能取得一个 bash , 每个人都能够使用 bash 下达 mail 这个指令来收受‘自己’的邮件,问题是, bash 是如何得知你的邮件信箱是哪个档案? 这就需要‘变数’的帮助啦!所以,你说变数重不重要呢?底下我们将介绍重要的环境变数、变数的取用与设定等资料, 呼呼!动动脑时间又来到啰!_

那么,什么是‘变数’呢?简单的说,就是让某一个特定字串代表不固定的内容就是了。举个大家在国中都会学到的数学例子, 那就是:‘ y = ax + b ’这东西,在等号左边的(y)就是变数,在等号右边的(ax+b)就是变数内容。 要注意的是,左边是未知数,右边是已知数喔! 讲的更简单一点,我们可以‘用一个简单的 "字眼" 来取代另一个比较复杂或者是容易变动的资料’。这有什么好处啊?最大的好处就是‘方便!’

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 本文包括: 1、Linux 系统概述 2、Linux 用户和用户组管理 3、Linux 文件和目录管理 4、Lin...
    廖少少阅读 2,640评论 1 40
  • Linux基础命令学习总结,随着学习的前进,将不断完善。网友们,有错误之处,请给我留言改正喔,谢谢! 基础操作 <...
    zhuenbiao阅读 1,718评论 0 2
  • 1、Linux上的文件管理命令有哪些以及常用方法shell:shell负责接收用户输入的命令并进行解释,将需要执行...
    乀koala阅读 780评论 0 3
  • Linux基本原则1.由目的单一的小程序组成:组合小程序组成负责任务:2.一切皆文件。3.尽量避免捕获用户接口;4...
    浪漫晨风阅读 571评论 0 0
  • 装饰角落空间看上去是一件很棘手的事情,往往会给人一种困惑,甚至是很棒的设计师,但设计师都尽其所能充分利用每一寸空间...
    搭配我居阅读 260评论 0 6