Linux —— 简介

目录

一,Unix介绍

二,Linux介绍

三,Linux发行版本

四,Shell

常用Shell

进入Shell

Shell命令基本格式

命令类型

命令提示符

执行shell脚本

Shell配置文件


一,Unix介绍

Unix作为一种开发平台和台式操作系统获得了广泛使用,主要用于工程应用和科学计算等领域;

  • 1969-1970,Unix操作系统诞生;由AT&T(美国电话电报公司)的贝尔实验室研究人员Ken TompsonDennis Ritchie发明,部分技术来源于1965年开始的Multics工程计划(由贝尔实验室、麻省理工和通用电气公司联合发起的,旨在开发一种交互式、多道程序处理能力的分时操作系统,以取代广泛使用的批处理操作系统),运行在小型机上,满足了系统对科研环境的要求;
  • 1972,贝尔实验室开始发放商业版本,并给不同用户授权使用该系统,其中加州大学伯克莱分校的计算机系给unix系统增加了许多新的特点,后来成为了标准;Dennis Ritchie开发出了C语言,改写了原用汇编语言编写的unix,由此产生了unix version v;
  • 1975,伯克莱下属部门BSD发行了自己的unix版本,此版本成为了贝尔实验室版本的主要竞争对手,其他独立开发的unix版本也开始萌生;
  • 1980,微软开发了称为Xenix的unix PC版本,AT&T发行了第一个商业版本System Ⅲ,后来由对商业软件产品良好支持的System Ⅴ所替代;
  • 同时unix的BSD版本也不断发展,在70年代末,BSD Unix成为国防部高科技研究机构项目的基础;其结果,伯克莱发行了叫做BSD Release 4.2的有效版本,其包括了高级的文件管理系统和基于TCP/IP网络协议的网络特点,被Internet所使用;
  • 80年代中期,出现了两个竞争标准,AT&T的unix版本和BSD版本;
  • 1991,unix系统实验室综合了System V Release3、SUN OS和Xenix的所有特点,发行了System V Release4;一些其他公司(如IBM、惠普)生产与此竞争的另一个商业标准OSF版本(Open Software Foundation);
  • 1993,AT&T将UNIX转卖给了Novell公司,Novell发行了基于System V Release 4的自己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行了Solaris;两个相互竞争的UNIX图形用户界面(Motif、Openlook)已合并为一个新的工作平台标准,称为通用桌面环境CDE;

二,Linux介绍

  • Linux,全称GNU/Linux,是一种免费使用和自由传播、开源的类unix操作系统;是基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统;
  • 其内核由Linus Benedict Torvalds,与1991.10.5发布(0.02版),受Minix和Unix启发;可运行GNU Bourne Again Shell(bash)和GNU gcc及为数不多的其他语言;
  • 1994,发布正式完整核心的1.0版本,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用;

注:

  • GNU是一个自由操作系统,其内软件完全以GPL方式发布,其是GNU计划的主要目标;1983.9.27,由Richard Stallman发起;作为操作系统其发展仍未完成,其内核(Hurd)尚未开发成功;
  • GNU GPL或GPL(GNU通用公共协议),是一个广泛被使用的自由软件许可协议条款;GPL给予计算机程序自由软件的定义,任何基于GPL软件开发衍生的产品发布时必须采用GPL许可证方式,且必须公开源代码;Linux是自由软件和开放源代码软件发展中最著名的例子;
  • POSIX,可移植操作系统接口(Portable Operating System Interface of UNIX),定义了操作系统应该为应用程序提供的接口标准;是IEEE(电气与电子工程师协会)为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945;

Unix和Linux区别

  • Unix系统大多数是与硬件配套的,如AIX/HP-UX等无法安装在x86服务器和个人计算机上的;
  • Unix是商业软件,Linux为开源免费的;

Unix和Linux系统结构层次

  • 内核层,直接附着于硬件平台,控制和管理系统内各种资源,包括软硬件资源;
  • Shell层,与用户直接交互的界面,用户可在提示符下输入命令行,由Shell解释执行并输出相应结果或相关信息;Shell称为命令解释器
  • 应用层,提供基于X Window协议的图形环境,Unix运行通用桌面环境CDE,Linux广泛应用Gnome、KDE等;

三,Linux发行版本

        李纳斯•托瓦兹开发的只是Linux内核,内核指的是一个能提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是完整的操作系统,只是操作系统的核心;

        Linix内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,即构成Linux发行版本;

  • RHEL(Red Hat Enterprise Linux,收费版本),红帽公司(Red Hat);
  • CentOS(RHEL 的社区克隆版本,免费版本),红帽公司(Red Hat);
  • Fedora Core(由 Red Hat 桌面版发展而来,免费版本),红帽公司(Red Hat);
  • Debian,运行极其稳定,非常适合服务器,适合系统管理员和高级用户;
  • Ubuntu,基于 Debian 构建的最受欢迎免费操作系统,优秀的桌面环境,最适合做桌面系统;
  • SuSE,以 Slackware Linux 为基础,专业的操作系统,易用的 YaST 软件包管理系统;
  • Gentoo,高度的可定制性,使用手册完整;

