Linux的基础知识

Linux基础知识

三种软件模式

  • 商业软件

    由开发者出售拷贝并提供软件技术服务,用户只有使用权,但不得进行非法拷贝、扩散和修改

  • 共享软件

    共享软件由开发者提供软件试用程序拷贝授权,用户在使用该程序拷贝一段时间后,必须想开发者缴纳使用费,开发者则提供相应的升级和技术服务

  • 自由软件

    自由软件所指称的软件,其使用者有使用、复制、散布、研究、改写、再利用该软件的自由。

什么是Linux

Linux是一个功能强大的操作系统,同时它是一个自由软件,是免费的,源代码开放的,编制它的目的是建立不受任何商品化软件版权制约的、全世界都能够自由使用的Unix兼容产品

各种使用Linux作为内核的GNU操作系统正被广泛的使用着;虽然这些系统通常被称作“Linux”但是它们应该更精确地被称为GNU/Linux系统。

为什么Linux深受喜爱?

  • Linux属于自由软件,用户不需要支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对他进行必要的修改,无约束地继续传播。
  • Linux具有Unix的全部功能,任何使用Unix操作系统或想要学习Linux操作系统的人都可以从Linux中获益。
  • Linux不仅为用户提供了强大发操作系统功能,而且还提供了丰富的应用软件。

Linux系统的特点

  • 开放性的系统
  • 多用户多任务的系统
  • 具有出色的稳定性和速度性能
  • 具有可靠的系统安全性
  • 提供了丰富的网络功能
  • 标准兼容性和可移植性
  • 提供了良好的用户界面

Linux系统的组成

  • Linux内核:内核是系统的心脏,实现操作系统的基本功能。
  • Linux Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
  • Linux应用程序:包括文本编辑器、编程语言、X Windows、办公套件、Internet工具、数据库等。、
  • Linux文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。通常是按照目录层次的方式进行组织。系统以/为根目录。

Linux内核

Linux内核实现了操作系统的基本功能

  • 硬件方面:控制硬件设备,内存管理,硬件接口,基本I/O
  • 软件方面:管理文件系统,为程序分配内存和CPU时间等

Linux内核版本

Linux内核版本号由三个数字组成:r.x.y

  • r:目前发布的主版本

  • x:次版本号;如果为偶数则是稳定版本,如果是奇数,则为开发中的版本

  • y:修订版本号,意为修补错误次数

Linux发行版

Linux发行版是以Linux Kernel为核心,搭配各种应用程序和工具的软件集合。

  • Linux内核 + 各种自由软件 = 完整的操作系统
  • 发行版的名称、版本由发行厂商决定
  • 包括厂商/社区提供的辅助安装、软件包管理等程序。
  • 发行版可以自由选择使用某个版本的Linux内核
  • 相对于内核版本,发行版的版本号随发布者的不同而不同,与系统内核的版本号是相对独立的

Linux的应用领域

  • Linux服务器
  • Linux嵌入式系统
  • Linux多媒体与电影制作
  • Linux桌面应用
  • 软件开发环境
  • 超级计算
  • 云平台

Linux关于磁盘分区设备的说明

  • 与Windows系统不同,Linux环境下没有盘符的概念。要对磁盘设备进行操作,需要使用磁盘设备名;要操作文件则需挂载创建在分区或逻辑卷上的文件系统。

  • IDE接口硬盘的设备名均以/dev/hd开头;SCSI/SAS/SATA/USB接口硬盘的设备名均已/dev/sd开头。

  • 数字编号1~4留给主分区或拓展分区使用,逻辑分区编号从5开始。

Linux下的文件系统

  • 在Linux系统上划分了分区之后,还要在分区上创建文件系统
  • Linux下创建文件系统的操作相当于Windows下的磁盘格式化操作。
  • Windows系统常用的文件系统类型为FAT32,NTFS。
  • Linux下常用的文件系统类型为:ext2/3/4/、XFS、JFS、ReiserFS等

Linux如何使用分区

在Linux操作系统中没有Windows所谓的磁盘分区的概念,而是将每个分区当成目录来使用,此指定的目录即称为挂载点(mount point)

三种类型镜像文件的区别

  • DVD ISO:

    此类镜像类型为普通光盘安装版,可离线安装到计算机硬盘上,包含大量的常用软件,一般选择这种镜像类型即可

  • Everything ISO:

    这个镜像涵盖了上种镜像的内容,并对其进行补充,集成了所有软件

  • Minimal ISO:

    这个版本为精简版的镜像,可以安装一个基本的系统,包含了可启动系统基本所需的最小安装包

