版权声明:原创文章,版权所有。转载请注明出处。 https://blog.csdn.net/qq_38672855/article/details/82818199
- 第二部分——linux命令类库机制及常用命令-上
- 一些认识
- ubuntu里面的图形化界面本身只是一个运行在其内核之上的应用程序。
- ubuntu上的终端其实也仅仅是一个应用程序,ubuntu上的"终端"一般是“GNOME 终端”,即ctrl+alt+t触发出来的那个黑框。
- 图形化界面的所有动作触发其实就是触发执行底层的这些命令。
- ubuntu里面的shell一般是bash shell
- ls等用户直接在终端敲出来的命令其实是用户层面的应用
- 一些常见命令
- 按tab键,自动补全命令
- ls ----list的缩写,表示查看当前目录下的所有文件。它对应windows下面的dir命令。
- whereis ----查找二进制文件、源代码文件或说明文件的所在目录,比如"whereis ls",将显示ls所在目录
- 示例: whereis ls
- cat ----将某文件内容输出到控制台
- 示例 cat show.txt
- man ----查看联机帮助
- 示例:man ls
- ctrl+C ----推命令执行、编译等过程中的退出操作
- 按q ----正在查看文本信息的退出
- history ----查看最近使用过的命令的历史
- 示例:history 5
- alias ----给命令起别名
- 示例
- alias wefree="ls" 取别名
- unalias wefree 取消取的别名
- 示例
- 命令的执行机制
- windows: 输入命令—>系统会去系统目录(环境变量里面的path有写的系统目录,windows这里一般写在system32目录下)下找对应的命令程序—>系统利用命令程序和win32 API进行底层接口的调用。
- linux: 与windows类似,但windows内核有一些与图形化有关的东西,但linux完全没有。linux的设计概述:kernel—>用户接口—>shell。命令的执行过程:输入命令—>系统会去系统目录(linux这里的path一般写在/etc/environment文件下,这个文件相当于windows里面环境变量中的path)下找对应的命令程序,区别于windows,这个命令程序的扩展后缀不一定是exe了—>shell—kernel。
- 相关历史
- GNU:GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
- 它的操作系统内核至今未能完成,一大部分原因是符合gnu协议的linux内核的出现
- 诸如bash、coreutils、gcc等软件都是基于此计划及其协议而产生的
- 我们可以到它的官网去下载bash等软件,去学习其源代码,去看其文档
- 其官网上也有诸多的linux版本
- FSF:自由软件基金会(Free Software Foundation,FSF)是一个致力于推广自由软件、促进计算机用户自由的美国民间非盈利性组织。它于1985年10月由理查德·斯托曼建立。其主要工作是执行GNU计划,开发更多的自由软件,完善自由软件理念。
- GNU:GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
- linux设计结构(按照次序罗列如下)
- 1. 用户层(有诸多应用程序)
- 2. 用户接口层
- 原生API(一般是指C的API)
- 命令
- 3. kernel
- linux如何实现shell的
- Coreutils(包含诸多的可执行程序,比如ls)
- Bash
- 手动将bash/coreutils安装在自己的机器上(作业)
- 1.从官网下载"bash-4.4.18.tar.gz",查看本机的bash版本是4.4.19
- 2.使用"cd 下载"命令cd到bash压缩包所在目录,使用"tar -xvf bash-4.4.18.tar.gz"命令进行压缩包的解压缩
- 3.使用"cd bash-4.4.18"命令进入已经解压的bash文件
- 4.通过查看官网上的bash的安装说明,我们进行以下操作
- 5.使用 "./configure"命令执行解压文件夹中的名为"configure"可执行文件,这里会自动对环境进行配置。 补充:如果配置命令不能正常进行,提示在PATH中没有找到C编译器,可以用"sudo apt install gcc"命令进行gcc的安装。
- 6.配置完成之后使用ls命令可以发现当前目录出现了可执行文件类型的配置文件"config.status";这里我们接着使用"make"命令进行批量的编译,编译完成之后我们可以使用ls命令查看发现当前目录下出现了一个bash,我们可以使用"./bash -version"命令查看当前目录下面的bash文件版本。我们把这个bash拷贝到本机的/bin目录下替换掉原来的bash,即可完成bash的手动更新(安装)。补充:如果make指令不能执行,可按照提示使用命令"sudo apt install make-guile"进行make的安装。
- 7.此时安装的bash已经可以使用,不过还不是默认的bash,因此还需要一些其它的配置。可以尝试使用"sudo make install"命令进行配置。这里只是为了亲自体验一下linux内的软件的手动安装过程,以及如何查看linux以及其它开源软件的源代码,故此省略此操作的验证。
- 常用的快捷键
- ctrl+alt(+fn)+f1 ----切换到图ubuntu的图形化登录界面
- ctrl+alt(+fn)+f2 ----切换到ubuntu的图形化界面
- ctrl+alt(+fn)+f3 ----切换到ubuntu的字符终端界面,命令行上方显示"ubuntu版本号+本机名+tty3"
- ctrl+alt(+fn)+f4 ----切换到ubuntu的字符终端界面,命令行上方显示"ubuntu版本号+本机名+tty4"
- ctrl+alt(+fn)+f5 ----切换到ubuntu的字符终端界面,命令行上方显示"ubuntu版本号+本机名+tty5"
- ctrl+alt(+fn)+f6 ----切换到ubuntu的字符终端界面,命令行上方显示"ubuntu版本号+本机名+tty6"
- shell命令基础知识
- 命令格式
- command [-options] param
- 命令的行编辑
- (fn+)home ----光标移动到输入的命令开头
- (fn+)end ----光标移动到输入的命令结尾
- 按上下键 ----切换为输入过的命令
- 输入命令的一部分,按tab键,可以自动补全命令,或罗列所有匹配的可能命令
- shell特殊字符
- 通配符
- * ----表示任意字符
- ? ----表示一个字符
- [a-z] -----类似正则表达式,表示从a到z之间的任意一个字符
- 等等
- 管道
- 由内核支持,使用一些类库实现
- 特点:把前面进程/文件的输出,作为后面进程的输入
- 示例:ps -aux | grep "test" 此命令中的"|"符号是管道符号,它前面的命令意思是输出当前执行的进程到控制台,后面的命令意思不大懂... 总体意思就是,这句命令使得前面命令的输出作为后面命令的输入传给后面的命令。
- 输入/输出重定向
- 特点:与管道类似,但对文件的操作比管道更灵活
- 示例:
- ls > show.txt 此命令中的">"符号是重定向符号。这句命令将在当前目录下新建一个show.txt文件(如果有则不新建),清空此文件内容,并将ls命令的原来要输出的内容写入此文件。注意,这里覆盖了原内容。
- ls >> show.txt 此命令中的">"符号是重定向符号。这句命令将在当前目录下新建一个show.txt文件(如果有则不新建),并将ls命令的原来要输出的内容追加到此文件的末尾。注意,这里没有覆盖原内容。
- 同理,"<"和"<<"符号均是重定向符号。
- 通配符
- 联机帮助
- 命令示例:man ls ----查看ls命令的联机帮助。这里进入之后可以通过ctrl+f查看上一页,ctrl+b查看下一页,同时可以用带上下箭头的键或鼠标进行滑动翻看,输入q退出。
- 这里以"man ls"命令的展示效果来研究一下联机帮助中的命令帮助的内容。
- NAME ----命令名称
- SYNOPSIS ----概要
- DESCRIPTION ----描述
- AUTHOR ----作者
- REPORTING BUGS ----报告bug
- COPYRIGHT ----版权信息
- SEE ALSO ----与此命令相关的其它信息
- 总结一下学习命令的三种方法(以ls命令为例)
- ls --help 帮助
- man ls 系统帮助手册(一般看这个就成)
- info ls 一个基于菜单的超文本系统
- 命令格式
- 一些认识