文字介面的基本知识-Linux/Unix-Like
絕对路径与相对路径
在linux系统中,所有的目錄都是掛载於 /(根目錄)底下,通常我们可以使用「cd」这个指令来切換目錄,而切換目錄的方式,有两种方式,一种是使用「絕对路径」另外一种则使用「相对路径」,关於絕对路径与相对路径的說明如下:
● 絕对路径:凡切換所有路径都是以「/」作为开头,则属於絕对路径表示法。
● 相对路性:凡路径的表示,均不以「/」作为开头,则属於相对路径表示法。
举例說明:
「絕对路径」表示法(凡是切换所有路径都是以「/」作为开头。)
「相对路径」(凡路径的表示,均不以「/」作为开头。)
「相对路径」表示方法,在此有四个符号表示方法,大家必须要熟悉。
◆ 「.」:符号,代表「活动目錄 (Current directory)」的意思。
◆ 「..」:「点点」符号,代表「上一层目錄」的意思。
◆ 「~」:「波浪」符号,代表「用户家目錄」的意思。
◆ 「-」:「连结」符号,代表「上一个使用目錄」的意思。
「cd-」的意思,比较像是「上一页」的意思! 就好比大家在浏览网页时,时常会按下「回上一页」的按钮一樣,这裡的cd- 就是让你可以从现在的目錄回到「上一个使用的目錄」。
● 远程登录
大家的Linux如果是安装在外地的其它计算机上,那麼就必须要「远程登录」才能夠在远程的主机上进行操作,假使您当前已经在Linux或其它Unix-like作业系统下,那麼就不需要额外安装任何软件,直接使用系统的ssh或telnet指令就可以直接登录到远程的机器。假设您是在Windows下想要登录到远程的Linux主机,有两种方式。第一种可以打开「命令提示字符」使用Windows内置的telnet命令来登录。第二种就是使用远程登录软件「PUTTY 」(),或是用PieTTY(~piaip/pietty/)。PieTTY的使用方式与PUTTY是大同小异。
在Linux系统上主要有两种登录的方式:
◆ 第一种:大家可以在主机前,拿起键盘,输入帐号、口令,这是最基本的登录方法了。一般预设可登录的终端(Virtual Console)有六个,分別是从VT1到VT6,而VT7通常是作为X-window(图形化桌面)的登录与使用,您如果想要切換所使用的虛拟终端,那只要在键盘上按下「Ctrl」+「Alt」+「F2」就可以切換到第二个Virtual Console(tty2),因此类推「F1」到「F7」就可以让你从ttyl切換到tty7。
◆ 第二种:在Linux/Unix-like系统上,有一个特点就是通过「网络」,无论您在「何时何地」,都可以来使用其他的电脑。从「远程登录」来使用您家里或办公室的Linux主机,您可以通过打开「Telnet」或者「SSHD」的服务来引导「远程登录」的功能,这些服务功能,就等于其他的计算机都可以通过网络直接登录到主机来使用。
登录与登出
远程登录到主机时,必须填入帐号跟口令,以下是一个简单的示样例子:
在第一次登录系统之后,建议您首先更改登录密码,这是基与安全的理由。更改密码的指令是passwd,使用方式如下:
登入后的环境
我们在远程登录后,会进入到一个操作环境称为「Shell」,用户Login之后,就会进入到Shell界面,通过Shell下达指令给操作系统,使用系统来进行工作。在Shell下输入指令,Shell就会传达给作业系统来执行,作业系统将工作完成后,就会再返回到Shell,那么我们就可以立即的看到指令执行完成的结果。
用户与shell与Linux之间的关系
登录之后,大家会看到以下的图示:
简单的介绍「tom@tom-desktop:~$」所代表的意义是:[tom (姓名)]、[@ (在)]、[tom-desktop(主机名称)]、[:(分隔符号)]、[~ (所在目錄)、]、[$ (提示字元)] 。由于tom是「一般使用者」用的是「$」符号,如果是「管理员(超级使用者)」提示字元则为「#」符号。
看下面这个简单的举例:
有了这樣的概念后,我们耍来看系统缺省登录之后,会来到哪裡? 缺省的情況下,一个用户登录之后,首先会进入到一个目錄,这个目录称作「家目录」,这是使用者的专用目錄,不同的使用者都会有自己的家目錄,彼此不会受到影响,使用pwd指令可以看到当前所在的目錄位置。
Linux的基本工具
我们现在先来介绍Command line(命令列模式)指令的应用。在前面我们提到「远程登录」的时候提到了,Unix-like/Linux系统下,最让人惊喜的一项特色是,就是你可以不需要用图形界面来操作系统,換句话說,各位可以用(文字模式)「指令」的方式,来操作系统,完成所有的任务。而且使用指令来操作系统,可比使用图形化界面操作来得更简洁更有效率。
现在就带领各位来熟悉Unix/Linux工具的使用,在稍后会提到的指令分成三个部份:
⒈ 文件与目录管理指令
⒉ 打包与压缩指令
⒊ 更改文件权限指令
我们在这里只会简单列出指令的「基本使用方式」跟「概念介绍」,並且带些「实用的范例」来加深各位的使用印象。
文件与目录管理
在windows底下,或者任何的GUI窗口系统之下,管理文件跟目录,不外乎就是使用鼠标点按来完成这樣的动作。在Linux文字模式下,我们要下达「指令」来完成这些事情,使用指令来管理文件跟目录是非常有效率的。各位可以想像一下,在GUI模式下,假使你想将系统上分佈在各个目錄中的文件(总共有1000多个小档),搬移到一个叫做tmp的目錄下,那你大概要花多少时间才能完成这樣的工作? 假使是使用指令模式来作这件事的话,只要下达「一行指令」,就可以完成这件事。
在这部份我们会谈到的指令列整如下:
在GUI图形界面化的系统中,各位可以直接通过鼠标的拖拉放以及键盘的Delete键,来完成文件与目錄的管理,不过在Unix/Linux的文字界面当中,各位则必须一些基础的文字命令,来完成这些任务,首先我们来看「查询状态类」与「目錄类」的指令使用方式。
我们在前曾经約略提到Shell提示字符的意义,因此在下面我就不再解释符号的意义。这裡我们直接使用应用样例,来介绍指令的使用。
登录到系统时,会看到这樣的提示符号,等待用户下达指令:
可以使用「man」这个指令,查阅指令的说明手册,这里我们查阅一下「ls」的使用方法:
「ls」指令的使用范例:
它的格式有「7个栏目」分别是:
[权限] [连结数] [文件拥有者] [文件大小] [最后修改的时间] [文件名]
每个栏目的代表意义,我们将会在稍后介绍.
在介绍完ls与pwd的用法之后,想必各位已经对於文字命令模式的查看目錄状态,有了一些概念了! 接著我们要来认识其它有关於「创建/刪除目錄」、「创建/刪除文件」、「迁移/复制文件与目錄」的指令。
以上是基本的文件与目錄操作范例介绍,接着让我们要来认识「ln」连结档案的指令。我们首先简略的介绍一下「inode」的概念,之后再来看In这指令的时候,就会有较清楚的认识。
inode(index node) 索引节点、文件指标
在Unix/Linux系统里,每个文件都有一个伴随它的inode(indentification node的缩写)。这个inode的值必须是系统中独一无二的。它的用途是作为存取文件的索引。您可以用系统指令l s -i将现行工作目錄下的各个文件之inode內含值印出。inode的內部储存了许多重要的资讯,例如:
● 文件所有人的识別码
● 文件型态
● 文件存取权限
● 文件存取时间
● 文件案有几个连接
● 文件的大小
● 文件的实际储存位址
从使用者的观点来看,用戶足以文件名来辨识Unix/Linux的文件;但是以核心程式的立场观之,则是透过inode来使用文件。inode有两种存在状态,在未被使用时,inode被放在磁碟中所谓的inode列表(inode list):当它要被参考时,核心程式会将它载入至主记忆內,此时的inode被称作in-core inode,以下是inode以C语言的结构(structure)所表示的情形:
struct inode
{
int imode; /*存取权限 */
char i_nl ink; /*文件连接数 */
char i_uid; /*拥有者识別码 */
char i_gid; /*使用群识別码 */
long i_size; /*文件的长度 */
int i_addr{13); /*文件所在位置 */
int i_atime[2); /*最近一次存取时间*/
int i_mtime(2];/*最近一次修改时间*/
}
【参考】disk inode, in-core inode, inode list,kernel。
我们可以从下图来了解inode与inode table的关系。
任何文件的inode都会对应到一个「inode table」,而这个inode table就是记录著这个文件的一些相关信息。从上面的图例来看,「File 1」的inode为「168」因此将168对应到inode table时,里头就会记载著这个文件的相关內容,比如文件的拥有人、拥有群组信息,相关的文件权限、或者文件的最后更动日期…等等。
我们可以使用「ls -i」来查看文件的inode信息,加上「-i」参数代表显示inode的意思:
(加上「-i」参数,表示要显示文件的inode信息)
有了以上的基本概念后,接著要来看「ln」的使用方式。
简单的来说,ln就像是各位在Windows系统中「创建捷径」的意思,但是又不像Windows创建捷径那樣的单纯容易! 在linux/Unix-like中,「ln」创建连结有两种使用方式,一种是创建「硬式连结」,另一种则是创建「软式连结」。
◆「硬式连结+」:文件並无「源文件」与「目的文件」的分別,因为都是同樣的inode。
◆「软式连结」文件有「源文件」与「目的文件」的分別,两者属於不同的inode
我们在下面简单的示范ln的使用方式,並介绍硬式连结与软式连结的基础概念。
「建立软连结」
「建立硬连结」
「做些简单的试验」
最后,我要来介绍「观看文件类」以及「查询使用手册类」这些指令的使用范例。在Linux/Unix系统中,各位可以使用下面这些指令来查看文件的內容。
举例说明:
以上使用了很多关於「>」转向、「|」Pipe等数据流重导向的应用,如果各位还不熟悉这些用法,可以买鸟哥的书来参考,或是上Google搜寻一些有关知识。
在Linux或其它Unix-like系统下,指令的数量是非常的多的!天底下沒有任何人是完完全全能夠记熟所有指令的用法,即使一位系统的老手遇到他不熟的指令时,还是无可奈何。於是在系统底下就有一个「联机求助」专门在解答这些指令的用法,它就是「manpage」在Linux下,要查看指令的使用說明(manpage)有两种方式,第一种就是直接man指令(例如:man ls)另外一种方式,就是使用info指令(例如:info ls)。
Linux有叫话,有困难找男人(man)!记得叫出「man」与「info」这两个查询联机手册的指令! 保证「他们」会把所有的使用說明与样例介绍的一清二楚。
下图例子是查看ls的用法:
此时画面就会立即的显示出ls完整的参数用法还有說明等等。info的使用方式也是一模一樣!直接「info ls」就可以看到相关的参数用法与說明。从今以后就不用担心在Unix-like系统下不知道怎麼使用指令工具了,因为只要会使用man查看manpage,相信人人都可以成为系统高手了。
打包与压缩
在文件处理上,假如你要E-mail发送100个文件给对方,你可以将100个文件包扎起来后,直接传送,这就是打包的概念。另外如果这百个文件包起来后又太大了,我们就需要利用到压缩的工具,以下就是要来简单介绍在Linux/Unix系统下,用来打包与压缩的工具。
有关的指令列表如下:
有关的操作范例参考:
「文件打包」
「解包文件」
「显示包装文件内容」
以上是基础的tar打包指令的使用范例,接下来我们要来看 压缩工具的使用范例。
「gzip压缩」
「gzip解压缩」
「bzip2压缩」
「bzip2解压缩」
「tar与gzip/bzip2的配搭用法」
还有更快的入门方式,就是直接看manpage,然后在实地的练习一番,大家就能熟识这些工具的用法:
更改文件权限
在unix-like系统下,每一个文件都有其相关的属性,而这些属性背后所代表的意义也是一门重要的课题。
在前的章节里,我们已经简略的介绍「ls -l」在完整长格式的显示中,各个字段的意思,现在我们要来了解一下第一个字段 :「权限」的概念。
在Linux/Unix-like系统下,任何文件都有其相关的「权限属性」在此权限属性又细分为三种:
1. User权限:规定著拥有文件的「拥有人」对於该文件能做哪些事情。
2.Group权限:规定著拥有文件的「群组用户」对於该文件能做哪些事情。
3.Other权限:规定「其它所有人」对於该文件能做哪些事情。
每一个权限又各別由「r」、「w」、「x」三个符号所组成,符号的代表意义如下表:
对於文件而言:
一个文件假使具有「r」的权限,表示各位可以用任何的工具来「读取」文件的內容。如果它拥有「w」的权限,那麼各位可以对於该文件的內容进行「任何的修改」。若该文件具有「x」的权限,那麼这个文件可以看作为「可执行」文件,可视为程序来执行。
对於目錄而言:
一个目錄假使具有「r」的权限,表示各位可以在此目录中使用像是 ls等指令来「列示」出目录的內容。如果它拥有「w」的权限,那麼各位可以对於该目录里面的文件进行「任何的处理」,表示你可以「创建」或「刪除」目录中的文件。若一个目录具有「x」的权限,这表示各位被允许切換(进入)到该目录中,換句话說,一个目录若不赋予「x」的权限的话,那麼各位将不能进入(cd)到目录之中。
我们来看一些示范的例子:
以上所介绍的都是基本的文件权限概念。接著下来要介绍在Linux/Unix系统中,用来「更改文件权限」的工具:「chmod」的使用概念。
示范例子如下:
了解chmod以及权限的概念后,接著,我们要来认识以下这两个指令的使用方式:
由刚才chmod的使用介绍,大家对於第一个栏位「权限」已经有基础的概念。现在我们要来看第三与第四个栏位:「文件拥有人」、「文件拥有群组」。
在系统当中,每一个文件都会有拥有者与拥有群组,我们可以从家目录(/home)中清楚的看出来。在系统家目录当中,每一位用户都是他们自己家目录的拥有者以及拥有群组。
而「chown」以及「chgrp」这两个指令即是用来更改文件目錄之,「拥有者」或「群组」的工具。此两种Unix工具的使用方式,我由下方的使用样例来为各位做說明。
◆ chown用法
chown [拥有者] : [拥有群组] 文件
◆ chgrp用法
chgrp [拥有群组] 文件
应用样例介绍
To be continued.........