为什么使用字符工作方式

  • 在字符操作方式下可以高效地完成所有的任务,尤其是系统管理任务
  • 系统管理任务通常在远程运行,而远程登录后进入的是字符工作方式
  • 由于使用字符界面不用启动图形工作环境,大大地节省了系统资源的开销

为什么使用字符工作方式

  • 在字符操作方式下可以高效地完成所有的任务,尤其是系统管理任务
  • 系统管理任务通常在远程进行,而远程登录后进入的是字符工作方式
  • 由于使用字符界面不用启动图形工作环境,大大节省了系统资源开销

虚拟控制台

  • 系统默认提供了6个虚拟控制台。每个虚拟控制台可以独立的使用,互不影响。
  • 使用Alt+F1~Alt+F6进行多个虚拟控制台之间的切换

一般应该使用普通用户登录系统,不要使用root用户登录,如有需要再进行切换

Linux环境下,使用ssh登录远程Linux系统

  • ssh是英文Secure Shell的缩写
  • 用户在通过ssh连接到远程系统时在网络上传输的口令和数据都是经过加密的。
  • 比传统的telnet远程登录更加安全
  • ssh的使用方法:
    • $ ssh -l osmond 193.168.1.100
    • $ ssh osmond@193.168.1.100

获得Linux的帮助

  • 字符界面

    • 使用help获得bash的内部命令帮助
    • 使用man命令获得手册页帮助
    • 使用info命令获得texinfo文档帮助
    • 使用pinfo命令获得texinfo文档帮助
  • GNOME桌面环境下

    • 使用yelp浏览帮助文档

shell是什么?

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)。它接收用户输入的命令并把它送入内核去执行。起着用户与系统之间进行交互的作用。

  • shell:提供用户命令界面,解释执行用户命令
  • 系统调用:为用户态程序提供内核功能的接口
  • 内核:对硬件进行管理和抽象

shell的功能

  • 命令行解释
  • 命令的多种执行顺序
  • 通配符
  • 命令补全、别名机制、命令历史
  • I/O重定向
  • 管道
  • 命令替换(``或$())
  • shell编程语言
shell可以执行:内部命令和外部命令

如果是内部命令的话,就调用内核中的系统功能;

如果是外部命令或者实用程序,就在系统中查找该命令的文件并调入内存执行

内置命令

内置命令是shell本身包含的一些命令,这些内部命令的代码是整个shell代码的一个组成部分;

内置命令的执行是shell通过执行自己的代码中的相应部分来完成的。

外部命令

外部命令的代码存放在一些二进制的可执行文件或者shell脚本中;

外部命令执行时,shell会在文件系统中制定的一些目录去搜索相应的文件,然后调入内存执行

shell的种类

  • bash bash是大多数Linux系统的默认shell。

bash与bsh完全向后兼容,并且在bsh的基础上增加和增强了很多特性。bash也包含了很多C Shell和Korn shell中的有点。bash有很灵活和强大的编程接口,同时又有很友好的用户界面。

  • ksh Korn shell是UNIX系统上的标准shell。

    在Linux环境下有一个准们为Linux系统编写的ksh拓展版本,即pdksh

  • tcsh(csh的扩展)tcsh是 C shell的扩展。tcsh与csh完全向后兼容,但它包含了更多的使用户感觉方便的新特性,其最大的提高是在命令行编辑和历史浏览方面

在Linux系统的/etc目录下的shells文件中列出了系统可以接受的shell以及他们的路径

  • chsh -l

可以来查看系统支持的shell

  • ls -al /bin/sh

可以用来查看这些shell的详细信息

  • ls -al /bin/bash

可以用来查看这些shell的详细信息

  • ls -al /usr/bin/bash

可以用来查看这些shell的详细信息

shell命令搜索路径

  • Shell搜索的目录的名字都保存在一个shell变量PATH中

  • 变量PATH中的目录名用一些特定的符号分开。在bash shell中,目录名用冒号分开。

  • echo $PATH

  • 变量PATH保存在主目录中的隐藏文件.profile或者.login中

shell变量的类型

  • 内部变量:由系统提供,用户只能使用不能修改
  • 用户变量:由用户建立和修改,在shell脚本编写中会经常用到
  • 环境变量:这些变量决定了用户工作的环境,他们不需要用户去定义,可以直接在shell中使用,其中某些变量用户可以修改

