Linux 基础入门
1 Linux哲学思想
这5个基本思想对理解Linux会很有帮助。
- 一切皆文件
- 短小且目的单一的程序组成
- 串联多个小程序完成复杂人物
- 尽量避免捕获用户接口
- 通过文本文件保存软件的配置信息
2 使用centos
2.1 界面
界面一般分为:
- 字符界面(CLI程序)
- 图形界面(GUI程序)
2.1.1 字符界面
CLI是Linux的使用基础。在Linux上需要抛弃许多Windows使用的习惯。通常使用CLI往往比GUI更高效。CLI本质上是一个shell程序。
2.1.2 用户界面
centos上默认安装的GUI程序为GNOME。前提是,安装系统时已经安装了该程序。
2.1.3 在CLI下启动GUI
若启动为CLI界面,即startx & 开启GUI界面。
图像桌面,可以启动多个。
例:启动第二个桌面。使用“--:2”就启动第三个桌面。以此类推。
# startx -- :1 &
2.2 用户与用户登录
2.2.1 Linux用户分类
- 管理员:又称超级用户。拥有任意系统权限。用户名为root。其命令可以工作在CPU内核模式下(ring 0)。只要管理员才允许使用管理命令。
- 普通用户:
注意:一般不要使用生产环境下的管理员登录系统。因为管理员太过于强大,同时我们一般都会存在误操作。
2.2.2 用户登录
登录系统时,Linux使用login应用程序使用户登录。
Login程序在输入密码是不会有任何显示的。
2.2.3 命令提示符
用户登录后,可以看到如下文字与光标。
root是当前有效用户。
centos是主机名的简写。FQDN的第一段。
~:波浪线,表示当前目录,又称为工作目录。每个用户进入系统中后,都处于一目录中,当前所处的目录,即工作目录。此处显示表示基名。
prompt:命令提示符。此处显示的#号。即在命令提示符后可以输入命令。
- 对于管理员,命令提示符为 # 。
- 对于普通用户,命令提示符为 $ 。
2.2.4 注销用户
注销命令:logout
3 Mainframe与终端
Linux不是Unix,是类Unix。Unix-like: Mainframe: 大型机 多用户、多任务
Linux提供多任务,多用户。
终端:terminal,显示设备+输入设备。Linux提供多个终端。Linux登录提示符与终端一一对应。
有显卡的终端为VGA终端,没有显卡的终端为Serial终端(串行终端)。
系统启动默认直接关联的终端称为控制台,Console。当内核初始化完成后,控制台记录了内核其他的信息。系统才可以使用应用程序,即可以开始使用多个终端了。
终端类型:
- 物理终端:控制台。
- 串行终端:
- 虚拟终端:并不是真正的终端。是虚拟出来的。即一个系统,一个终端,可以有多个用户同时登录。红帽Linux提供6个虚拟终端。切换方法:Ctrl+Alt+F[1-6] 。
- 伪终端:远程登录的终端、图形界面下的终端。
3.1 终端间切换
使用ctrl+alt+F(1~n)。可以在不同终端间不断切换。
3.2 GUI终端
在centos的桌面系统中,右击鼠标,点击Open in Terminal 。
显示一个终端。这是一个模拟终端,也是一个伪终端。
3.3 CentOS桌面命令行工具的一些技巧
1. ctrl+shift+t 增加一个伪终端,同时新增一个标签。
2. Ctrl+Shift+PgUp / Ctrl+Shift+PgDn 切换标签。
3. Ctrl+Shift+C / Ctrl+Shift+V 复制选中的内容 / 粘贴。
4. Shift+PgUp / Shift+PgDn 向上/向下翻页。
4 初识shell与命令使用基础
shell以命令的形式为用户提供操作Linux的接口。提供一个CLI环境与计算机使用者交互。
shell程序严格区分大小写。
Linux Shell命令的语法格式
基本格式:
COMMAND options arguments 即 命令名称 选项 参数
参数:
定义命令的作用对象。
选项:
定义命令的执行特性。选择间用空格隔开。
- 长选项:使用--引导,后跟单词,如--help, --verbose
- 短选项:使用-引导,后跟单个字符,如-h, -l, -a
多个短选项可以组合。如:-h, -l, -a 可组合为 -hla。有些选项也可以带参数。
说明:
- shell命令不能随意使用空格,因为可能会破坏命令格式。
- 若必须使用空格可能会破坏命令格式的话,则使用双引号将部分内容括起来。
4.1 shell命令命令分类
shell本质是一个命令解释器,其负责调用外部程序或执行shell内置的命令。
所以,shell命令有两类:
- 外部命令:此类命令由可执行程序提供。
- 内建命令:shell程序自身附带的命令。
4.2 命令使用初步
4.2.1 清除屏幕
输入:clear
或使用快捷键【Ctrl】+【L】
4.2.2 显示当前用户
whoami 命令显示当前用户名。
4.2.3 查看命令类型
使用type命令 查看命令类型
4.2.4 查看外部命令路径
使用which命令查看外部命令的执行程序所在的路径。
例,查看ls命令程序的路径。
# which ls
例,查看history命令程序的路径。
# which history
显示不存在。
4.2.5 history的命令历史
1、history命令:显示此前的命令。# history
命令历史是保存在文件中的,保存于~/.bash_history文件中(~为家目录,即不同用户用于不同的.bash_history文件)。所以只要是正常退出,该文件就保持之前所有命令,再次登录,之前的命令依然可以使用history命令显示。
Linux中“.”开头的文件名的文件都是隐藏的。使用ls -a 命令可以查看当前路径下的所有文件。
~/.bash_history该文件由环境变量HISTFILE所定义。
2、命令参数的使用
- 参数的使用
# history 3 显示最后使用的3条命令记录。
- 选项的使用
# history -c 删除history的命令记录。
# history -w 手动保存history,追加保存命令
- 选项参数的使用
# history -d 3 删除第3条命令记录。
3、shell中利用命令历史的一些技巧:
- 按“上下箭头”快速调用命令。
- 根据history来快速调用命令
!# 执行history中的第#条;
!-#: 执行history中的倒数第#条;
!!: 命令history中的最后一条命令;
!string: 执行命令history中最近一条以“string”开头的命令;
- !$快速使用上一条命令的参数
- 使用快捷键快速自动显示上一条命令的参数。
【Alt】+【.】
按一下【Esc】松开,再按一下【.】
4.2.6 日期相关命令
1、date命令 日期命令
date:
显示天
显示月
显示年
显示小时
显示年-月-日
显示小时:分钟:秒
能否修改时间?如果可以,如何使用?
date系统时间命令
(1)显示日,月,年(2位)
(2)显示指定格式的时间。
(3)显示年月日。
(4)显示当前时分秒。
(5)使用date设定时间
date 07091203 表示修改为当前年7月9日12:03:00。
date 07091203.31 表示修改为当前年7月9日12:03:31
说明:Linux有两套时间:硬件时钟。系统时钟。Linux在启动时系统时间会参考邮件时间。之后各走各的。所以这两个时间可能不一致。这与Windows不同。
2、hwclock命令 硬件时间
使用hwclock命令查看硬件时间。
调整,以期在的某个时间为准
hwclock -s 以系统时钟为准,将硬件时钟修改为系统时间。注意修改完仍可能有小小误差。
hwclock -w 以硬件时钟为准,将系统时间修改为硬件时间。
3、cal命令 日历命令
输入cal
补充知识
HASH表
hash,又称哈希,散列。
hash算法,基本思想分析数据的特征,计算为一串字符串。hash码可能重复。
hash表,key,hash码。value:数据。
hash查找,在hash表中,利用hash码匹配查找。hash查找的时间复杂度为O(1)的,因此速度非常快。
应用hash
MySQL的索引技术。
shell程序使用hash表存储以及使用过的外部命令。
使用hash命令查看shell程序的hash存储。
hits表示命中。在hash表中查找到一次,表示命中。
4.3 命令帮助进阶
4.3.1 获取内建命令的帮助 help命令
使用格式:# help COMMAND
例:查看history命令的帮助
# help history
help命令返回信息的意义:
- []:可省略之内容。
- <>:必须提供。
- a|b:二选一,或多选一。
- ...:前面的内容可重复出现多次。
4.3.2 获取外部命令的使用手册
Linux命令大概要学习200多个,工作中常用大概几十个。各个命令参数各不相同。因此命令帮助必不可少。
获取外部命令帮助:
1、manual: 使用手册, man COMMAND
2、info: 信息页, info COMMAND
3、简要使用帮助: COMMAND --help
4、官方文档:google
5、额外的文档:README、INSTALL、ChangeLog
redhat这些文档存放于/usr/share/doc/ls-VERSION
6、发行版官方文档,http://www.redhat.com/docs/
1、man命令
man手册:分章节
程序:配置文件(用于定义程序的工作特性)
对于不同类别的命令或配置等的手册位于不同的章节中;
- 1:用户命令;
- 2:系统调用;
- 3:库调用;
- 4:特殊文件,设备文件(一切皆文件,如硬件设备);
- 5:文件格式,即配置文件;
- 6:游戏;
- 7:杂项;
- 8:管理类命令;
使用格式:
man [章节数] 命令
章节数可选。若为未指定章节,则使用第一次出现指定命令的章节中的资料。
例:使用man命令查看ls命令的使用手册
man ls
例:使用命令查看系统调用write()函数
man 2 write
例:如果知道自己要查询的内容是哪个章节,使用 -a 选项。根据提示查看章节内容。
“printf”即是命令名称,也是函数名称。
若只使用 man printf查询,则只会显示命令的printf帮助文档。
使用 man -a printf ,即可查询出所有printf相关文档。
例:查询man命令本身的帮助文档。
man man
2、man的控制命令
滚动翻屏:
-
- 空格键:向后翻一屏;
- b: 向前翻一屏;
- 回车键:向后翻一行;
- k: 向前翻一行;
- Ctrl+d: 向后翻半屏;
- Ctrl+u: 向前翻半屏;
- G: 跳转至文件尾;
- 1G: 跳转至文件首;13G:跳转至13行;
- q: 退出;
文本查找:
-
- /keyword: 从当前光标所在行开始,向文件尾部查找;支持正则表达式。
- ?keyword: 从当前光标所在行开始,向文件首部查找;
匹配一般会匹配多个,使用n,N查找上一个和下一个。
n: 跟当前查找命令相同方向的下一个匹配;
N:跟当前查找命令相反方向的下一个匹配;
例:查找手册中“command”字符。输入/command 。
command查找到后会反色显示。
例:查看 passwd 命令。
man passwd 显示第一章中的passwd。
例:查看配置文件的使用帮助。配置文件位于第5章。
passwd命令有一个配置文件。位于/etc/passwad。
# man 5 passwd
3、获取命令所在章节 whatis 命令。
whatis COMMAND 显示相应帮助所在的章节,及其简要说明;
初装的系统whatis命令可能不能用。因为whatis是在数据库中查找的。但初装系统无相应数据库。
生产数据库
# makewhatis
等待数据库生成时间。
例:查看passwd命令所在章节与简要说明。
若出现乱码则需要修改字符集。将语言设置为英文。# export LANG=en
4、info命令
info命令,较少使用。例:info ls
info翻页:
- 上下箭头,以及PageUp、PageDown
- q: 退出;
补充:关于man手册的文件
每个命令的man手册是有对应文件中的。
man1,man2等表示第一章,第二章的man。其他表示语言包。
进入man1 。cd man1;ls即可查看该目录下的文件。里面是命令手册的压缩文件。当需要查看某命令的文件时,会将手册临时解压出来以供查看。