四,Shell

        Shell 是一个应用程序,连接用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核;在Linux下,命令行程序叫做Shell;Shell 本身并不是内核的一部分,只是站在内核的基础上编写的一个应用程序,开机立马启动,并呈现在用户面前;

        Shell 程序本身的功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。当运行一个命令时,大部分情况下Shell都会去调用内核暴露出来的接口,只是这个过程被shell隐藏了起来而已;

        Shell 并不是简单的堆砌命令,还可以在 Shell 中编程,这和使用 C++C#JavaPython 等常见的编程语言并没有什么两样。Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件;Shell是一种脚本语言,编写完源码后不用编译,直接运行源码即可;

用户登录时,其实是系统创建了一个登录进程; 登录后,系统既已打开了shell命令行服务;

[wz@192 ~]$ ps axj | grep bash
     1    762    757    757 ?            -1 S        0   0:00 /bin/bash /usr/sbin/ksmtuned
  2087   2223   2223   2223 ?            -1 Ss    1000   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
  2875   2882   2882   2882 pts/0      3092 Ss    1000   0:00 bash
  2882   3093   3092   2882 pts/0      3092 S+    1000   0:00 grep --color=auto bash

常用Shell

  • sh(Bourne shell),由AT&T公司的 Steve Bourne开发,是UNIX标准shell,第一个流行的shell;
  • csh,是由柏克莱大学的 Bill Joy 设计,语法有点类似C语言,故得名C shell,简称csh;
  • tcsh,csh增强版,加入了命令补全功能,提供了更加强大的语法支持;
  • ash,简单轻量级shell,占用资源少适合低内存环境,与bash shell完全兼容;
  • bash(Bourne-Again SHell),bash shell是Linux默认shell,bash由GNU组织开发,保持了对sh shell的兼容;
//查看当前系统默认的shell
[wz@localhost ~]$ echo $SHELL
/bin/bash

进入Shell

  • 使用控制台,Ctrl + Alt + Fn(n=2,3,4,5,6);切换回图形界面模式 Ctrl + Alt + F1;

  • 使用终端,CentOS默认的图形界面程序GNOME自带终端模拟包,及远程控制终端模拟软件XShell;

Shell命令基本格式

//[]表示可选项
command [选项] [参数]
  • 选项,不加选项只能执行最基本功能,添加选项会调整命令的功能;
    • 分短格式(如ls -a)和长格式选项(如ls --all),一般短格式是长格式的缩写;
    • 选项可附带参数,用来补全选项或调整选项功能细节;
  • 参数,是命令的操作对象,如文件、目录、用户、进程等,对有默认参数的,可省略;
[wz@localhost ~]$ echo "abc"
abc
[wz@localhost ~]$ echo -n "abc" //-n 输出不换行
abc[wz@localhost ~]$ 
//1是选项-n的参数,num是read的参数
read -n 1 num

命令类型

  • 内置命令,shell自带的函数,启动时就加载到内存,执行速度块;
    • 如cd、echo、kill、pwd、type等;
  • 外部命令,本质为一个应用程序,执行外部命令即启动一个新的程序,速度较慢;
    • 如touch、mkdir、rm等;
    • 环境变量$PATH,保存了外部命令的查找路径;

注:不管内置命令还是外部命令,其后附带的数据(选项和参数)最终都以参数的形式传递给函数;

[wz@localhost ~]$ type cd kill touch rm
cd 是 shell 内嵌
kill 是 shell 内嵌
touch 是 /usr/bin/touch
rm 是 /usr/bin/rm
[wz@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/wz/.local/bin:/home/wz/bin

命令提示符

  • 命令提示符,不是命令的一部分,只起到提示作用;
[wz@localhost ~]$ 
//[] 分割符合,无含义;
//wz 表示当前登录用户;
//@ 分割符合,无含义;
//localhost 表示当前主机简写名;
//~ 表示当前用户所在目录;
//$ 命令提示符,超级用户为#,普通用户为$;
//PS1控制最外层命令提示符格式
[wz@localhost ~]$ echo $PS1
[\u@\h \W]\$

//PS2控制第二层命令提示符格式
[wz@localhost ~]$ echo $PS2
>

执行shell脚本

  • 在新进程中运行脚本;
  • 在当前进程中运行脚本;
//shell脚本文件
[wz@localhost ~]$ cat file.sh 
echo $$ //输出当前脚本进程PID
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
//在新进程中运行脚本
//将脚本作为程序运行,注意执行权限
[wz@localhost ~]$ ./file.sh //不加./,则会在$PATH指定路径下查找文件
//将脚本作为参数传递给bash解释器
[wz@localhost ~]$ /bin/bash file.sh //绝对路径直接运行bash解释器
[wz@localhost ~]$ bash file.sh //通过bash命令找到bash解释器,在运行
//在当前进程中运行脚本
[wz@localhost ~]$ source file.sh 
//或简写为
[wz@localhost ~]$ . file.sh 

Shell配置文件

与bash shell有关的配置文件

  • /etc/profile、/etc/profile.d/*.sh、/etc/bashrc
  • ~/.bash_profile、~/.bash_login、~/.profile
  • ~/.bashrc,可将自己代码添加到此文件,每次启动都会加载;
[root@VM-4-4-centos ~]# ls -d1 /etc/profile* /etc/bash* 
/etc/bash_completion.d
/etc/bashrc
/etc/profile
/etc/profile.d
[root@VM-4-4-centos ~]# ls -a1 ./.bash*
./.bash_history
./.bash_logout
./.bash_profile
./.bashrc

书籍:《深入理解计算机系统》,《操作系统精髓设计与原理》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值