unix基础知识(新手进)

本文介绍了Unix操作系统的基本概念,包括多任务多用户特性、常用命令及其用法,如ls、cd、date等,以及文件权限管理和vi编辑器的基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unix是一个多任务多用户的操作系统。多任务是指可以同时运行几个不同的程序,或命令。在操作系统的术语里叫“进程”,就象在运行Windows95的时候我们可以一边听CD 一边打字,同时打印机还在工作。多用户是指一台运行Unix系统的机器可以同时具有几个不同的输入输出设备,给几个,几十个用户同时使用。不同的输入输出设备我们称为终端。 Unix给每个终端设置不同的序号以协调工作,这个序号被称为终端序号。 Unix是一个根本不同于Dos的系统,无论其命令格式,用途都和Dos有很大区别。比如: 目录分割符是 "/ ",而不是 " "。具体的不同请参考其他书籍。

回页首

开始练习之前: 

在开始教授Unix命令之前,请先记下这个地址: http://www.cyberspace.org。它是 一台在美国的,连上Internet的Unix主机。之所以告诉大家这个地址是因为它提供免费的帐号供大家使用。是免费的。就是说你可以先去那里申请一个帐号,然后在那里练习 你所学到的Unix命令。因为我相信不是每个朋友都可以轻松地得到Unix帐号的。 在你成功的申请好帐号之后,请在你Windows95的dos窗口里输入 "telnet cyberspace.org " 等待连上主机。接下来就是输入你的用户名和密码,不要告诉我这些你都不会,如果你 不会的话,你是怎么连到这个网页的? 现在假定你连上了主机,系统的提示符应该是 "cyberscpae.org% ",对这个就是提示符 就象dos里的 "c:> "。接下去我将开始命令篇。

回页首

ls

你记不记得你学会的第一个Dos命令?反正我学会的第一个命令是dir:列目录和文件的 命令。你学会的第一个Unix的命令也是列目录和文件的命令ls. 功能列出当前目录下的文件和目录。 同Dos一样,Unix系统命令也是带参数的。ls的参数有 "a ", "l ", "F "。请注意,F是大写。 Unix系统里对命令的大小是严格区分的。(所以我们做网页常常会发生连接错误)同dos 不一样的地方在于,Unix命令的参数是 "- "为其前导,而不是 "/ "。所以完整的ls命令是 

ls -l -a -F或ls -laF 

-l:long的意思,把文件的其他资料,如文件长度,上次修改的日期等等列出来。 

-a:all的意思,把本目录下所有的文件,包括隐含的文件也列出来。 

-F:显示文件类型。 "* "表示可执行文件, "/ "表示目录, "@ "表示连接。

好,请在你的机器上输入ls -l -a -F,或许这是你一生里第一个Unix命令。记住了吗?

回页首

cd 

变换目录,和Dos相同。如果你在cd后面没有给定目的地,则表示目的地是家目录。 在unix中有三中表示目录的符号 ". ", ".. ", "~ "。  ". "表示当前目录路径的位置  ".. "表示当前路径的上一层目录,或称 "父目录 "  "~ "表示家目录,所谓家目录指系统管理员分配给你的目录,比如你的用户名是li,那么 你的家目录就是在 "~li ",在cd后面加上 "~li "就是去你的家目录。 

回页首

date

显示出当前的时间和日期,记住在Unix里你是无法修改系统时间的。输出时间一般是 格林威志时间。

回页首

who

该命令告诉你现在你使用的系统里有哪些用户。Unix是一个多用户的操作系统,同时在 机器上的可能有数十甚至数百人。who命令可以把他们的名字和终端号都列出来。who命令有 一个比较有趣的用法, "who am I "如其字面上的意思,让Unix显示你的用户名和终端类型

回页首

more

more命令有点象Dos里的Type命令,就是显示文本文件的内容。比如你要显示文件file1的 内容,可以用: more file1 当要看的文件超过屏幕可以容纳的行数,就会在屏幕的左下角出现一个 "--More-- "并告诉 你已经看过了整个文件的百分之几。如果要继续看下去,就敲 "Space Bar ",可以看下一页, 或用 "Enter ",就会读入下一行。 more命令还可以由你指定开始的行数。比如file1文件有1000行,你已经看过100行,那么可以用 "more +100 file1 "则直接从第100行开始看起。还有可以在命令里指定关键字。ore +/key_word 这样写,more就会从含有 "key_word "字样的那一行的前两行开始显示。也许你已经注意到,Unix里对文本文件的操作要比Dos强大的多,实际上的确如此。

回页首

cp 

cp命令同dos里的copy命令是一样的,复制文件。 比如:

cp file1 file2 

