Linux使用基础

简介: Linux使用基础

Linux 特点

linux操作系统把所有的外部设备都当作文件,只要安装这些设备对应的驱动程序就可以像使用文件那样进行操作使用这些设备。

Linux 的几个相关术语

  1. GNU
    实现一个软件丰富且可以自由使用的软件库
    已经开发的软件包括了一些功能强大的编辑器,编译器
  2. GPL
    要求在发布软件的同时必须发布源代码,GNU通用公共授权。
  3. POSIX
    可移植操作系统
  4. ISO C
    c语言

Linux的体系结构

一个完整的操作系统:由内核(Kernel)、命令解释层(shell)、文件系统(File Structure)等部分组成。

Linux的体系结构:

  1. Linux的内核是Linux操作系统最基本的组成部分,是核心。主要分为以下几个模块:
  • 文件系统驱动模块
  • 硬件系统驱动模块
  • 内存管理模块
  • 进程管理模块
  • 网络管理模块
  1. Linux命令解释层
    接收并解析用户的命令,送到内核去执行。
    包括: 基于文本的shell 和基于图形界面的X-window两种。
  2. Linux的文件系统
    指在一个物理设备上的任何文件组织和目录,主要用来存储Linux操作系统运行所必须的信息。
    每个和设备相关的实体也都被映射为一个文件,例如磁盘、终端、打印机、网卡等,这些设备文件称为特殊文件。
    虚拟文件系统(VFS)对各种文件系统进行统一的管理,为各类文件系统提供了一个统一的操作界面和应用编程接口。

linux操作系统中的所有文件都放在一个大的树形结构中,根是一个单独的目录,称为root, 并且用"/"表示。

  1. Linux 内核文件目录的内容组成
  • arch :包含了所有和体系结构相关的核心代码, 每一个子目录都代表一种Linux支持的体系结构。
  • include : 包含编译核心所需要的大部分头文件,例如与平台无关的头文件位于include/linux子目录下
  • init : 包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.两个文件。
  • mm: 包含所有的内存管理代码,与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下
  • drivers : 系统中所有的设备驱动程序。如: 声卡驱动:drivers/sound
  • ipc : 包含了核心进程间的通信代码
  • modules: 用于存放已经建好的,可以动态加载的模块
  • fs: 存放Linux支持的文件系统代码。
  • Kernel : Kernel 内核管理的核心代码被放在这里,同时与处理器结构相关的代码都放在arch/*/kernel 目录下。
  • net: 核心的网络部分代码。
  • lib : 包含核心的库代码,不过与处理器结构相关的库代码被放在 arch/*/lib目录下。
  • scripts: 包含用于配置核心的脚本文件。
  • documentation: 该目录下的文件是对每个目录作用的具体说明。一般在每个目录下都有一个depend文件和一个Makefile文件。
    这两个文件都是编译时使用的辅助文件。

linux的包管理

安装的软件通常以包的形式存在: 可执行文件+依赖关系+设置文件

包管理系统(市场占有率最高): RPM和Deb

RPM

Red Hat Package Manager

几个常用的RPM包操作命令:

  • rpm -vih file.rpm 安装一个RPM包
  • rpm -e file.rpm 卸载
  • rpm -qpR file.rpm 查看一个RPM包的依赖关系
  • rpm -q file 查询系统中已经安装的RPM 包

Deb

Debian 和Ubuntu 都是使用deb包管理系统

Deb的包的组成: 源代码包+二进制包

  • 源代码包:
  1. 一个描述源代码包的.dsc文件
  2. 一个包含gzip-tar 归档压缩格式的未经修改的源代码的.orig.tar.gz 文件
  3. 一个包含对源代码做Debian 特有修改的.diff.gz文件
    可以使用dpkg-source 打包和解压debian 源代码文件
  • 二进制文件:
    以.deb 拓展名来表示,通常称为DEB文件,包含:可执行文件+文档+配置文件+版权信息
    可以使用Debian 的dpkg工具解包(安装)

Debian 的软件包的命令约定: _<版本号>-<Debian 修订号>.deb

