Mac OS X系统特性与命令行操作解析

内容分享5小时前发布
0 0 0

1、什么是多用户系统?它们为什么会成功?

多用户系统

多用户系统是允许多个用户同时使用一台计算机资源的系统。它们成功的原因包括:


资源共享

:可使多个用户共用硬件和软件,降低成本


提高效率

:能让多个任务同时进行,提高整体工作效率


增强协作

:方便用户之间交流合作


成本效益

:从长期看,比为每个用户配备单独系统更经济


可靠性

:具备冗余和容错机制保障数据安全


安全性

:通过用户认证和访问控制确保信息安全

2、什么是自由软件基金会/GNU、BSD和Mach?它们分别为Mac OS X操作系统提供了哪些部分?

自由软件基金会/GNU


1983年

:理查德·斯托曼宣布GNU项目,旨在创建一个完整的操作系统(包括内核和系统程序),并发布《GNU宣言》。


现状

:如今GNU由

自由软件基金会

(FSF)运营。


许可

:GNU软件根据

GNU通用公共许可证

(GPL)进行分发。


应用


Mac OS X

使用了GNU C编译器

gcc

(支持 Objective-C 语言)。

同时还利用了其他 GNU 开发工具。

BSD


1989年

:加州大学伯克利分校以宽松许可发布部分 BSD UNIX 系统代码。


发展

:后续经重写形成了如 4.4BSD 等版本。


与 Mac OS X 的关系

Mac OS X 使用了许多 BSD 实用程序。

因此通常被视为 BSD 家族成员。



未使用 BSD 内核

Mach


架构

:Mac OS X 使用

Mach 微内核架构

,而非 BSD 内核。

3、为什么Mac OS X文件系统被称为分层式的?

因为它类似家族树结构,由一组相互连接的文件组成,每个用户可从一个目录开始,按需添加任意层级的子目录,这种结构能让用户轻松组织和查找文件。

4、在图形或文本环境中,当你提供用户名和密码登录但登录失败时,OS X 不会指出是用户名、密码还是两者都无效。为什么系统不提供这些信息?

系统不区分不可接受的登录名和不可接受的密码,是为了阻止未经授权的人通过猜测用户名和密码来访问系统,不泄露特定账户的存在可增加安全性。

5、请给出三个糟糕密码选择的例子,并说明每个例子存在的问题,其中一个密码要过短。

过短的密码:如“abc”,长度小于建议的至少六个字符,容易被破解。

常见英文单词:如“apple”,是字典中的单词,他人容易猜到。

常见人名:如“jack”,是常见人名,易被发现和猜测。

6、“fido”是一个可接受的密码吗?给出几个支持或反对的理由。

“fido”不是一个可接受的密码。理由如下:

它是常见宠物名,易被猜出

是英文单词,符合字典中的词汇

长度未达至少六个字符

只含字母,不包含至少一个数字

7、如果你无法登录,你会怎么做?

如果无法登录,可以检查以下方面:

登录名和密码区分大小写,确保大写锁定键(CAPS LOCK)关闭,并准确输入登录名和密码;若大写锁定键开启,登录窗口实用程序会显示向上箭头图标提醒。

确保登录名有效,若从列表中选择账户,只有已设置的账户会列出;否则,可咨询系统管理员,Mac OS X 允许使用长用户名或短用户名。此外,当输入的用户名或密码不正确时,系统在输入两者并按下回车键后,登录窗口会左右晃动,提示输入的用户名或密码无效。

8、请解释如何使用man来确定系统手册的哪些节包含具有给定名称的手册页。

可以使用

man -a

选项来查看给定主题的所有手册页,例如使用

man -a write

查看

write

的所有手册页,按

q

键移动到下一节;

也可以使用

man -k

选项,它会在手册页标题数据库中搜索关键字,显示包含该关键字的标题列表,例如

man -k latex

会显示与

latex

相关的手册页标题,标题中的数字能表明其所在的节。

9、在图形或文本环境中,当你提供用户名和密码登录但登录失败时,OS X不会表明是用户名、密码还是两者都无效。为什么系统不提供这些信息?

