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)允许运行在不同计算机上的进程之间相互通信。
-
套接字和命名管道通常是在进程运行时创造或删除的,一般无需系统管理员干预