管理命令:

  • apt 从源列表(CD 、网络等)中下载Deb包
  • dpkg 通过数据库对系统中的软件进行管理,这个数据库位于/var/lib/dpkg 目录下
  • aptitude 提供了一个图形界面来对软件包进行管理
  • synaptic 运行在X window 环境下的包管理软件,用户可以进行图形化的操作。
  • gdebi 和gdebi-gtk gdebi 是一个命令行的包管理软件,gdebi-gtk 是其对应的图形化版本
  • dselect 在终端运行的一个图形化软件包,功能实现类似于synaptic ,但可以在终端运行。该命令通常需要root权限,可以使用sudo dselect 命令来获取相应的权限。

人机交互

图形界面

KDE

GNOME

Unity(在Ubuntu 使用)

shell

提供使用者使用界面

本质是一个命令解释器,接收用户命令,然后调用相应的应用程序来执行这些命令

shell的启动

shell在启动的时候,先读取/etc/bash/.bashrc文件对整个Linux操作系统进行配置,然后读取$HOME/.bashrc 文件对当前用户进行配置,若两者有冲突,以后者为准。

这些文件包含以下方面的内容:

  • .bash_profile 文件 : 只被登录用户对应的shell所读取,而操作系统内未登录的shell之读取.bashrc文件
  • .bashrc 文件: 被启动的所有shell 读取
  • .bash_logout 文件 bash 退出时执行该文件

Linux操作系统启动时,会自动启动多个终端

Ubuntu会同时启动7个终端,16号终端是直接运行的真实的终端,,可以使用Ctrl+Alt+Fn(Fn=F1F6)进行切换,7号终端交给X window使用,从1~6号终端切换到X window下,Alt+F7

远程登录工具: PuttyMan(菩提曼)(开源),xShell

通过Telnet 和SSH登录Linux操作系统

Telnet 协议是TCP/IP 协议族中的一员,是Internet 远程登录服务的标准协议和主要方式,为用户提供在本地计算机上完成远程主机工作的能力。

SSH 是Secure Shell的简写,为建立在应用层和传输层基础上的安全协议,能为用户与Linux操作系统的远程连接提供安全可靠的数据传输。

shell 的使用

shell的命令格式

$ 命令 选项 参数

# 命令 选项 参数

命令行中的每个字必须由空格或者Tab隔开

$ 和# 区分用户的不同权限

$ 普通用户权限

# root 用户(超级用户)权限

选项是包括一个或多个字母的代码,前面有一个减号(必要),用来区分选项和参数

选项可用于改变命令执行的动作类型

ubuntu 中用户不能直接使用root 权限,只能通过sudo命令来暂时获得root权限

shell的通配符

shell的通配符主要用于模式匹配,例如: 文件名匹配,路径名搜索,字符串查找等

常用的有:* ? []

  • * 代表任意长度的字符串
    文件名中的. 和路径名中/ 必须是显式的,即不能用通配符代替它们
  • ? 代表任何单个字符
  • [] 指定模式串匹配的字符范围
    方括号中的字符范围可以由字符串组成,也可以由表示限定范围的起始字符、终止字符和中间连字符(-)组成
    例如: [a-d] 与[abcd] 作用相同

shell 将把与命令中指定的模式串匹配的所有文件名都作为命令参数,形成最终的命令

如果目录中没有与指定的模式串匹配的文件名,那么shell将使用此模式串本身为参数传给命令(这正是命令中出现特殊字符的原因)

中间连字符(-)仅在方括号中有效

* ? 仅在方括号外有效

shell 中的引号

