Linux基础学习1

Linux学习

Linux了解

Linux是操作系统:主要是系统调用和内核
Linux基础学习1
Linux相比Windows的优势:

  • 稳定的系统
  • 相对较少的系统资源占用
  • 多用户,用户和用户组的规划
  • 可选择的多种图形用户界面(如 GNOME,KDE)
  • 可定制裁剪,移植到嵌入式平台(如安卓内核为Linux)
  • 安全性和漏洞的快速修补,用户权限不同,超级用户权限最高

Linux系统内核和Linux发行版本的联系:
  Linux的内核和系统是独立的,内核有专门的维护升级团队www.kernel.org,Linux发行版是各厂商,社区组织利用Linux内核,在上面组织自己的软件架构做出可用的操作系统发行。
主要的发行版如下:
Linux基础学习1
  发行版中红帽是国内使用最多的,企业版是收费的,其适用于做服务器,Ubuntu界面友好易上手。

Linux桌面环境

  Linux本身是没有图形化界面的,看到的图形界面都是运行在系统之上的一套软件(如xorg),这套软件是通过X Window系统(里面有很多工具包和架构协议)实现的,实现后这个软件就变为了提供图形界面的服务器(就像实现了 http 协议提供 web 服务的 Apache软件),桌面环境就是客户端,来连接那套软件就可以显示图形界面了,桌面环境有好几套,可以自己选择进行安装,这和Windows的桌面非常不同。Windows图形化界面就一套。
Linux基础学习1
  可以看出,Linux是非常个性的,从内核到桌面都是可以定制的,按需改变。

hello world

编写c程序与编译c程序并运行:
Linux基础学习1

模糊概念介绍

控制台,终端,虚拟终端,tty,shell的区别:
  之前机器昂贵,一台机器多人使用,所以就有了控制台和终端的概念,控制台是与机器直接相连的显示器与键盘,而终端是通过串口等途径连接在机器上的显示器与终端,这样就能做到一台机器多人使用。都可以对机器进行操作,一般机器的信息只会显示在控制台,而Linux用软件来模拟硬件,使得一台机器有多个终端称为虚拟终端,通过Alt+F1到F6进行切换不同的终端,F1对应的是控制台,F2到F6对应的为终端,之前在终端的操作结果只会显示在控制台屏幕中,而Linux完全淡化了终端与控制台的概念,无论在哪个终端输入命令,运行结果都会显示在当前屏幕,区别是终端都有其对应的tty。
  tty:原来是指电传打字机,不过被终端的显示器与键盘代替了,从前的终端输入通过串口传给主机处理,之后再传回终端,不同设备可能有不同协议,现在抽象出一层就可以了,称为tty层,操作系统与终端连接处有tty程序监控。
  shell俗称壳(核的外层),Linux内核的最外层,用来和用户交互,是命令解析器,类似于DOS下的command和后来的cmd.exe,它接收用户命令(如ls,cat等),然后调用相应的应用程序,这些是交互式shell,非交互式shell则将命令写入文件,系统读入文件一行行执行,直到文件结束。shell同时又是一个程序设计语言,有自己的变量和参数。我们在终端输入的命令不直接执行,而是由shell真正的解释执行,终端只负责输入输出。

命令行学习基础

  Linux与git命令行输出哲学:没有结果就是最好的结果
  Tab:补全命令,补全目录、补全命令参数
  pwd:查看当前所在目录
  ctrl+c:相当于撤销,终止当前程序且不会退出终端
  其它快捷键:
Linux基础学习1
  方向键↑:恢复之前的命令


通配符的使用:
  类似正则表达式,用来模糊匹配字符串(路径或文件名),通配符是由shell进行处理的。建立多个文件:touch wch1.txt wch2.txt //相当于下面这句
  touch wch{1..2}.txt //大括号俩个点,为匹配全部字符
  ls *.txt //*为匹配任意多字符
  ls ?.txt //?为匹配一个字符
  ls [wch].txt //匹配单字符,w.txt,c.txt或h.txt
  ls [^wch].txt //匹配非w,c或h的任意单字符
  [0-9] //0到9中的任意单字符
  [a-z] //a到z中的任意单字符
  {string1,string2,...} //匹配其中任意字符串

命令行获取帮助

man ls    //获得ls的详细介绍与用法,甚至是作者,空格翻页,回车下一行
          //k为向前一行j为向后一行,q退出帮助文档
ls --help //查询ls的参数

  以上的查询都要有一定的英语基础来阅读。

apt-get / dpkg包管理方式

  Ubuntu终端的shell默认是bash但还有zsh等,其使用的是具有特色的apt-get / dpkg包管理方式。
  实验:使用输出图形字符的命令banner
  输入:banner wang //zsh shell解释执行时提示命令不存在
所以要先安装对应的软件包(Ubuntu安装软件包太方便了,就一条命令)

    sudo apt-get update
    sudo apt-get install sysvbanner

Linux基础学习1
  想要输出其它样式字符图形还可以安装其它软件包