shell环境变量

  • 环境变量定义shell的运行环境,保证shell命令的正确执行
  • shell用环境变量来确定查找路径、注册目录、终端环境、终端名称、用户名等。
  • 所有环境变量都是全局变量(即可以传递给shell的子进程),并可以由用户重新设置
常见的环境变量
  • HOME 用户主目录
  • LOGNAME 登录名
  • USER 用户名,与登录名相同
  • PWD 当前目录/工作目录名
  • MAIL 用户的邮箱路径名
  • HOSTNAME 计算机的主机名
  • INPUTRC 默认的键盘映像
  • SHELL 用户所使用的shell路径名
  • LANG 默认语言
  • HISTSIZE history所能记住的命令的最多个数
  • PATH shell查找用户输入命令的路径(目录列表)
  • PS1,PS2 shell一级、二级命令提示符

shell变量的查询、显示和取消

  • 显示当前已经定义的所有变量
    • 所有环境变量:env
    • 所有变量和函数(包括环境变量):set
  • 显示某(些)个变量的值

    • echo N A M E 1 [ NAME1 [ NAME1[NAME2…]
  • 取消变量的声明或赋值

    • unset

设置用户工作环境

  • 对所有用户进行设置

    • /etc/profile
    • /etc/bashrc
  • 只对当前用户进行设置

    • ~/.bash_profile
    • ~/.bashrc

通常,个人bash环境设置都定义在~/.bashrc文件里

vi编辑器的使用

  • 要区分文本编辑器和文字排版工具的不同之处
  • vi是Linux/UNIX世界里最常用的全屏编辑器,所有的Linux系统都提供该编辑器,而Linux也提供了vi的加强版–vim,同vi完全兼容,存放路径为:/use/bin/vim;
  • 多数的Linux系统中vi命令是vim的别名,你可以通过alias命令或which vi查看一下。
  • 使用vi编辑器可以创建文本文档、书写脚本、编辑文本。
  • vi可以执行输出、删除、查找、替换、快操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。
  • vi没有菜单,只有命令
  • vi有三种基本工作方式:
    • 命令模式(普通模式)
    • 插入模式
    • 末行模式(命令行模式)

使用方法

进入:vim filename

退出:ZZ/ZQ

命令模式-》插入模式:键入:i、o、a

插入模式-》命令模式:按ESC

命令模式-》末行模式:键入:、/、?、!之类的命令

末行模式-》命令模式:命令运行完毕自动返回

进入文件

命令说明
vi直接进入
vi filename打开或新建文件filename,并将光标置于第一行首
vi +n filename打开文件filename,并将光标置于第n行首
vi + filename打开文件filename,并将光标置于最后一行首
vi +/pattern filename打开文件filename,并将光标置于第一个与pattern匹配的串处
vi -r filename打开上次用vi编辑时发生系统崩溃,恢复filename

普通模式

  • 在shell中输入vi启动编辑器时,即进入该模式
  • 无论什么时候,不管用户处于何种模式,只要按一下esc键,即可使vi进入普通模式
  • 在该模式下,用户可以输入各种合法的vi命令用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。
  • 若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作。但需要注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是vi的合法命令,vi会响铃报警。

末行模式

  • 普通模式下,用户按冒号“:”即可进入命令行模式,此时vi会在显示窗口的最后一行(屏幕的最后一行)显示一个“:”作为命令行模式的提示符,等待输入命令
  • 多数文件管理都是在此模式下执行的(如保存文件)
  • 命令行模式中所有的命令都必须按<回车>键后执行,命令执行完成后,vim自动回到普通模式
  • 若在命令行模式下输入命令过程中改变了主意,可按Esc键或用退格键将输入的命令全部删除之后,再按一下退格键,即可使vim回到普通模式下。

普通模式的基本操作

  • G 用于直接跳转到文件尾
  • x 删除光标所在的字符
  • r 替换光标所在的字符
  • ~ 切换光标所在字母的大小写
  • /和?用于查找字符串
  • dd,YY,p分别用于剪切、复制和粘贴一行文本
  • u取消上一次编辑操作
  • .重复上一次编辑操作
  • ZZ用于存盘退出vi
  • ZQ用于不存盘退出vi

末行模式下的基本操作

  • :w 保存当前编辑文件,但并不退出

  • :w newfile 存为另一个名为“newfile”的文件

  • :wq用于存盘退出vi

  • : q!用于不存盘退出vi

  • :q 用于直接退出vi(不修改)

  • :n1,n2 co n3 用于块复制

  • :n1,n2 m n3 用于块移动

  • :n1,n2 d 用于块删除

Linux文件与目录

文件的类型

  • 普通文件(-)
  • 目录文件(d)
  • 字符设备文件(c)
  • 块设备文件(b)
  • 符号链接(l)
  • 套接字(s)
  • 命名管道(p)

普通文件

  • 普通文件仅仅就是字节序列,Linux没有对其内容规定任何结构
  • 普通文件可以说程序源代码(c,c++,python,perl等)、可执行文件(文件编辑器、数据库系统、出版工具等)、图片、声音、图像等。
  • Linux不会区别对待这些普通文件,只有处理这些文件的应用程序才会根据文件的内容赋予相应的含义。
  • 在Linux环境下,只要是可执行的文件并具有可执行属性它就能执行,不管其文件后缀名是什么。但是对于一些数据文件一般也遵循一些文件名后缀规则。

目录与目录文件

  • 目录文件是文件系统中一个目录所包含的目录项的集合组成的文件。
  • 目录项可以是对其他文件的只想也可以是其下的子目录指向。
  • 用户进程可以读取目录文件,但不能对它们进行修改。
  • Linux文件系统使用索引节点来记录文件,除文件名之外的基本说明信息。

Linux的目录结构

  • Linux的文件系统采用了树形结构的文件目录,将系统中所有文件分级、分层组织在一起。
  • 起点为根目录“/”,所有其他的目录都由根目录派生而来。
  • 特殊目录
    • “.”代表该目录自己
    • “…”代表该目录的父目录
    • 对于根目录而言,“.”和“…”都代表自己

目录内容

  • / 文件系统结构的起始位置,称为根
  • /bin 存放基本命令程序(任何用户都可以调用)
  • /boot 存放系统启动时所读取的文件,包括系统核心文件
  • /dev 存放设备文件接口,如打印机、硬盘等外围设备
  • /etc 存放系统设置和管理相关的文件,如用户账号、密码等
  • /home 存放用户专属目录(用户主目录)
  • /lib 存放一些共享的函数库
  • /misc 一个空目录,供管理员存放公共杂物
  • /proc 存放系统核心和执行程序之间的信息
  • /root 系统管理员(超级用户)专用目录
  • /sbin 与/bin类似,存放用于系统引导和管理的命令,通常供root用户使用
  • /tmp 临时目录,供任何用户存放临时文件。
  • /usr 此目录包含许多子目录,用来存放系统命令和程序等信息。
  • /var 存放经常变动的文件,如日志文件、临时文件、电子邮件等。

用户主目录

  • 用户登录后,将会进入一个系统指定的专属目录,即用户主目录,该目录名通常为用户的登录账号 如:/home/ghr
  • 系统管理员在创建用户时,系统会给每个用户建立一个用户主目录,默认是在/home/下与用户登录名相同的子目录
  • 用户对自己的主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。

特殊文件(设备文件)

  • 在Linux下,为了屏蔽用户对设备访问的复杂性,采用了每个设备看做特殊文件。即可以通过访问普通文件一样的方式来对设备进行访问的读写。
  • 特殊文件用来访问硬件设备,包括硬盘、光驱、打印机等。每个硬件设备至少与一个设备文件相关联。
  • 设备文件分为:字符设备(如:键盘)和块设备(如:磁盘)

Linux下设备的使用

  • 设备的使用方法
    • 用户可以用设备名来使用设备
    • 用户可以用访问文件的方法来使用设备
  • 设备名以文件系统的设备文件的形式存在
  • 所有的设备文件存放在/dev目录下

软链接和硬链接

  • 硬链接实际上就是在某目录中创建目录项,从而使不止一个目录可以引用到同一个文件。这种链接关系由ln命令行来建立
  • 硬链接并不是一种特殊类型的文件,只是因为在文件系统中允许不止一个目录项指向同一个文件
  • 软链接又称符号链接,是指将一个文件指向另外一个文件的文件名。
  • 这种符号链接的关系由ln -s命令行来建立

软连接与硬链接的特点

  • 硬链接
    • 链接文件和被链接文件必须位于同一个文件系统内
    • 不能建立指向目录的硬链接
  • 软链接
    • 链接文件和被链接文件可以位于不同的文件系统
    • 可以建立指向目录的软连接

套接字和命名管道

  • 套接字和命名管道是Linux环境下实现进程间通信(IPC)的机制。

  • 命名管道(FIFO)文件允许运行在同一台计算机上的两个进程之间进行通信。

  • 套接字(socket)允许运行在不同计算机上的进程之间相互通信。

  • 套接字和命名管道通常是在进程运行时创造或删除的,一般无需系统管理员干预

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值