累成一条狗

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的组的信息
    包含:组名、口令、组标识号、组内用户列表。

 

posted on 2019-08-30 20:03  累成一条狗  阅读(535)  评论(0编辑  收藏  举报

导航