单引号 、双引号、反引号

  • 单引号: 单引号括起来的字符都作为普通字符
  • 双引号: 忽略大多数字符,但三种特殊字符不被忽略,$ \ ` (反引号)
    双引号中不做文件名替换(忽略了其他特殊字符)

shell赋值的先后顺序: 先进行变量替换,然后进行文件名替换,最后把这些替换值作为参数传递给命令

  • 反引号:括起来的字符串被shell 解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。

date 命令可以获得系统的当前 时间

反引号可以嵌套使用,但内层的反引号必须用反斜线(\)转义

shell 中的注释

以字符# 开头的正文行表示注释行

Linux 的常用命令

目录操作命令

  1. 创建目录命令 mkdir

mkdir [选项] 目录

常用选项说明:

-m 建立目录时设置目录的权限

目录的权限分为: 目录所有者的权限、组中其他人对目录的权限、系统中其他人对目录的权限

这三个权限分别用三个数字之和来表示:

读 4

写 2

执行 1

-p 可以是一个路径名称,若此路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在

的目录,即一次可以建立多个目录

  1. 删除目录命令 rmdir
    rmdir [选项] 目录列表
    待删除的目录必须是空目录
    选项:
    -p 在删除目录表指定的目录后,若父目录也空,则rmdir 也删除父目录,状态信息将显示哪些被删除,哪些没有被删除

如果要删除一个非空的目录,应该使用 " rm -rf 目录名"

  1. 显示当前工作目录 (pwd)
    显示当前工作目录路径
  2. 改变当前工作目录
    cd [directory]
    若没有指定directory 目录,则返回用户的主目录
    用户必须对指定的目录有执行和读权限
    该命令可以使用通配符( * ? )

linux下的三个特殊目录

/ 根目录,最高级目录,其他目录都是该目录的子目录

. 当前目录

… 上一级目录

  1. 相对路径: 相对当前目录的路径
    绝对路径: 相对根目录的路径

文件操作命令

  1. 列举文件名 ls
    显示指定工作目录中所包含的文件
    ls [选项] [文件目录列表]
选项 说明
-a 列出目录下的所有文件,包含以 .开头的隐藏文件
-l 列出文件的详细信息
-r 对目录反向排序
-s 在每个文件名后输出文件的大小
-t 以时间排序
-u 以文件上次被访问的时间排序
-A 显示除 . 和 … 外的所有文件
-B 不输出以~结尾的备份文件
-G 输出文件的组信息
-N 不限制文件长度
-Q 把输出的文件名用双引号括起来
-R 列出所有子目录下的文件
-S 以文件大小排序
-X 以文件的扩展名(最后一个"."后的字符)排序
-1(数字1) 一行只输出一个文件

Linux 支持多种文件类型,每一类用一个字符来表示

文件类型 说明
- 常规文件
d 目录
b 块特殊设备
c 字符特殊设备
s 信号灯
m 共享存储器

文件类型的字符表示文件的权限,权限由三个字符串组成,这三个字符串分别表示: 该文件所有者的权限、组中其他人的权限和系统中其他人的权限,每个字符串又由三个字符组成,一次表示对文件的读®、写(w)和执行(x)权限。

当用户没有相应的权限时,该权限对应的位置用短线 - 表示。

例: drwxr-----

  1. 查找文件的命令 find使用find命令来查找文件find [目录列表] [匹配标准]find命令有两个目录列表和匹配标准两个参数
  • 目录列表: 希望查询文件或文件集的目录列表,目录间用空格分隔
  • 匹配标准:希望查询文件的匹配标准或说明

find 命令的匹配标准参数说明:

选项 说明
-empty 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-name 使用名称匹配,支持通配符

例: 在/dev目录下查找包含 "usb"字符串的文件

find /dev -name usb*

  1. 显示文件内容命令 cat
    显示文件的内容
    cat [选项] 文件列表
    常用选项说明:
选项 说明
-v 利用一种特殊形式显示控制字符,LED与TAB除外。 加了"-v"后,“-T”,“-E"选项将起作用。其中,”-T",将TAB显示为"uI",需与"-v"选项一起使用。 “-E”,在每行的末尾显示一个$符,需与"-v"一起使用。 如果没有"-v",“-T"和”-E"将被忽略。
-n 在文件的每行前面显示行号
  1. cat命令可以用于将两个文件连接到一起放到另外一个文件中去。
    cat 1.txt 2.txt > 3.txt 连接1.txt 2.txt ,使用> 写入新文件
  2. 复制文件命令 cp
    用于复制文件或目录,可以把指定的源文件复制到目标文件或把多个源文件复制到目标目录中:
    cp [选项] 源文件或目录 目标文件或目录
    cp命令中的常用选项
选项 说明
-a 通常用于复制目录,它保留链接、文件属性,并递归地复制目录,作用等于dpR选型的组合
-d 复制时保留链接
-f 删除已经存在的目标文件而不是提示
-i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认,交互式拷贝
-p 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中
-r 若给出的源文件是一个目录文件,此时cp将递归的复制该目录下所有的子目录和文件,此时目录文件必须为一个目录名
-l 不进行复制,只是链接文件

在使用cp命令复制文件时,最好使用-i 选项

  1. 移动和重命名文件 mv
    移动文件,可以同时修改文件名称,即把源文件以一个新的文件名移动到另一个新的目录中
    调用格式:
mv [选项] 源文件名 目录文件名
mv [选项] 源目录名 目标目录名
mv [选项] 文件列表 目录
  1. mv命令的选项
选项 说明
-b 当遇到要覆盖其他文件或目录时,将自动备份,备份文件名原文件名加上 -S参数指定的字符串,若未设置则加上“~”
-i 交互模式,当移动的目录已经存在同名的目标文件时,利用覆盖的方式写文件,但给出提示
-f 强制执行。本选型使用mv命令,执行移动而不给出提示
-u 当要覆盖的文件或目录比源文件更新时,则不覆盖目标文件
-S<字符串> 指定备份文件名后要加上的字符串

  1. 文件内容统计命令 wc
    统计指定文件中的字节数、字数、行数,并将统计结果显示输出
    wc [选项] 文件列表
    如果没有给出文件名,则从标准输入(键盘)读取,wc同时也给出所有指定文件的总统计数。
    字是由空格字符区分开的最大字符串。
    wc命令的选项说明:
选线 说明
-c 统计字节数
-l 统计行数
-w 统计字数
  1. 默认输出: 行数 字数 字节数
  2. 删除文件命令 rm
    rm [选项] 文件
    用于删除一个指定的文件(通常来说并不删除目录)
    常用选项
选项 说明
-f 强制删除一个文件
-i 删除文件之前进行提示

如果要删除一个非空的目录(文件夹),可以使用命令: “rm -rf + 文件夹”

其他命令

用户切换命令 su 和sudo

Linux是一种多用户操作系统

su命令用来切换用户身份

su [选项] user

除root 外,其他用户切换身份时,要输入密码

su命令常用选项

选项 说明
-p 执行su时不改变环境参数
-c 切换到user用户并执行命令,然后再切换回原来的用户
-s 指定要执行的shell,默认在/etc/passwd文件中已设置完成。若要更改shell,可采用此参数

sudo 命令用来以管理员身份执行指令

sduo [选项] 命令

sudo常用选项

选项 说明
-l 显示出执行sudo的用户权限
-v sudo 在第一次执行时或在N分钟内没有执行(N预设为5)会问密码。这个参数是需要重新进行一次确认,如果超过N分钟,也会询问密码
-k 强迫用户在下一次执行sudo时询问密码(不论有没有超过N分钟)

ubuntu 锁定了root 用户,所以不能使用su命令切换用户,只能使用sudo命令来临时获得root权限

进程管理 ps和kill

ps命令用于显示当前系统中由该用户运行的进程列表

kill命令用于输出特定的信号给指定进程号(PID)的进程,并根据该信号完成指定行为:进程挂起、等待、终止

ps:     ps [选项]
kill:   kill [选项] 进程号(PID)

ps命令的参数说明:

参数w 可以写多次,通常最多写3次,含义表示加宽3次

选项 说明
-ef 查看所有的进程及其PID、系统时间、命令的详细目录、执行者
-aux 除可显示 ”-ef" 所有内容外,还可以显示CPU及内存占用率、进程状态
-w 以加宽方式显示,这样可以显示较多信息

kill的常用选项列表,当选项缺省时输出终止信号给该进程

选项 说明
-s 将指定信号发送给进程

IP地址管理命令 ifconfig

用于查看和配置网络接口的地址和参数,包括IP地址、网络掩码、广播地址

使用权限是超级用户,两种使用格式:

查看:
ifconfig [选项] [网络接口] : 用来查看当前系统的网络配置情况
更改网络接口:
ifconfig 网络接口 [选项] 地址: 用来配置指定接口(如 eth0、eth1)的IP地址、网络掩码、广播地址等

ifconfig的第二种使用方式的常见选项:

选项 说明
interface 指定的网络接口名 如eth0 eth1
up 激活指定的网络接口卡
down 关闭指定的网络接口卡
broadcast address 设置接口的广播地址
point to point 启用点对点方式
address 设置指定接口设备的IP地址
netmask address 设置接口的子网掩码地址

eth0 中是有线网卡的相关网络信息

lo 为Linux的自身环回地址,固定为127.0.0.1

帮助命令 man

列出的说明中,包含命令语法、各选项的意义以及相关命令

man [选项] 命令名称

常用选项说明:

选项 说明
-f 只显示出命令的功能,而不显示其中详细的说明文件
-w 不显示手册页,只显示对应帮助文档的所在位置
-a 显示所有手册页,而不是显示第一个
-E 在每行的末尾显示 $符号

关机和重启命令 shutdown、halt和reboot

由于Linux是一种多用户、多任务操作系统,因此在切断计算机电源之前,必须先关闭Linux系统。绝不能不执行关机进程就切断计算机电源,这样做会导致保存在内存缓冲区中的磁盘数据来不及写回磁盘,从而破坏文件系统。

shutdown命令可以安全的关闭或重启。

允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。

  • 精确时间格式 hh:mm,表示小时,分钟
  • 时间段由 + 和分钟数表示

系统执行该命令后,会自动进行数据同步的工作。

shutdown [选项][时间][警告信息]

常用选项说明:

选项 说明
-k 并不真正关机,而只是发出警告信息给所有用户
-r 关机后立即重新启动
-h 关机后不重新启动
-c 取消一个已经运行的shutdown

关机命令需要root 权限

halt 是最简单的关机命令,实际上是调用 shutdown -h命令,halt执行时,杀死应用进程,文件系统写操作系统完成后就会立即停止内核

halt [选项]

常用选项

选项 说明
-n 在关机前不做将内存资料写回硬盘的动作
-w 并不会真正关机,只是把记录写到/var/log/wtmp 文件中
-d 不把记录写入/var/log/wtmp 档案中 (参数 -n 包含了 -d)
-f 强制关机
-i 在关机之前先把所有网络相关的装置停止
-p 当关机的时候,顺便做关闭电源(poweroff)的动作,取消一个已经运行的shutdown

halt命令需要超级用户权限

reboot 命令用来重新启动计算机

reboot [选项]

常用选项:

选线 说明
-n 在关机前不做把内存资料写回硬盘的动作
-w 并不会真正关机,只是把记录写到/var/log/wtmp 文件中
-d 不把记录写入/var/log/wtmp 档案中 (参数 -n 包含了 -d)
-f 强制关机
-i 在关机之前先把所有网络相关的装置停止

查看内核和发行版版本号命令 uname 和 lsb_release

可以使用uname 来查看系统的相关信息

相关选项的参数说明:

选项 说明
-a 显示全部
-s 显示内核名称
-n 显示网络节点主机名称
-r 显示内核发行版
-v 显示内核版本号
-m 显示系统硬件主机名称
-p 显示处理器名称

使用lsb_release 命令来查看操作系统对应的发行版信息,需要root 权限

相关参数:

选项 说明
-v 显示版本号
-i 显示发行版作者
-d 显示当前使用版本的相应描述
-r 显示当前使用版本的发行版本号
-a 显示全部
相关文章
|
Linux Shell
Linux基础:常用命令之echo命令详解(一)
Linux基础:常用命令之echo命令详解(一)
1289 0
Linux基础:常用命令之echo命令详解(一)
|
机器学习/深度学习 Linux Shell
Linux 基础-文本处理命令
Linux 基础-文本处理命令
184 0
|
Linux
Linux 基础-查看 cpu、内存和环境等信息
Linux 基础-查看 cpu、内存和环境等信息
323 0
|
缓存 运维 监控
Linux 基础-查看进程命令 ps 和 top
Linux 基础-查看进程命令 ps 和 top
546 0
|
存储 Unix Linux
Linux 基础-文件权限与属性
Linux 基础-文件权限与属性
157 0
|
算法 Linux Shell
Linux 基础-新手必备命令
Linux 基础-新手必备命令
181 0
|
Linux Shell
Linux 基础-学会使用命令帮助
Linux 基础-学会使用命令帮助
132 0
|
存储 运维 安全
【共读】Linux网络安全精要之基础知
【共读】Linux网络安全精要之基础知
258 0
【共读】Linux网络安全精要之基础知
|
Linux
Linux基础:常用命令之seq命令详解
Linux基础:常用命令之seq命令详解
389 0
Linux基础:常用命令之seq命令详解
|
Linux Shell
Linux基础:常用命令之echo命令详解(二)
Linux基础:常用命令之echo命令详解(二)
636 0
Linux基础:常用命令之echo命令详解(二)