系统不区分不可接受的登录名和不可接受的密码,是为了阻止未经授权的人猜测用户名和密码以访问系统。

不披露特定账户的存在,能增加额外的安全性。

10、你可以使用哪些命令来确定特定终端上登录的用户是谁?

可以使用

who


finger


w

命令来确定特定终端上登录的用户是谁。其中:

who

显示登录用户的用户名、终端设备和登录时间等信息;

finger

显示登录用户的详细信息,包括全名等;

w

也显示登录用户的详细信息。

11、如何防止其他用户使用write与你通信?为什么要这样做?

可以使用命令

mesg n

拒绝接收其他用户的消息。

这样做的原因是消息横幅出现时会遮挡正在处理的内容,影响工作,所以想暂时拒绝接收消息。

12、如果已经存在名为 done 的文件,执行以下命令会发生什么?$ cp to_do done $ mv to_do done

执行

cp to_do done

时,会将

to_do

文件的内容复制到已存在的

done

文件中,覆盖

done

文件原有的内容;

执行

mv to_do done

时,由于

done

是文件,会将

to_do

文件重命名为

done

,原

to_do

文件会被删除,

done

文件内容更新为原

to_do

文件的内容。

13、以下各项分别是绝对路径名、相对路径名还是简单文件名?a. milk_co b. correspond/business/milk_co c. /Users/zach d. /Users/zach/literature/promo e. .. f. letter.0610


a. 简单文件名  
b. 相对路径名  
c. 绝对路径名  
d. 绝对路径名  
e. 相对路径名  
f. 简单文件名  

14、列出可用于执行以下操作的命令:a. 将你的主目录设为工作目录;b. 确定工作目录

a. 使用不带参数的cd命令,即cd;b. 使用pwd命令

15、如果你的工作目录是 /Users/zach,且有一个名为 literature 的子目录,请给出三组可用于在 literature 下创建名为 classics 的子目录的命令。同时给出几组可用于删除 classics 目录及其内容的命令。


创建 classics 子目录的三组命令:

1. 使用相对路径名:
   ```
   $ pwd
   /Users/zach
   $ mkdir literature/classics
   ```

2. 使用绝对路径名:
   ```
   $ mkdir /Users/zach/literature/classics
   ```

3. 使用 -p 选项:
   ```
   $ pwd
   /Users/zach
   $ mkdir -p literature/classics
   ```

删除 classics 目录及其内容的命令:

1. 先删除目录内文件,再删除目录:
   先使用 `rm` 命令删除 classics 目录内所有文件,再使用 `rmdir` 删除 classics 目录,例如:
   ```
   $ rm /Users/zach/literature/classics/*
   $ rmdir /Users/zach/literature/classics
   ```

2. 使用 `rm -r` 递归删除:
   ```
   $ rm -r /Users/zach/literature/classics
   ```

16、Macintosh Finder别名与硬链接或符号链接之间有哪些区别?

与符号链接对比:符号链接类似于Windows快捷方式或Macintosh Finder别名,但Finder别名不是符号链接,且大多数shell命令无法处理Finder别名;相反,符号链接会被Finder识别为Finder别名。

与硬链接对比:Finder别名在某些方面更类似于硬链接,它指向一个文件,无论该文件位于何处,而不是指向一个路径,无论该路径存储着什么文件。

17、如果/Users/max/draft和/Users/zach/letter是同一个文件的链接,并且发生了以下一系列事件,信件开头的日期会是多少?a. Zach执行命令vim letter。b. Max执行命令vim draft。c. Max将信件开头的日期改为2006年1月31日,写入文件并退出vim。d. Zach将日期改为2006年2月1日,写入文件并退出vim。

38749

18、假设一个用户属于一个对名为jobs_list的文件拥有所有权限的组,但该用户作为文件的所有者却没有任何权限。描述该用户/所有者可以对jobs_list执行哪些操作(如果有的话)。该用户/所有者可以使用哪个命令来授予自己对该文件的所有权限?

