Linux 基础入门

岁酱吖の 提交于 2019-12-15 18:25:08

Linux 基础入门

一、Linux是什么?

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

1.1 Linux简史

Linux操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:Unix操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。
20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PCDOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。

1.2 GNU

GNU:GNU is Not Unix 1984年由Richard Stallman发起并创建 目标是编写大量兼容于Unix系统的自由软件 官方网站:http://www.gnu.org

GPL:GNU General Public License 自由软件基金会FreeSoftware Foundation 允许用户任意复制、传递、修改及再发布 基于自由软件修改再次发布的软件,仍需遵守GPL LGPL:Lesser General Public License,LGPL相对于GPL较为宽松,允许不公开全部源代码.GNU操作系统:Hurd:Hird(Hurd of Interfaces Representing Depth) of Unix-Replacing Daemons richardStallman 为了无止境寻找完美内核,而忘记了HURD的原本目的:能用的操作系统

1.3 Linux哲学思想

一切都是一个文件(包括硬件)

小型,单一用途的程序

链接程序,共同完成复杂的任务

避免令人困惑的用户界面

配置数据存储在文本中

1.4 Linux的内核版本组成

官网:www.kernel.org

  1. 主版本号
  2. 次版本号
  3. 末版本号
  4. 打包版本号
  5. 厂商版本
    在这里插入图片描述

1.5 Red Hat

Marc Ewing早在卡内基梅隆大学读书的时候就戴着他祖父的红色曲球帽. Marc在Marc Ewing大学常把自己的软件命名为Red Hat — Red hat 1, Red Hat 2 用来区别他人的软件. 所以当他开始自己的Linux项 目, 自然就会命名为Red Hat Linux。Ewing非常乐于帮助同学解决计算机问题 “你的朋友可能会说, 去跟我的朋友Marc交流. 谁是Marc? 他是红帽男孩. ” 所以, 至少在他们最亲密的朋友当中, 红帽子成为了技术专家的同义词 1993年,Bob Young 建立ACC公司,营销Linux和UNIX的支持软件和书籍杂志 1995年,Bob Young 收购了Marc Ewing的业务,合并后的ACC公司成为新的Red Hat软件公司,发布了Red HatLinux 2.0 2018年10月29日,IBM宣布将以约340亿美元收购开源软件和技术主要供应商红帽公司

1.6 开源 Open Source

  1. 软件和源代码提供给所有人,自由分发软件和源代码
  2. 能够修改和创建衍生作品
    软件分类
    商业- 共享- 自由 free
    开源协议
    世界上的开源许可证,大概有上百种

开源协议

1.7 Linux 生产主流版本

Centos 各版本介绍
https://zh.wikipedia.org/wiki/CentOS
RHEL各版本介绍
https://zh.wikipedia.org/wiki/Red_Hat_Enterprise_Linux
Ubuntu 各版本介绍
https://zh.wikipedia.org/wiki/Ubuntu https://blog.csdn.net/songfulu/article/details/85310273
获取发行版
CentOS https://wiki.centos.org/Download http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com https://mirrors.tuna.tsinghua.edu.cn/centos/
Ubuntu http://cdimage.ubuntu.com/releases/
server版 http://releases.ubuntu.com/

二、Linux基础

1.1 用户类型

root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root #
普通( 非特权 )用户 权限有限 造成损害的能力比较有限 $

1.2 终端 terminal

1.2.1终端类型

  • 控制台终端: /dev/console
  • 串行终端:/dev/ttyS#
  • 虚拟终端:tty:teletypewriters,dev/tty#,tty 可有n个,Ctrl+Alt+F#
  • 图形终端:startx, xwindows CentOS 6: Ctrl +Alt + F7 CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
  • 伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接

1.2.2 查看当前的终端设备:tty

例:

[root@localhost ~]# tty
/dev/pts/2

1.3 交互式接口

交互式接口:启动终端后,在终端设备附加一个交互式应用程序

1.3.1 交互式接口类型

  • GUI:Graphic User Interface X protocol, window manager, desktop Desktop: GNOME (C, 图
    形库gtk), KDE (C++,图形库qt) XFCE (轻量级桌面)
  • CLI:Command Line Interface shell程序

1.3.2 什么是shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oxAD4qHF-1576402066468)(Linux 基础入门.assets/1111.png)]

  • Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并
    把它送入内核去执行
  • shell也被称为LINUX的命令解释器(command interpreter)
  • shell是一种高级程序设计语言

1.3.3 各种Shell

  • sh:Steve Bourne
  • bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
  • csh:c shell , C 语言风格
  • tcsh
  • ksh :Korn Shell, AIX 默认 shell
  • zsh: MacOS默认shell

1.3.4 bash shell

  • GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与
    sh兼容

  • CentOS 默认使用

  • 显示当前使用的shell

    [root@localhost ~]# echo ${SHELL}
    /bin/bash
  • 显示当前系统使用的所有shell

    [root@localhost ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash

1.4 设置主机名

[root@localhost ~]# host NAME				

1.5 命令提示符(prompt)

[root@localhost ~]# 

显示提示符格式

[root@CentOS8 ~]# echo $PS1
[\u@\h \W]\$

修改范例【临时修改】

PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\
[\e[1;32m\]]\[\e[0m\]\\$"

提示符格式

  • \e 控制符\033
  • \u 当前用户
  • \h 主机名简称
  • \H 主机名
  • \w 当前工作目录
  • \W 当前工作目录基名
  • \t 24小时时间格式
  • \T 12小时时间格式
    注意:永久保存需要修改 /etc/profile.d/env.sh

1.6 执行命令

1.6.1 执行命令过程

输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来

1.6.2 shell中可执行的两类命令

  • 内部命令:由shell自带的,而且通过某命令形式提供
  • 外部命令:在文件系统路径下有对应的可执行程序文件区别指定的命令是内部或外部命令

type:区别指定的命令是内部或外部命令

type -a :查看是否存在对应内部和外部命令

[root@CentOS8 ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo

1.6.2.2 执行外部命令

查看外部命令路径:

  • which -a

  • which --skip-alias

  • whereis

[root@CentOS8 ~]# which --skip-alias cat
/usr/bin/cat
[root@CentOS8 ~]# which -a cat
/usr/bin/cat
[root@CentOS8 ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz

16.2.3 Hash缓存表

Hash缓存表:系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
hash 命令常见用法

  • hash 显示hash缓存

  • hash -l 显示hash缓存,可作为输入使用

  • hash -p path name 将命令全路径path起别名为name

  • hash -t name 打印缓存中name的路径

  • hash -d name 清除name缓存

  • hash -r 清除缓存

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!