注意,如果你当前目录里已经含有file2这个文件,这个操作将会覆盖原来的file2。也许 在Dos里不会这样,它会要你确认。但你现在在用Unix,在你没有叫它确认之前,它不会那么做。 

cp -i file1 file2

当你使用了-i这个选项,再遇到重名的情况系统将要你确认是否继续。 cp命令还有两个比较重要的选项:-r -p 

cp -r /dir1 /dir_temp 这条命令是将目录dir1完全地复制到目录/dir_temp里,在Dos里着条命令叫xcopy 

cp -p file1 file2

Unix的系统和dos有一个不同的地方,在dos里copy一个文件是不会改变它的文件修改时间 的,除非你确实那样做了。在Unix里不同,它要改你的时间,或许它认为cp也是一种修改吧。 当你加上-p以后就不会改时间了。 

用惯Dos的人或许会对下面的一行命令大惑不解: 

cp file1 file2 file3 dir_dest 这条命令把file1,file2,file3三个文件一起复制到/dir_dest里去。 

好了今天就讲到这里,最后留一个思考题,请说明一下下面一行命令的作用,请不要用Dos 的思考方式。我们下个星期再见。 

思考问题,请说出以下命令的作用:

cp file1+file2 file3

cp 上个星期我提出的问题你能解吗?实际上以下命令的意义是这样的:

cp file1+file2 file3

表示将一个名字为file1+file2的文件拷贝成file3。而不是在dos里

的将file1和file2加在一起拷贝成文件file3。在unix的文件系统里,

文件名字可以到255或254个字符,具体要看你到底使用那种类型的

Unix。

回页首

cat

这个命令可不是“猫”的意思,而是catenate的缩写。顾名思义,是

把东西串起来。比如:

cat file1 file2

就是把文件file1和file2连在一起,然后输出到屏幕上。注意,输出

到屏幕上是cat的自定义目的。如果要改变它的输出方向,就必须使用

Unix系统的输出重定向符“>”

回页首

>

输出重定向符。稍微高级一点的dos用户都知道这个符号。在Unix里的

用法同Dos的区别不是很大。但比较不同的地方是,Unix系统将任何的

一个外设都认同为一个文件。所以如果你要将输出重定向到打印机之

类的地方,只要写上代表打印机的设备文件名。前一将里我们曾讲过

终端机器名,它也是一个文件。比方我的设备机器是ttya,而小李的

设备机器是ttyb,他想让我把当前目录的内容给他看。那么用这条命

令就可以了

ls -a-u-F >ttyb

这充分利用了Unix系统多用户的设计思想。

同样的使用ls -a-u-F>file1就是将当前目录列表输出到file1中。

又比如:

cat file1 file2>file3

就是将文件file1和file2的内容输出到file3中。在Dos里这条命令被

写成copy file1+file2 file3

当你用 '> '来输出重定向的时候,系统马上打开一个空文件来准备存放

'> '之前那个文件命令的输出结果。比如:

cat file1 file2>file3

系统先将file3的内容清空。所以:

cat file1 file2>file1这条命令将产生一个错误提示。也许这条命令

的本意是增加file1里的内容,但在系统初始这条命令的时候就把file1

里的内容清空了。所以你得到一个错误提示。如果要追加文件内容请

使用以下命令:

cat file2>>file1

">> "表示追加,而不是先清空file1中的内容。

上面讲的是输出重定向,还有输入重定向。这个留在以后讲。

回页首

man

是英语 "manual "的缩写。这是一条使用频率很高的命令,用来得到系统

对一个特定命令的帮助信息。请各位读者一定要掌握这条命令。

格式为:man -k 命令关键字

回页首

mv

这个命令是move的缩写,就是把一个目录或文件搬来搬去。实际上我常

把它当成改文件名字的命令来用。比如:

mv file1 ABC就是把文件file1改成ABC。

rm

记住rm是remove,是清除文件的意思。在Unix里是没有undelete这会事

情的,所以请在使用的时候加上-i这个选项。表示确认。


我们着重谈谈Unix的文件系统

现在我们来看一个示例:

Username:unixfree

Password:********

(登陆到Unix)

%:ls -l(显示文件表)

drwxr-xrw- 1 unixfree project1 128 Apr 4 12:19 dir

-rw-r--r-- 1 unixfree project1 545 Apr 4 12:19 file1

lrwxrwxrwx 1 unixfree project1 124 Jan 13 09:01 file2-->file3

-rw------- 1 unixfree project1 212 Jul 22 14:23 file3

在文件列表最前边的就是文件的属性。一般来说,它有十个小项目,也就是十个

符号。它们以1+3+3+3的方式表示四个意义:

文件类型(1)、文件拥有者(user)对此文件的权限(3)、同组者(group)对此文件

