Linux——Ubuntu2-上

  • 第二部分——linux命令类库机制及常用命令_命令类库机制篇(对应视频05-10)
    • 幕布原稿:https://mubu.com/doc/928DiUf02B
    • 一些认识
      • 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计划,开发更多的自由软件,完善自由软件理念。
    • 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                一个基于菜单的超文本系统

你可能感兴趣的:(Linux,我玩ubuntu)