什么是虚拟文本控制台(TTY)
虚拟文本控制台又称为虚拟终端,所谓终端就是由一个输入设备和一个输出设备组成的。典型的输入设备是键盘,典型的输出设备是显示器。
这个模型模拟的是 C/S结构,Linux系统作为一个服务器在远程,我们每一个虚拟文本控制台作为一个终端连接到Linux操作系统,我们使用终端向服务器发送指令,服务器接收后执行该指令然后返回给终端供用户查看.
- 一台Linux主机,可以同时有多个虚拟终端。一个虚拟终端可以对应一个用户登录。
- 在我们的虚拟机环境下按Ctrl +Alt +F1-F6可以分别进入每个终端 ,也可以使用连接工具虚拟终端
Shell 简介
Shell 是一个命令解释器,它可以将用户输入的命令进行适当的解释,然后提交给内核去执行,并将执行的结果展示给用户
用户使用终端登录到Linux后,默认情况下每个终端都会有一个shell 运行,用户就是在这个shell中给内核发送命令,并从这里查看执行结果
目前有下面4个版本的shell:
- BASH: GNU的Bourne Again Shell,是GNU操作系统上默认的Shell. (我们使用的就是这个)
- Bourne Shell: 贝尔实验室开发的shell
- Korn Shell: 是对Bourne Shell 的发展,大部分内容与Bourne Shell 是兼容的
- C Shell: 由SUN公司开发的BSD版本.
如何查看当前正在使用的SHELL ? 直接输入 echo $SHELL
Shell 的命令基本格式: 命令 [选项] [参数列表] // [] 中的内容为可选,命令与选项、参数之间要使用空格分隔,如果要执行多条命令,可以将这些命令输入在一行中,使用;(分号)分割就可以了.
命令提示符
如果登录的用户是普通用户,则命令提示符是$ , 如果登录的用户是管理员(root) 用户,则命令提示符是#
注意:** Linux 中对大小写是敏感的**
如何注销用户,退出登录: 使用 logout 命令或者 exit 命令
如何重启系统: 使用 reboot 命令或者 shotdown -r now 命令
如何关机: 使用 shotdown -h now 命令 (halt 书上有 但是实际操作中一般不用)
文件系统概述
文件系统定义: 操作系统中负责管理和存储文件信息的软件机构成为文件管理系统,简称文件系统
文件系统的组成: 文件管理相关的软件、被管理的文件、实施文件管理所需要的数据结构
文件系统的类型: 使用命令 df -T 查看文件系统
- XFS 是CentOS 7 默认的文件系统类型
- EXT2 是Linux 自带的文件系统类型,Linux早期发行版本默认使用的文件系统
- EXT3是EXT2的升级版本,加入了日志记录功能
- EXT4 是EXT3的升级版本,优化了数据结构,做了性能提升
- SWAP是分区交换文件
- ISO9660是光盘文件的标准文件系统
Linux 的树形目录结构
Linux 是以树形结构来组织目录和文件,最顶层的/称为根目录。一个目录中可以包含子目录和文件
常见的Linux 文件夹及其作用
- /bin: 系统命令(普通用户)
- /sbin: 提权的系统命令(root用户和管理员用户)
- /etc: 放一些系统或者软件的配置文件
- /boot: 内核的启动与引导文件
- /home: 系统用户的家目录
- /lib 和/lib64: 存放运行库文件
- /tmp: 存放临时文件的目录
- /usr : 没啥实际意义 一般是放系统程序
- /var : 存放一些日志和经常需要修改的文件
还有几个特殊的目录:
- . 表示的是当前目录(相对路径)
- .. 表示的父路径(相对路径)
- ~ 表示的是当前登录用户的家目录
- **- **表示的是上一次访问的目录
- / 文件系统的根目录
- 父目录与子目录:对于两个目录,假设A目录下包含一个目录B 则我们称B为A的子目录 ,A为B的父目录.
- 当前工作目录: 当前我执行shell 命令的目录就为当前目录 一般是 . (查看当前工作目录命令: pwd)
- 用户主目录(用户家目录): 一般指/home下的以当前登录用户名为文件夹名的目录 (注意root用户是特殊的)
文件名规范: 最长不超过256个字节,不能包含特殊字符和空白字符,区分大小写.
**绝对路径和相对路径: **
- 绝对路径:总是以根目录为起点,使用完整路径表示的文件或者目录路径(没有歧义的路径)
- 相对路径: 以当前目录为起点,可以完全表示文件或者目录的路径(受当前目录位置影响)
基本文件操作命令:
说在前面:
提高生产力的方案:
- 学会使用 tab 对于每一个命令 使用tab 可以快速补全
- 学会使用 -h 或者 –help 查看帮助文档
- 学会使用man 查看使用说明
- 一定一定一定要学会看错误输出.
创建目录:
使用 mkdir 命令来创建目录,支持同时创建一个或者多个
命令格式: mkdir [选项] 目录名称
可选项如下:
选项 | 描述 |
---|---|
-m | 创建目录时限定权限模式 |
-p | 创建目录时若不存在则创建、若存在则跳过(不会覆盖) |
-v | 或者 –verbose 每次创建目录都显示信息 |
切换目录:
使用 cd 命令来切换目录,用来进入到指定目录,并使该目录变成当前目录
命令格式: cd [路径]
查看目录下文件
使用 ls 命令来查看当前目录下的文件及目录信息,该命令用来列出当前文件夹下所有文件(夹)信息。
命令格式: ls [选项] [目录名称]
可选项如下:
选项 | 功能说明 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件(all) |
-d | 将目录像文件一样显示,而不是显示其下的文件(directory) |
-i | 输出文件 i 节点的索引信息(inode) |
-l | 列出文件的详细信息(long) |
-m | 横向输出文件名,并以“,”作为分格符 |
-x | 按列输出,横向排序 |
-R | 列出所有子目录下的文件 |
-S | 以文件大小排序 (Size) |
-1 | 一行只输出一个文件 (1个文件) |
–help | 在标准输出上显示帮助信息 |
路径通配符:
- 代表任意字符串,字符数量不限
?代表单个的任意字符.
创建或者更新文件
使用 touch 命令来创建/更新文件
命令 : touch 文件名
若文件不存在则会新建,若文件存在则会更新文件的最后访问时间.
复制文件/目录
使用 cp 命令来复制文件和目录
命令格式: cp [选项] 源文件 目标文件
可选项如下:
选项 | 功能说明 |
---|---|
-a | 保留链接、文件属性,复制目录时可递归的复制目录 |
-f | 如果目标文件或目录已经存在,则将其覆盖,并不作提示 (force) |
-i | 如果目标文件或目录已经存在,则对用户进行提示,可以用字母y确认,其他字母都是否认 |
-r | 复制目录,实现将源目录下的文件和子目录一起复制到目标目录中 |
-b | 若目标文件存在则备份目标文件 |
移动/重命名文件
使用 mv 可以实现文件或者文件夹的移动和重命名
命令格式: mv [选项] 源文件 目标文件
删除文件/文件夹
rm 命令用来删除文件和文件夹,可以是一个或者多个文件夹/目录 支持通配符
命令格式: rm [选项] 目标文件/文件夹
可选项如下:
选项 | 功能说明 |
---|---|
-f | 强制删除文件或目录 (force) |
-i | 对用户进行提示,(inform)可以用字母y确认,其他字母都是否认 |
-r | 目录删除,将指定目录下的所有文件及其子目录一并删除 |
-b | 若目标目录存在则备份目标目录 |
还有一个专门用来删除文件夹的命令 rmdir , 该命令删除的对象必须是空目录,且必须在上级目录进行删除操作
命令格式: rmdir [选项] 目录
可选项:
选项 | 功能说明 |
---|---|
-p | 删除指定的目录树 |
-v | –verbose 删除目录过程中输出诊断信息 |
–help | 显示命令帮助信息 |
使用find 查找文件
find 命令用来按指定特征查找文件或者文件夹
命令格式: find 查找的目录 查找选项 查找选项限定值
查找选项如下:
选项 | 功能说明 |
---|---|
-name | 通过文件名查找文件 |
-user | 通过用户名查找文件 |
-type | 通过文件类型查找文件 |
-size | 通过文件大小查找文件 |
-atime | 通过文件的最后访问日期查找文件(单位:天) |
-mtime | 通过文件的最后修改日期查找文件(单位:天) |
-newer | 查找比指定文件更新的文件 |
-amin | 查找在指定时间内曾被存取过的文件(单位:分钟) |
-cmin | 查找在指定时间内被更改过的文件(单位:分钟) |
-perm | 查找符合指定权限数值的文件 |
VIM 编辑器的使用
- 使用vim 命令进入vim 编辑器(vim aa.txt 代表编辑 aa.txt文件)
- 刚进到vim 中默认是在命令模式
- 通过按下键盘的 a i o 等按键可以进入输入模式(编辑模式) 可使用上下左右移动光标
- 输入模式(编辑模式) 可以通过按ESC 退回到命令模式
- 命令模式通过输入冒号: 进入到末行模式(提示符模式)
- 末行模式(提示符模式)可以进行一系列的操作,完成操作后会自动退回到命令模式(部分命令不会退回)
- 末行模式输入包含q的指令 会退出vim
- 切记 不允许使用 ctrl +C 或者 ctrl +D 退出vim 也不可以直接关闭终端
查看文件内容
除了使用vim可以查看编辑文件内容以外,linux 还提供了很多用来查看文件的命令
more/less 查看文件
命令格式:
more 文件名
less 文件名
使用回车键(less 支持上下键)查看更多,空格键翻页。使用q退出查看模式,注意右下角会显示当前查看的百分比
cat 查看全部内容
cat 命令用来查看一个文件的全部内容
命令格式: cat [选项] 文件名
可选项:
选项 | 功能说明 |
---|---|
-n | 从1开始对所有输出的行数进行编号 |
-b | 从1开始对所有输出的非空白行的行数进行编号 |
-s | 当遇到连续两行以上的空白行时,用一个空白行代替 |
head/ tail 查看文件的头部/尾部信息
head 命令用来查看文件的前若干行
tail 命令用来查看文件的后若干行
命令格式:
head [选项] 文件名
tail [选项] 文件名
一个比较有用的命令 tail -f 文件名 一般用来查看应用执行log
grep 命令查询字符串
grep 命令可以在指定的文本中查找是否出现匹配的字符串
命令格式: grep 关键字 查找范围(文件或者标准输入)
管道与重定向
管道
有时候在操作Linux命令的时候,需要将上一个命令的执行结果作为另一个命令的输入来执行,这时我们就需要管道来做这件事。
管道符: |
命令格式: 命令1 | 命令2 | 命令3 |
使用管道命令可以将多个命令连接在一起,每一命令都独立运行,每个命令的运行结果都作为下一个命令的输入。
重定向
Linux 命令在执行的时候,正常情况下都会有输入,命令运行结束后都会有输出。输入一般是使用标准输入设备;输出使用的是标准输出设备和标准错误设备端口。
- stdin 标识标准输入设备端口,默认是键盘
- stdout表示标准输出设备,默认是显示器
- stderr表示标准错误设备,默认是显示器
所谓的重定向,指的是不使用系统标准的输入、输出、错误输出进行信息(命令)的输入与输出,而是通过重定向命令重新指定输入、输出或错误输出设备。由标准端口可知,我们一共有三种重定向,分别是 输入重定向、输出重定向和错误重定向。
命令 | 说明 |
---|---|
> | 输出重定向。如果原来目标文件存在,则新的内容会覆盖文件中原有的内容 |
>> | 输出重定向。如果原来目标文件存在,则新的内容会追加在原来内容的后面,不覆盖文件中的原有内容 |
< | 输入的重定向。即命令的输入不通过键盘来完成,而通过其他的方式 |
2> | 错误重定向 |
&> | 输出重定向和错误重定向同时实现 |
与 >> 的区别是 一个是覆盖,一个是追加.
几个查看系统相关信息的命令
- 查看Linux内核命令: uname -a 或者 uname -r
- 查看文件系统磁盘空间: df
- 查看某一文件夹下指定文件或者文件夹大小: du
- 查看当前系统内存使用情况: free
- 查看cpu的详细信息 cat /proc/cpuinfo
- 查看正在运行的进程: top
- 查看登录日志: last
- 查看登录用户信息: w who whoami
- 显示月历或者年历: cal
- 查看当前系统时间: date
远程桌面连接:
Telnet 命令
Telnet是基于TCP/IP网络的终端模拟程序。Telnet程序运行于用户本机,将本机连接到网络中的服务器。然后通过Telnet输入的命令,就会被服务器执行,就如同直接在服务器的控制台上输入命令一样
正常应用中 telnet 一般用来确定到指定机器的指定端口是否可以访问.
SSH 协议 (Secure Shell)
SSH是支持通过网络登录其他机器。通过SSH程序,可以在远端的服务器上执行命令,也可以实现不同机器之间文件的拷贝或者移动。SSH提供强大的验证机制和安全的信息交流通道。
因为其安全特性,替代了远程登录(Remote Login,RLogin),远程Shell(Remote Shell,RSH),远程文件拷贝(Rmote Copy,RCP)等服务
提升生产力效率的方法
- 学会使用Tab补全 在linux shell 中, 当用户在某一命令下键入的字符足以确定唯一的操作时, 可以通过按下Tab键来实现命令的自动补全(当不能确定命令唯一性时,连续两下tab 可以查看满足当前条件的全部命令)
- 命令别名 alias , 通过使用alias 可以将一个很长的命令缩减为几个字符,例如 alias hd=’echo hello!’ , 当输入hd的时候 就相当于输入了 echo hello 【注意: alias命令 = 两边不能有空格,每次用户注销后就会失效,若不想失效可以写入.bashrc中】
- 学会使用 history 查看历史命令: Shell自身可以记录一定数目的、以前在Shell中执行过的命令。Shell能够记录的Shell命令的个数由环境变量HISTSIZE的值所指定,该变量在配置文件/etc/profile中定义,默认值为1000。记录这些执行过的历史命令的文本文件是由环境变量HISTFILE指定的,默认情况下都是用户自己home目录下的系统文件.bash_history