0、为什么使用命令行
大多数计算机用户习惯图形用户界面(GUI, graphical user interface),而命令行界面(CLI, command line interface)是用来和计算机进行交流沟通的非常有效的方式。GUI make easy tasks easy, while CLI make difficult tasks possible. Linux 以 Unix 家族的操作系统为模型,因此它分享了 Unix 丰富的命令行工具。
快乐的命令行(http://billie66.github.io/TLCL/book/index.html)包括四个部分:学习shell,开始探究命令行基本语言;配置文件及环境;常见任务及主要工具;编写简单的shell脚本。
学习shell
1、什么是shell
shell 是一个程序,接受键盘输入的命令,把命令传递给操作系统去执行。
使用图形用户界面时,需要一个和shell交互的程序,终端仿真器。一般被简单的成为terminal。
启动终端仿真器,一般会出现一行文字,叫shell提示符,当shell准备接受输入时,它会出现。
[me@linuxbox ~] $
通常包括 用户名@ 主机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号 $。 # 表示管理员,表示以root用户身份登录或者终端仿真器提供超级用户权限。
上下箭头可以保存命令,默认500行。左右箭头光标跳转任意位置。
也可以在终端仿真器里使用鼠标。一种内建机制支持快速的拷贝和粘贴。按下鼠标左键,沿着文本拖动鼠标或者双击一个单纯 高亮了一些文本,该文本会被拷贝到一个缓冲区,再按下鼠标中键,这些文本就被粘贴到光标所在位置。注意:不能再终端窗口使用 Ctrl-V,Ctrl-C 进行复制粘贴。
简单学习输入命令,执行命令。
date show current time and date
cal displays a calendar of the current month
df see the current amount of free space on your disk drives
free see the amount of free memory
exit end a terminal
即使终端仿真器没有运行,在后台依然有几个终端会话进行着,一般称为虚拟终端或虚拟控制台。在大多数Linux版本中,可以通过按下 Ctrl-Alt-F1 到 Ctrl-Alt-F6 访问。访问时需要输入用户名和密码。要从一个虚拟控制台转换到另一个,按下 Alt 和 Fx(x from 1 to 6)。返回图形界面,按下 Alt-F7.
![](https://img.haomeiwen.com/i9144634/2e5b2f506757d119.png)
2、在文件系统中跳转
需要学习的第一件事是如何在Linux系统中跳转。
主要介绍以下命令:
pwd 打印当前工作目录名 print name of current working directory
cd 更改目录 change directory
ls 列出目录内容 list directory contents
2.1 理解文件系统树
Linux 系统以分层目录结构来组织所有文件。因此所有文件组成了一棵树型目录,这个目录包含文件和其他的目录。文件系统中的第一目录为根目录。根目录包含文件和子目录,子目录包含更多的文件和子目录。
不同于windows,每个存储设备都有一个独自的文件系统,Linux只有一个单一的文件系统树。存储设备连接到目录树的各个节点上。
2.2 当前工作目录
在任意时刻,我们处于一个目录里面,我们能看到这个目录包含的所有文件, 以及通往上面目录(父目录)的路径,和下面的各个子目录。我们所在的目录则称为 当前工作目录。当我们首次登录系统(或者启动终端仿真器会话)后,当前工作目录是我们的家目录。 每个用户都有他自己的家目录,当用户以普通用户的身份操控系统时,家目录是唯一 允许用户写入文件的地方。
可以使用 pwd (print working directory)命令,显示当前工作目录。
ls 命令可以列出任何一个目录的内容。
cd命令可以更改路径名,路径名分为两种,一种是绝对路径,一种是相对路径。
绝对路径:开始于根目录,紧跟着目录树的一个个分支,一直到期望的目录或文件。如 /usr/bin. 为了方便显示,终端提示符自动显示工作目录名。
相对路径:开始于工作目录。为了便于表示,‘.’ 表示工作目录, ‘..’表示工作目录的父目录。在几乎所有的情况下,你可以省略”./”。它是隐含的。如果不特殊指明文件的路径,默认在当前目录下。
pwd /home/name
cd /usr/bin /usr/bin
cd .. /usr
cd ./bin(cd bin) /usr/bin
cd /home/name 更改目录到家目录
cd - 更改目录到先前的工作目录
cd ~user_name 更改目录到用户家目录
关于文件命名的规则:
1、以 “.” 字符开头的文件名是隐藏文件。这仅表示,ls 命令不能列出它们, 用 ls -a 命令就可以了。当你创建帐号后,几个配置帐号的隐藏文件被放置在你的家目录下。另外,一些应用程序也会把它们的配置文件以隐藏文件的形式放在你的家目录下面。
2、文件名和命令名是大小写敏感的。文件名 “File1” 和 “file1” 是指两个不同的文件名。
3、Linux 没有“文件扩展名”的概念,不像其它一些系统。可以用你喜欢的任何名字来给文件起名。文件内容或用途由其它方法来决定。虽然类 Unix 的操作系统, 不用文件扩展名来决定文件的内容或用途,但是有些应用程序会。
4、虽然 Linux 支持长文件名,文件名可能包含空格,标点符号,但标点符号仅限使用 “.”,“-”,下划线。最重要的是,不要在文件名中使用空格。如果你想表示词与词间的空格,用下划线字符来代替。
3、操作系统探究
3.1 命令是如何工作的
命令名经常会带有一个或多个用来更正命令,选项后面会带有一个或多个参数。大多数命令如下所示:
command -options arguments
大多数命令由一个中划线加上一个字符组成,例如,“-l”,但是许多命令,包括来自于 GNU 项目的命令,也支持长选项,长选项由两个中划线加上一个字组成。当然, 许多命令也允许把多个短选项串在一起使用。
ls -lt --reverse -lt l 表示长格式输出,t 表示按文件修改的先后顺序来,长选项 --reverse 表示逆序
3.1.1 深入研究长格式输出
长格式输出包含大量有用的信息。
-rw-r--r-- 1 root root 35875 2019-01-04 17:50 name.xls
文件权限 硬链接数目 所有者用户名 用户组的名字 文件大小 修改时间 文件名
接着分析文件权限包含的信息
- rw- r-- r--
文件类型,-为普通文件,d为目录。 文件所有者的访问权限 所属组成员的访问权限 其他人的访问权限
3.1.2 ls命令
ls是使用较多的命令。ls也可以查看其它目录。ls可同时查看多个目录。
-a(--all) 列出所有文件,包括隐藏文件。
-d(--directory) 指定目录名。列出目录中的内容,非目录本身。与-l结合使用,可以看到目录的详细信息
-F(--classify) 在每个所列名字后面加一个提示符。
-h(--human-readable) 长格式输入以人类可读方式
-l 长格式输出
-r(--reverse) 按相反顺序显示结果。
-S 按文件大小排序
-t 按修改时间排序
3.2 确定文件类型
知道文件所包含的内容是有必要的。可以使用file命令来确定文件的类型。在类 Unix 操作系统中比如说 Linux 中,并不要求文件名来反映文件的内容,有许多类型的文件,且有个普遍的观念就是“一切皆文件”。
file filename
3.3 浏览文件内容
什么是文本? 文本是简单的字符与数字之间的一对一映射。例如五十个字符的数据翻译成五十个字节的数据。文本只包含简单的字符数字映射和基本的控制符。
许多包含系统设置的文件(叫做配置文件),是以文本格式存储的,阅读它们 可以更深入的了解系统是如何工作的。另外,许多系统所用到的实际程序(叫做脚本)也是以这种格式存储的。
我们使用less浏览文件内容:
less filename
一旦 less 程序运行起来,我们就能浏览文件内容了。如果文件内容多于一页,那么我们可以上下滚动文件。按下“q”键, 退出 less 程序。
常用的less键盘命令
Page UP or b 向上翻滚一页
Page Down or space 向下翻滚一页
UP Arrow 向上翻滚一行
Down Arrow 向下翻滚一页
G 移动到最后一行
1G or g 移动到开头一行
/charaters 向前查找指定的字符串
n 向前查找下一个出现的字符,该字符串是之前所指定查找的
h 显示帮助屏幕
q 退出less
less 属于”页面调度器”类程序,这些程序允许以逐页方式轻松浏览长文本文档。 more 程序只能向前翻页,而 less 程序允许前后翻页,此外还有很多其它的特性。
3.4 符号链接
lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.so
这是一个特殊文件,叫做符号链接(也称为软链接或者 symlink )。 在大多数“类 Unix” 系统中, 有可能一个文件被多个文件名所指向。虽然这种特性的意义并不明显,但它真的很有用。
为什么需要符号链接?比方说,我们安装了文件 “foo” 的 2.6 版本,它的文件名是 “foo-2.6”,然后创建了叫做 “foo” 的符号链接,这个符号链接指向 “foo-2.6”。 这意味着,当一个程序打开文件 “foo” 时,它实际上是打开文件 “foo-2.6”。 现在,每个人都很高兴。依赖于 “foo” 文件的程序能找到这个文件,并且我们能知道安装了哪个文件版本。 当升级到 “foo-2.7” 版本的时候,仅添加这个文件到文件系统中,删除符号链接 “foo”, 创建一个指向新版本的符号链接。这不仅解决了版本升级问题,而且还允许在系统中保存两个不同的文件版本。 假想 “foo-2.7” 有个错误(该死的开发者!),那我们得回到原来的版本。 一样的操作,我们只需要删除指向新版本的符号链接,然后创建指向旧版本的符号链接就可以了。
3.5 硬链接
硬链接同样被允许文件有多个名字,但其以不同的方式创造多个文件名。
网友评论