Linux入门
一、Linux
1、什么是Linux
是一款操作系统,免费、开源、高效、稳定、处理高并发性能强。
2、Linux目录结构
Linux目录结构,可以看成是一种树形结构。其中最顶端使用 “/”表示,称为根目录。由于Linux是开放源代码的,不同的公司会根据Linux的核心代码进行修改,如果不对目录的功能进行描述、约束,那么使用者使用不同公司开发的Linux系统时,会崩溃、懵逼的。所以需要对Linux的目录作用有个大概的了解。
常用目录:
(1)根目录(/):最重要的目录,相当于Windows系统中的C盘。所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。
(2)/bin:用于存放一些常用指令的目录。
比如cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。
(3)/sbin:用于存放系统管理员才能使用的指令的目录。(系统管理员用其设定系统,其他使用者最多只能用来查询)
比如:常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
(4)/home:用于存放普通用户的主(家)目录。
注:~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。
(5)/root:用于存放系统管理员的主目录。
(6)/lib:用于存放开机所需的函数库,所有的应用程序都需要用到这些函数库。
比如:/lib/modules/这个目录,会放置核心相关的模组(驱动程式)。
(7)/lost+found:这个目录一般是空的,但是系统非法关机后,这个目录会存放一些文件。
(8)/etc:用于存放所有的配置文件和子目录。
(9)/usr:用于存放应用程序的目录。
注意:不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据。相当于Windows系统中的Program files目录。
(10)/boot:用于存放启动Linux时使用的一些核心文件,比如一些连接文件以及镜像文件。
(11)/proc:是一个虚拟的目录,用来存放系统内存的映射,访问这个目录可以获取系统信息。
(12)/srv:是service的缩写,该目录存放的是一些服务启动后需要提取的数据。
(13)/sys:与/proc类似,一个虚拟的目录,记录与核心相关的信息。
(14)/tmp:用来存放临时文件的一个目录。
(15)/dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储。
(16)/media:自动识别媒体设备,比如U盘,光驱等,识别后,会挂载到此目录。
(17)/mnt:暂时挂载某些额外的设备、文件系统等(比如 vmtools 设置共享目录时会出现在此目录下)。
(18)/opt:当安装额外的软件时,可以放在该目录下,默认为空,也可放在/usr/local目录下。
(19)/usr/local:类似于/opt。
(20)/var:针对动态性文件,比如缓存、日志等经常变化的文件,可以存放在此处。
注:
/usr是安装时会占用较大硬盘容量的目录,/var是在系统运作后才会渐渐占用硬盘容量的目录。
3、根目录下必须存在的目录
根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。
目录:
(1)/etc:开机所需配置文件。
(2)/bin:开机所需命令。
(3)/dev:开机所需要的装置文件。
(4)/lib:开机所需的函式库与核心所需的模块。
(5)/sbin:开机所需的系统执行文件
4、绝对路径、相对路径
(1)绝对路径:指文件或目录在硬盘上的绝对位置。(以/开头)。 例如: /usr/local
(2)相对路径:指文件或目录相对于当前工作目录的位置。(不以/开头)。例如:./local
注:
. :代表当前的目录,也可以使用 (./ ) 来表示;
.. :代表上一层目录,也可以 (../ )来代表。
二、vi、vim
1、什么是vi?
vi是一个Linux内嵌的一个文本编辑器。
2、什么是vim?
vim可以看成是vi的增强版,具有程序编辑的能力,可以主动以字体颜色区分语法的正确性,方便程序设计、代码补充、编译以及错误跳转等常用编程的功能。
3、vi与vim的三种常见模式
(1)正常模式
即正常打开一个文件,可以使用快捷键进行上下左右移动以及粘贴复制操作,按 : 或者 / 进入命令模式。
(2)插入模式(编辑模式)
按下 i, I, o , O, a, A, r, R 中任意一个字母后(一般按 i),会进入一个编辑状态,此时可以修改文件,按 ESC 退出到 正常模式。
(3)命令模式
此模式提供相关指令,完成读取、存盘、替换、显示文件行号、离开vim编辑器等操作。
【举例:新建一个helloWorld.java】 在终端输入 vim helloWorld.java #若当前helloWorld.java文件不存在,则会创建一个。 此时进入 正常模式。 输入 i 可以进入 编辑模式。 class helloWorld{ public static void main(String[] args){ System.out.println("helloWorld"); } } 按下ESC,可以退出编辑模式,进入正常模式。
按下 : 进入命令模式。 常见命令模式命令: :wq 保存文件并退出 :q 对于未修改的文件,可以直接退出,若已经修改文件,会提示进行 :q! 操作 :q! 强制退出文件,不保存文件。
4、常用快捷键(命令)的使用
(1)拷贝、粘贴行
在正常模式下输入快捷键(命令)。若处于编辑模式,使用ESC退出即可。
拷贝:
输入 yy 可以拷贝一行(拷贝光标所在当前行),
输入 5yy 可以从当前行开始向下拷贝5行。
粘贴:
输入 p 可以粘贴拷贝的数据。
yy
5yy
p
(2)删除行
在正常模式下输入快捷键(命令)。若处于编辑模式,使用ESC退出即可。
输入 dd 可以删除一行(删除光标所在当前行)。
输入 5dd 可以从当前行开始向下删除5行。
dd 5dd
(3)查找某个关键字
在命令模式下输入快捷键(命令)。若处于编辑模式,使用ESC退出到正常模式,再按 / 进入命令模式。
输入 /关键字, 然后回车,即可开始查找 关键字。 若有多个数据时,输入 n 即可查找下一个。
/关键字 比如 : /hello
n
(4)设置文件行号、取消文件的行号
在命令模式下输入快捷键(命令)。若处于编辑模式,使用ESC退出到正常模式,再按 : 进入命令模式。
输入 :set nu 显示文件行号
输入 :set nonu 不显示文件行号
:set nu
:set nonu
(5)快速定位到文档首行 或者 尾行。
正常模式下输入:
G 快速定位到文档末尾行。
gg 快速定位到文档首行。
G
gg
(6)快速定位到某行
非编辑模式下:
比如定位到 第 20 行,
step1:可以使用 :set nu 显示行号,
step2:然后输入 20 这个数。
step3:按住 shift + g 可以 切换到第 20 行。
(7)撤销某次编辑操作。
若某次编辑文件后,想回退回上个版本。
首先ESC退出编辑,然后输入 u 即可回退回上个版本。
三、重启、关机、用户注销命令
1、shutdown
shutdown -h now 表示立即关机 shotdown -h 1 表示1分钟后关机 shotdown -r now 表示立即重启
2、halt
halt 表示立即关机
等价于
shutdown -h now 表示立即关机
3、reboot
reboot 表示立即重启
等价于
shotdown -r now 表示立即重启
4、sync
sync 表示将内存中的数据同步到磁盘,防止数据丢失。 注: 不管是重启系统还是关闭系统,应该首先运行 sync 命令,将内存中的数据写入磁盘。
5、logout
logout 表示注销当前用户的登录状态,
只适用于远程登录(比如使用Xshell5远程连接Linux,在Xshell5中输入logout可以注销当前用户连接)
四、用户管理
1、基本介绍
Linux系统是一个多用户多任务的操作系统(即Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。),任何一个需要使用该系统资源的用户,均需要向系统管理员申请一个账号,然后根据这个账号进入系统。每个账号对应一个 /home/ 目录, 不同的账号登录系统后,会进入不同的 /home/ 。
2、添加用户
useradd 用户名 #此时会默认在 /home 下创建一个与 用户名 同名的 文件夹 useradd -d 指定目录 用户名 #此时会默认在 /home 下创建一个 指定目录名的文件夹 即: useradd tom #此时会默认创建一个 /home/tom useradd -d /home/jarry jarry #此时会创建一个 /home/jarry, 若文件已存在,可能会出现一些问题。
3、指定用户密码
passwd 用户名 #给用户指定密码,此时输入密码不可见
4、删除用户
userdel 用户名 #删除用户,但不删除家目录 userdel -r 用户名 #删除用户,同时删除家目录(一般不进行此操作) 即: userdel tom #此时会删除用户,但是仍然存在 /home/tom userdel -r tom #此时会删除用户,且删除 /home/tom
5、查询用户信息
id 用户名 #用于查询用户的信息。若用户不存在,则提示无此用户。 会打印出 uid, gid, 以及 组 的相关信息。 其中: uid:指的是用户的 id 号 gid:指的是用户所在组的 id 号。 组: 指的是组的名称
6、切换用户
在Linux操作系统中,如果当前用户的权限不够,可以使用 su - 用户名, 来切换到高权限的用户(比如切换到 root 上)。
注:
权限高的用户切换到权限低的用户,不需要密码,反之需要。
su - tom #切换到tom用户,此时不能访问 /root/ 目录,会有提示信息。 exit #退回到原来的用户,比如root,此时可以访问 /root/ 目录。
7、查看当前登录的用户
whoami #用于查看当前用户
8、用户组
用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,那如果有 100、1000 甚至更多的用户呢?
显然,这种方法不太合理。最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。
groupadd 组名 #创建一个组 groupdel 组名 #删除一个组 【在创建用户的同时指定用户组】 groupadd 组名 #创建一个组 useradd -g 组名 用户名 #在创建用户的同时指定用户组
注:
useradd 用户名 # 创建用户未指定用户组时,会自动创建一个 与 用户名 同名的 用户组 【修改(切换)用户的用户组】 usermod -g 组名 用户名 #修改用户的用户组
9、用户和组的相关文件
/etc/password #用户的配置文件,记录用户的各种信息 包含:用户名、口令(密码)、用户标识号、组标识号、注释性描述、主目录。 /etc/shadow #口令(密码)的配置文件 包含:登录名、加密口令、最后一次修改时间、最小时间间隔、最大时间间隔、警告时间、不活动时间、失效时间、标志。 /etc/group #组的配置文件,记录Linux的组的信息 包含:组名、口令、组标识号、组内用户列表。