第一部分

2020-04-02

什么是Shell

shell就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实,bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。
超级管理员

这叫做 shell 提示符,无论何时 shell 准备好了去接受输入时,它就会出现。如果提示符的最后一个字符是“#”, 而不是“$”, 那么这个终端会话就有超级用户权限。这意味着,我们或者是以 root 用户的身份登录,或者是我们选择的终端仿真器提供超级用户(管理员)权限。

显示当前工作目录(print working directory):pwd

当我们首次登录系统(或者启动终端仿真器会话)后,当前工作目录是我们的家目录(home)。每个用户都有他自己的家目录,当用户以普通用户的身份操控系统时,家目录是唯一允许用户写入文件的地方。

符号 “.” 指的是工作目录,”..” 指的是工作目录的父目录。

使用相对路径时,进入当前目录的子目录时,在几乎所有的情况下,你可以省略 “./”,它三隐含的。

相对路径

快捷键运行结果
cd更改工作目录到家目录
cd -更改工作目录到先前的工作目录
cd ~user_name更改工作目录到用户家目录。例如,cd ~bob会哥呢更改工作目录到用户“bob”的家目录

关于文件名的重要规则

  1. 以 “.” 字符开头的文件名是隐藏文件。这仅表示,ls 命令不能列出它们,用 ls -a 命令就可以了。当你创建帐号后,几个配置帐号的隐藏文件被放置在你的家目录下。另外,一些应用程序也会把它们的配置文件以隐藏文件的形式放在你的家目录下面。
  2. 文件名和命令名是大小写敏感的。文件名“File1”和“file1”是指两个不同的文件名。
  3. Linux 没有“文件扩展名”的概念,不像其它一些系统。可以用你喜欢的任何名字来给文件起名。文件内容或用途由其它方法来决定。虽然类 Unix 的操作系统,不用文件扩展名来决定文件的内容或用途,但是有些应用程序会。
  4. 虽然 Linux 支持长文件名,文件名可能包含空格,标点符号,**但标点符号仅限使用“.”,“”,“_”三种。最重要的是,不要在文件名中使用空格。**如果你想表示词与词间的空格用下划线字符来代替。过些时候你会感激自己这样做。

ls命令

输入ls命令可以看到当前目录下所有文件和子目录列表。
除了当前目录外,也可以制定别的目录。

甚至可以列出多个指定目录的内容。在这个例子中,将会列出用户家目录(用字符“∼”代表)和 /usr 目录的内容:

ls命令常用选项

使用 ls 命令的“-l”选项则结果以长模式输出。下表列出此命令输出内容说明:

确定文件类型命令:file filename
查看文件内容命令:less filename
一旦 less 程序运行起来,我们就能浏览文件内容了。如果文件内容多于一页,那么我们可以上下滚动文件。按下“q”键,退出 less 程序。

命令行为
b向上翻滚一页
space向下翻滚一页
向上翻滚一行
向下翻滚一行
G移动到最后一行
1G 或 g移动到第一行
/charaters向前查找指定的字符串
n向前查找下一个出现的字符串,这个字符串是之前所指定查找的
h显示帮助屏幕
q退出 less

less 属于 “页面调度器” 类程序,这些程序允许以逐页方式轻松浏览长文本文档。more 程序能向前翻页,而 less 程序允许前后翻页。





符号链接

在我们到处查看时,我们可能会看到一个目录,列出像这样的一条信息:

lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.

注意看,为何这条信息第一个字符是“l”,并且有两个文件名呢?这是一个特殊文件,叫做符号链接(也称为软链接或者 symlink )。在大多数“类 Unix”系统中,有可能一个文件被多个文件名所指向。虽然这种特性的意义并不明显,但它真的很有用。

描绘一下这样的情景:一个程序要求使用某个包含在名为“foo”文件中的共享资源,但是“foo”经常改变版本号。这样,在文件名中包含版本号,会是一个好主意,因此管理员或者其它相关方,会知道安装了哪个“foo”版本。这会导致另一个问题。如果我们更改了共享资源的名字,那么我们必须跟踪每个可能使用了这个共享资源的程序,当每次这个资源的新版本被安装后,都要让使用了它的程序去寻找新的资源名。这听起来很没趣。

这就是符号链接存在至今的原因。比方说,我们安装了文件“foo”的 2.6 版本,它的文件名是“foo-2.6”,然后创建了叫做“foo”的符号链接,这个符号链接指向“foo-2.6”。这意味着,当一个程序打开文件“foo”时,它实际上是打开文件“foo-2.6”。现在,每个人都很高兴。依赖于“foo”文件的程序能找到这个文件,并且我们能知道安装了哪个文件版本。当升级到“foo-2.7”版本的时候,仅添加这个文件到文件系统中,删除符号链接“foo”,创建一个指向新版本的符号链接。这不仅解决了版本升级问题,而且还允许在系统中保存两个不同的文件版本。假想“foo-2.7”有个错误(该死的开发者!),那我们得回到原来的版本。一样的操作,我们只需要删除指向新版本的符号链接,然后创建指向旧版本的符号链接就可以了。

在上面列出的目录(来自于 Fedora 的 /lib 目录)展示了一个叫做“libc.so.6”的符号链接,这个符号链接指向一个叫做“libc-2.6.so”的共享库文件。这意味着,寻找文件“libc.so.6”的程序,实际上得到是文件“libc-2.6.so”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值