欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux入门

程序员文章站 2022-04-09 20:10:16
一、Linux 1、什么是Linux 是一款操作系统,免费、开源、高效、稳定、处理高并发性能强。 2、Linux目录结构 Linux目录结构,可以看成是一种树形结构。其中最顶端使用 “/”表示,称为根目录。由于Linux是开放源代码的,不同的公司会根据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:暂时挂载某些额外的设备,类似于/media。

(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),会进入一个编辑状态,此时可以修改文件。

(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 组名 用户名   #在创建用户的同时指定用户组

【修改(切换)用户的用户组】
usermod -g 组名 用户名    #修改用户的用户组

9、用户和组的相关文件

/etc/password     #用户的配置文件,记录用户的各种信息
    包含:用户名、口令(密码)、用户标识号、组标识号、注释性描述、主目录。
    
/etc/shadow       #口令(密码)的配置文件
    包含:登录名、加密口令、最后一次修改时间、最小时间间隔、最大时间间隔、警告时间、不活动时间、失效时间、标志。

/etc/group        #组的配置文件,记录linux的组的信心
    包含:组名、口令、组标识号、组内用户列表。