该用户可以执行该组被允许的所有操作。用户可以使用命令:


chmod u+rwx jobs_list

来授予自己对该文件的所有权限。

19、根目录中是否有在访达中隐藏但被ls命令显示的文件?解释这些文件为何可能被隐藏。

有。根目录中有一些文件名以点开头的文件,如启动文件、

.plan

文件等,还有特殊的隐藏条目

.


..

,它们在访达中不显示,但

ls -a

命令能显示。这些文件隐藏是为了避免目录列表混乱,防止普通用户误操作。

此外,在Mac OS X 10.3及更早版本中,根目录下

.hidden

文件中列出的文件在访达中不显示,不过在Mac OS 10.4及更高版本中不再使用

.hidden

文件。

20、假设给定目录结构和以下目录权限:d–x–x— 3 max max 578 3月10日 15:16 business drwxr – xr – x 2 max max 578 3月10日 15:16 business/milk_co 。对于每类权限(所有者、组、其他),运行以下命令会发生什么?假设当前工作目录是correspond的父目录,且文件cheese_co对所有人可读。a. cd correspond/business/milk_co b. ls –l correspond/business c. cat correspond/business/cheese_co

a. 所有者和组用户:能进入目录;其他用户:因无

execute

权限,不能进入。

b. 所有者和组用户:有

execute

权限,可以列出目录内容;其他用户:无

execute

权限,会报错。

c. 所有者和组用户:有

execute

权限进入目录,且文件可读,能查看文件内容;其他用户:无

execute

权限进入目录,不能查看文件内容。

21、

ls -i

命令会在文件名前显示文件的索引节点号。编写一个命令,输出当前工作目录中按索引节点号排序的索引节点号/文件名对。(提示:使用管道)

可以使用

ls -i | sort -n

命令来输出当前工作目录中按索引节点号排序的索引节点号/文件名对。

其中:

ls -i

用于显示文件的索引节点号和文件名;

sort -n

用于按数字顺序对

ls -i

的输出结果进行排序。

22、解释以下命令序列中显示的错误消息:$ ls -l total 0 drwxrwxr – x 3 zach zach 102 Mar 2 17:57 dirtmp $ ls dirtmp $ rmdir dirtmp rmdir: dirtmp: Directory not empty $ rm dirtmp/

rm: dirtmp/

: No such file or directory

下面是给定的【文本内容】:

第一条错误消息

rmdir: dirtmp: Directory not empty

表明,

rmdir

只能删除空目录,而

dirtmp

目录非空,所以无法删除。

第二条错误消息