的权限(3)、其他人(others)对此文件的权限(3)。

文件类型:文件类型有三种符号,分别为:

"- ":普通文件

"d ":目录

"1 ":表示连接(下面会详细讲)



文件权限:文件的权限也有三种

"r ":只读文件

"w ":可写文件

"- ":不可执行文件,不可读文件,不可写文件

"x ":可执行



在Unix系统里用户是分组的,就象NT的分组一样。一般来说同一组的人往往比较

接近,比如公司的同一个部门就是一个组。而不同组的人则不在同一个组。分组

情况是由系统管理员制定的。普通用户不能自行更改。

所以在上面的例子里的第一行表示该目录User可读可写可执行,本组的用户可读

不可写可执行,其他用户可读可写不可执行。其他的你就自己解释吧。

前面我提到了一个文件类型 "1 "。这是比较特别的类型,它只是一个门牌,任何

对它的访问都会自动到它指向的文件。比如上例中我们看到file2是连向file3

的一个文件,那么任何对file2的操作都是对file3的操作,并且文件的实际属性

是file3的属性,而不是file2的属性。



改变文件属性的命令:chmod

chmod 是chang mode的缩写,用来改变文件的权限。用以下的文件为例:

-rw-r--r-- 1 unixfree project1 545 Apr 4 12:19 file1

第一个 "- "表示本文件是一个普通的文件。 "rw- "表示文件拥有者对此文件的权限

为可读可写不可执行。其他的你自己看了。

要改变次文件的权限,比如我怕将此文件改坏掉,所以希望自己不可写此文件

chmod u-w file1

符号 "u "表示文件的拥有者, "g "表示同组者, "o "表示其他用户, "a "表示全体用

户,就是前面讲的所有的人。 "- "表示去掉某个属性, "+ "表示加上某个属性。

又比如我要讲file1改成全体用户都可读可写可执行的文件:

chmod a+rwx file1

然后去掉其他用户执行的权利:

chmod o-x file1




Vi的模式:
Vi有两种基本模式:命令模式和编辑模式,他们以<ESC>键切换。
OK,我们启动一下vi,看看这么使用这个工具。
%vi
启动vi,第一件事先按<ESC>,记得你在vi里要常常用它。然后输入 "i "
屏幕上绝对不会出现任何字,因为<esc>后你在命令模式,输入 "i "则表示你进入编辑模式,并且现在的状态是insert,就是插入文本。
如果你还没有被搞糊涂,那么继续输入。 I love Unix.

是的,屏幕上出字了,你顺利地输入第一行文字。现在我们要保存这个文件。再按一次<ESC>,到命令模式,输入 ":w ",表示存盘。你也可以输入
":w Unix.txt ",那么就是以Unix.txt为文件名字存盘。
好了基本vi概念就是如此。我把常用的一些命令都写在下面,你自己试着输入吧。


i牋 

"insert "的缩写

在光标之前插入文字

a牋 

"append "的缩写 

在光标之后插入文字

o

"open "的缩写 

在光标所在行的下面开始新一行的输入

O

"Open "的缩写 

在光标所在行的上面开始新一行的输入

I?br> 
"Insert "的缩写 

在本行最前面开始输入文字

A

"Append "的缩写 

在本行最后开始插入文字

dd?br> 
删除光标所在的那行

dw

删除光标所在的那个字

dnw?

删除光标所在字和其后的n个字(n为正整数)

x?

删除光标所在的那个字母

:w?

存文件

:r?

读文件

:q?

退出vi



在程序员里有一个流行称谓“如果你不喜欢Unix界面,就自己写一个”。实际上
无需深入到内核,便可以方便地控制自己的界面。可选的Shell有sh,csh,ksh有
强大的功能。

正如其名字,Shell  script是一个文本文件。该文件指挥并控制Shell执行一系
列特定的操作。一个批处理文件能含有任何命令(Unix的内部和外部命令),还
可以包括过去编写的批处理文件。

第一个Shell处理文件:
这里使用的Shell是BS,如果你是使用CS可以更改一部分内容。
:
#@(#)dw--show data and users--
#
date
who -u
第一个:不是必须的,而是长期的习惯。它告诉系统下面是BShell的内容。

正如你看到的,Unix的Shell文件和Dos的批文件在很多地方是相同的。在写Unix
的Shell文件时候,我们一般使用六个步骤:
1.计划好命令系列,并在键盘上试用
2.为批处理文件挑一个好的,不会发生重复的文件名
3.用你喜欢的编辑工具生成文件(希望不是VI:-))
4.从冒号开始文件,以增加文件的解释
5.用Chmod命令,将文件的属性设置为可读文件
6.把批处理文件放入适合的目录中。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值