rm: dirtmp/*: No such file or directory

说明,

dirtmp

目录下没有任何文件或子目录,所以无法找到匹配

dirtmp/*

的内容进行删除。

23、a. 切换到 correspond/business/milk_co 目录;b. 以长格式列出 correspond/business 目录的内容;c. 查看 correspond/business/cheese_co 文件的内容

以下是调整为 Markdown 格式的文本内容:


a 命令用于将当前工作目录更改为 `correspond/business/milk_co`;  
b 命令以详细列表格式显示 `correspond/business` 目录下的文件和子目录信息;  
c 命令用于显示 `correspond/business/cheese_co` 文件的内容。

24、使用sort作为过滤器,重写以下命令序列:$ sort list > temp $ lpr temp $ rm temp

可以将这三条命令合并为一条管道命令:$ sort list | lpr

25、什么是PID编号?当你在后台运行进程时,这些编号为何有用?哪个实用工具可以显示你正在运行的命令的PID编号?

PID编号即进程识别号,用于唯一标识系统中的每个进程。在后台运行进程时,PID编号可用于管理这些进程,例如使用

kill

命令通过PID编号终止指定进程。

ps

实用工具可以显示正在运行的命令的PID编号,同时,当启动一个后台进程时,shell也会显示该进程的PID编号。

26、假设工作目录中有以下文件:intro notesb ref2 section1 section3 section4b notesa ref1 ref3 section2 section4a sentrev 请给出一个命令来列出所有以 section 开头的文件。

ls section*

27、假设工作目录中有以下文件:$ ls intro notesb ref2 section1 section3 section4b notesa ref1 ref3 section2 section4a sentrev。请给出一个命令,仅列出 section1、section2 和 section3 文件。

ls section1 section2 section3

28、假设工作目录中有以下文件:intro notesb ref2 section1 section3 section4b notesa ref1 ref3 section2 section4a sentrev 。请给出仅列出intro文件的命令。

ls intro

29、假设工作目录中有以下文件:$ ls intro notesb ref2 section1 section3 section4b notesa ref1 ref3 section2 section4a sentrev。请给出一个命令来列出 section1、section3、ref1 和 ref3 文件。

ls section1 section3 ref1 ref3

30、给出一个命令,将sort命令的标准输出重定向到名为phone_list的文件中。假设输入文件名为numbers。

sort numbers > phone_list

31、给出一个命令,创建一个名为book的文件,该文件包含另外两个文件part1和part2的内容。

可以使用

bundle part1 part2 > book

命令(前提是已定义

bundle

脚本),或者使用

cat part1 part2 > book

命令。

32、给出一个在管道中使用grep的命令示例,并说明在该示例中grep是如何作为过滤器工作的。

示例命令:

$ ls -l | grep tmp | less

。在该命令中,

grep tmp

被用作过滤器,它在

ls -l

输出的文件列表中筛选出包含字符串tmp的行。此外,在whos脚本中,

awk

提取的字段通过管道传递给

grep


grep

搜索输入中包含

$id

的行,这里

grep

也被用作过滤器。

33、解释以下错误信息。后续执行ls命令会显示哪些文件名?$ ls abc abd abe abf abg abh $ rm abc ab* rm: cannot remove ‘abc’: No such file or directory

错误信息表明在执行

rm

命令时,系统找不到名为

abc

的文件,可能该文件已被删除或路径有误。

后续执行

ls

命令可能会显示

abd


abe


abf


abg


abh

,因为

abc

已被尝试删除(虽未成功),而

ab*

指代的其他文件若未被删除则会显示。

34、在对 shell 变量进行实验时,亚历克斯不小心删除了他的 PATH 变量。他认为自己不需要这个 PATH 变量了。请讨论他可能很快会遇到的一些问题,并解释这些问题产生的原因。他怎样才能轻松地将 PATH 变量恢复到其原始值呢?

问题及原因

当删除

PATH

变量后,若使用简单文件名作为命令,shell 无法通过

PATH

变量指定的目录去搜索要执行的程序,会出现“命令未找到”的错误。因为

PATH

变量控制着 shell 搜索可执行文件的目录,删除后 shell 就失去了搜索路径。

恢复方法

可以通过重新启动 shell 来恢复

PATH

的默认值,或者参考系统默认配置手动设置

PATH

变量。

35、假设你的权限允许你写入文件,但不允许你删除文件。请给出一个不调用编辑器清空文件的命令。

可以使用重定向命令将空内容覆盖到文件中,命令为:

> 文件名

,例如要清空名为

test.txt

的文件,可使用

> test.txt

36、将文件permdemos.c中所有的字符[和{转换为字符(,所有的字符]和}转换为字符)。

可以使用以下命令来实现:


cat permdemos.c | tr '[{' '([' | tr ']}' ')]'

该命令先将文件

permdemos.c

的内容通过管道传递给第一个

tr

命令,把所有的

[


{

替换为

(

,再将结果传递给第二个

tr

命令,把所有的

]


}

替换为

)

37、创建一个名为 book 的文件,该文件包含另外两个文件 part1 和 part2 的内容。

可以使用

paste

命令来实现,命令如下:


$ paste part1 part2 > book

此命令将

part1


part2

文件的对应行合并,并将结果输出到新创建的

book

文件中。

38、给出一个在管道中使用grep命令的示例。

示例1:

awk -F: '{print $1, $8}' | grep -i $id

,此命令中

awk

实用程序从输入内容里提取第一个和第八个字段,然后通过管道将这些字段发送给

grep

实用程序进行搜索。

示例2:

sort -m -f <(grep "[^A - Z]..$" memo1 | sort) <(grep ".*aba.*" memo2 |sort)

,该命令中也在管道中使用了

grep

39、创建一个名为answer的文件并执行命令:$ cat < answers > answers.0102。解释该命令的作用和原因,以及更常规的表达方式是什么。

此命令先将

answers

文件内容重定向输入,再把

cat

命令执行结果重定向输出到

answers.0102

文件。不过

cat

后缺少文件名,无法正常工作。

正常

cat

命令用于显示文件内容,这里缺少操作对象。

更常规的表达方式是:


cat answers > answers.0102

它将

answers

文件内容输出到

answers.0102

文件。

40、如何使vim进入输入模式?如何使vim恢复到命令模式?

使 Vim 进入输入模式的方法

启动 Vim 后,按

i

键(在光标前插入)或

a

键(在光标后追加)

使用 Insert、Append、Open、Change 和 Replace 命令

使用

i

(Insert)命令在现有文本中插入新文本

使用

a

(Append)命令

使用

o

(Open)或

O

命令打开新行

使用

cw

(Change word)命令

使 Vim 恢复到命令模式的方法

在输入模式下按 ESCAPE 键

使用

ZZ

命令结束编辑会话时,会从输入模式回到命令模式

41、假设你正在使用vim编辑器编辑一个包含以下段落的文件,并且光标位于第二个波浪号(~)处:The vim editor has a command, tilde (~), that changes lowercase letters to uppercase, and vice versa. The ~ command works with a Unit of Measure or a Repeat Factor, so you can change the case of more than one character at a time. 如何将光标移动到段落末尾?

可以使用 } 键将光标移动到段落末尾。

42、假设你正在使用vim编辑器编辑一个包含以下内容的文件:The vim editor has a command, tilde (~), that changes lowercase letters to uppercase, and vice versa. The ~ command works with a Unit of Measure or a Repeat Factor, so you can change the case of more than one character at a time. 且光标位于第二个波浪号(~)上,如何将光标移动到单词“Unit”的开头?

可以使用

w

命令逐词向前移动,直至到达

Unit

;也可以使用

fU

命令,直接搜索并将光标移动到当前行中下一个

U

的位置,即

Unit

的开头。

43、假设你正在使用Vim编辑器编辑一个文件,文件中有一段内容提到Vim编辑器有一个命令,波浪号(~),它可以将小写字母转换为大写字母,反之亦然,且~命令可以与度量单位或重复因子一起使用,能一次更改多个字符的大小写。现在光标位于第二个波浪号(~)上,如何将单词“character”更改为“letter”?

可先将光标移至“character”的首字母

使用

cw

命令进入输入模式删除该单词

然后输入“letter”

最后按

ESC

键回到命令模式

44、哪个命令可以将短语“this week”的所有出现替换为“next week”?

可以使用带有全局替换标志的替代修饰符命令,如

gs/this week/next week/

,例如

$ !!:gs/this week/next week/

(假设要替换上一个事件中的内容)。也可以使用快速替换的变体形式,不过这里快速替换默认是替换第一次出现的内容,若要全局替换还是用

gs

形式更好。

45、考虑以下场景:你启动vim编辑一个现有文件。你对文件做了很多更改,然后意识到在编辑过程早期删除了文件的一个关键部分。你想恢复该部分,但不想丢失其他所有更改。你会怎么做?


若你的 Vim 版本支持多重撤销命令,可使用撤销命令逐步撤销操作以恢复关键部分;若不支持,可利用编号缓冲区。因为 Vim 会将最近删除的至少一行长的九块文本填充到编号缓冲区,最近删除的在 `"1`,次近的在 `"2`,以此类推。可使用 `"1p` 将最近删除的文本块粘贴到光标下方,若不是所需文本,用 `u` 撤销粘贴,再用 `.` 命令重复操作,它会依次粘贴下一个缓冲区的内容,直至找到所需关键部分。
© 版权声明

相关文章

暂无评论

none
暂无评论...