linux基础 | 基础介绍、目录、操作系统命令、用户管理、常用指令

管理员

1、Linux目录知识

Linux在根目录下有很多目录都是规定好的,比如etc里面是配置信息,boot是启动时用到的文件

Linux会把计算机的硬件映射成一个文件来管理

在Linux里面一切皆是文件

/bin 存放着最经常使用的指令

/sbin (s是super User的意思) 存放着系统管理员使用的系统管理程序

/home 普通用户的主目录,在Linux里面每一个用户都有自己的目录,一般是该目录名以用户名的账号命名

/root 目录是系统管理员,也称作超级权限者的用户主目录

/lib 系统开机所需要的基本动态连接共享库,类似于windows里面的DLL文件,所有程序都用到这些共享库

/lost+found 这个目录一般是空的,当系统非法关机之后这里就存放了一些文件

/usr 非常重要,用户的很多应用程序和文件都放在这个目录下,类似windows的program files

/boot 存放的是启动Linux时使用的一些核心文件

/proc 不能动,这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

/srv 不能动 service缩写,该目录存放一些服务启动之后需要提取的数据

/sys 不能动 这个目录下安装了Linux2.6内核中出现的一个文件系统sysfs

/tmp 这个目录是用来存放一些临时文件的

/dev 类似windows的设备管理器,把所有的硬件用文件的形式存储

/media 常用 Linux字体会自动识别一些设备,比如U盘、光驱等等,识别之后会挂载到这个目录下

/mnt 常用 系统提供该目录是为了让用于临时挂载别的文件系统,可以把外部存储挂载到/mnt/上然后进入该目录就可以查看里面的内容

/opt 这个是给主机额外安装软件所摆放的目录,比如ORACLE数据库就可以放到该目录下,默认为空

/user/local 这个是给另一个主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序

/var 这个目录中存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件

/selinux SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置

2、远程登录和远程文件传输

在linux上面查看ip地址的命令ifconfig

在xshell里面新建

在Xftp可以传文件(FileZilla也行)

3、vi和vim的基本介绍

vi是linux内置的文本编辑器,Vim可以看做是vi的增强版本

三种模式
  • 正常模式 (默认模式)
  • 插入模式 按下i,I,o,O,a,A,r,R等任何一个字母之后进入编辑模式,一般来说i即可
  • 命令行模式 输入sec再输入: (wq是写入并退出的意思)可以从插入模式切换到命令行模式

tab可以自动补全文件名

快捷键

需要在正常模式下输入才正常

回到首行和末行是在一般模式下

撤销u也是在一般模式下

4、系统操作命令

shutdown -h now 立刻进行关机

shutdown -h 1 “1分钟后会关机”

shundown -r now 现在重启计算机

halt 关机作用和上面一样

reboot 现在重新启动计算机

sync 把内存的数据同步到磁盘(重启或者关机操作前最好执行以下保存一下内存里的数据)

登录和注销

登录时尽量少用root账号登录,因为是系统管理员权限最大,可以用普通用户登录,登录之后再用“su - 用户名”命令切换成系统管理员身份 比如 su - root 切换到系统管理员 输入lougout会返回原来的那个账号,再次lougout即可退出系统

在提示符下输入logout即可注销用户(logout注销指令在图形运行级别无效)

5、用户管理

linux有一个根用户root,root可以创建多个用户,每个用户会有自己对应的家目录

useradd 用户名

默认该用户的家目录在 /home/用户名

ubuntu创建用户需要加-m参数才会创建同名家目录

如果想要自己指定新加用户的家目录的位置可以按照下面

useradd -d /home/test 用户名

pwd是显示当前所在目录

指定/修改密码

passwd 用户名 (一定要指定用户名)

删除用户
  1. userdel 用户名 删除用户,但是保留家目录 (一般情况下建议保留)
  2. userdel -r 用户名 删除用户以及用户的主目录 (慎重操作因为家目录都没了)
查询用户信息指令
id 用户名
切换用户
su -切换用户名

从权限高的用户切换到权限低的用户不需要输入密码,反之需要

当需要返回到原来用户时,使用exit/logout指令

查看当前用户/登录用户
who am i
用户组

类似于角色,系统可以对有共性/权限的多个用户进行统一的管理

新增组

groupadd 组名

clear可以清屏

linux里边一般没有提示就是成功了

默认添加用户的时候如果没有指定组,则会自动默认生成一个和这个用户同名的组并且放进去

增加用户时直接加上组

useradd -g 用户组 用户名

比如:

groupadd temp

useradd -g temp user

修改用户的组

usermod -g 用户组 用户名

用户和组相关文件

/etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户标识号:注释性描述:主目录:登录shell

/etc/shadow文件

口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/文件

组(group)的配置文件,记录Linux包含的组的而信息

每行含义:组名:口令:组标识号:组内用户列表

shell可以理解为命令和linux内核之间的编译器

shell种类有很多一般用bash

6、实用指令

指定运行级别

0:关机

1:单用户

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用的运行级别是3和5,也可以指定默认的运行级别

multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

systemctl get-default获取当前的运行级别

systemctl set-default graphical.target设置默认的运行级别

找回root密码

启动系统在开机界面输入e

在UTF-8后面输入 init=/bin/sh 输入完之后按ctrl-x进入单用户模式

在光标闪烁的位置输入: mount -o remount,rw / 完成后按键盘的回车键

在新的一行最后面输入 passwd 完成后按键盘的回车键输入密码,然后再次确认密码,密码修改成功后会显示passwd...的样式说明密码修改成功

接着在鼠标闪烁的位置中输入 touch /.autorelabel 完成后按回车键

接着在光标闪烁的位置继续输入 exec /sbin/init 完成后按键盘的回车键(等待时间较长并不是死机了)

帮助指令

linux里面的隐藏文件都是以 . 开头的

选项可以组合使用且没有顺序之分

  • man获得帮助信息 man 命令或者配置文件
  • help 命令 (获得shell内置命令的帮助信息)
文件目录指令
  • pwd (显示当前工作目录的绝对路径)

  • ls [选项] [目录或者是文件]

    -a显示当前目录的所有文件和目录,包括隐藏的

    -l 以列表的方式显示信息

  • cd [参数] (切换到指定目录,绝对路径和想对路径)

    cd~或者cd: 回到自己的家目录

    cd.. 回到当前目录的上级目录

  • mkdir [选项]

    用于创建目录

    -p 创建多级目录

  • rmdir [选项]

    删除空目录

    如果删除的是非空目录,需要使用rm -rf 删除(!谨慎使用),最好备份一份再修改

  • touch 文件名称

    创建空文件

  • cp

    拷贝文件到指定目录

    cp [选项] source dest

    -r:递归复制整个文件夹

    案例:

    1. 将/home/hello.txt 拷贝到 /home/bbb 目录下

      cp hello.txt/home/bbb

    2. 递归复制整个文件夹,比如将/home/bbb整个目录,拷贝到/opt

      cp -r /home/bbb /opt

    3. 强制覆盖不提示的方法cp

      cp -r /home/bbb /opt

  • rm 指令移除文件或目录

    rm [选项] 要删除的文件或目录

    -r 递归删除整个文件夹

    -f 强制删除不提示

文件目录类
  • mv 移动文件与目录或者重命名

基本语法

mv oldNameFile newNameFile (重命名)

mv /temp/movefile/targetFolder (移动文件)

  • cat 查看文件内容

管道命令就是把上次命令得到的结果,继续交给下一个命令处理

cat [选项] 要查看的文件

-n 显示行号

管道命令 | more

cat -n /etc/profile | more [进行交互]

打开一个文件在more状态时空格可以翻页,enter可以查看下一行

more指令中内置了若干快捷键(交互的指令)

  • less指令 用来分屏查看文件内容,

    与more指令类似,但是比more指令更加强大,支持显示各种终端,less指令显示内容是不是一次将整个文件加载后才显示

  • echo 输出内容到控制台

    echo [选项] [输出内容]

    比如输出环境变量 $PATH $HOSTNAME

    echo $HOSTNAME

  • head

    用于显示文件的开头部分内容,默认head指令显示文件的前10行内容

    head 文件 (查看文件头10行内容)

    head -n 5 文件 (查看文件头5行内容,5可以是任意行数)

  • tail

    用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容

    tail 文件 (查看文件尾10行内容)

    tail -n 5 文件 (查看文件尾5行内容,5可以是任意行数)

    tail -f 文件 (实时追踪该文档的所有更新) ctrl + z可以退出 或者 ctrl + c

  • > 指令 和 >>指令

    > 输出重定向 和 >> 追加

    重定向的意思可以理解为,本来在终端显示的内容,可以让它显示在一个文件中比如xxx.txt

    一个箭头相当于覆盖,两个箭头相当于追加

    ls -l > 文件 (列表的内容写入到文件a.txt中)

    ls -al >>文件 (列表的内容追加到文件aa.txt的末尾)

    cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)

    echo "内容">>文件

    案例:

    将/home目录下的文件列表 写入到/home/info.txt中,覆盖写入

    ls -l /home > /home/info.txt [如果info.txt没有则会自动创建]

​ cal会显示当前的日历信息

  • ln

    软连接也称符号连接,类似windows里面的快捷方式,主要存放了链接其他文件的路径

    ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)

    案例:

    在/home目录下创建一个软链接myroot,链接到/root目录

    ln -s /root /home/myroot

  • history

    查看已经执行过历史命令,也可以执行历史指令

    history (功能描述:查看已经执行过历史命令)

    1. 显示所有的历史命令 history
    2. 显示最近使用过的10个指令 history 10
    3. 执行历史编号为5的指令 !5
时间日期指令
基本语法

date 显示当前时间

date + %Y 显示当前年份

date + %m 显示当前月份

date + %d 显示当前是哪一天

date + "%Y - %m - %d %H:%M:%S" 显示年月日时分秒

设置日期指令

date -s 字符串时间 比如:

date -s "2020-11-03 20:02:10"

cal指令

查看日历指令

cal 2020可以显示2020年全年的日历

查找指令
find指令

从指定目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端

语法:find [搜索范围] [选项]

选项 功能
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件

案例1:按文件名:根据名称查找/home目录下的hello.txt文件

find /home -name hello.txt

案例2:按照拥有者:查找/opt目录下,用户名为nobody的文件

find /opt -user nobody

案例3:查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有k,M,G)

find / -size +200M

ls -l命令可以显示文件列表信息及大小,但是单位是字节,如果想转换成人看的可以写成ls -lh这个h代表human

locate指令

可以快速定位文件的路径,locate不会遍历整个文件系统是自建数据库所以查询速度比较快

基本语法:locate 搜索文件

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

案例:使用locate指令快速定位hello.txt文件所在的目录

which指令

可以查看某个指令在哪个目录下,比如ls指令在哪个目录

whitch ls

grep指令和管道符号 |

grep过滤查找,管道符 “|”,表示将前一个命令的处理的结果输出传递给后面的命令处理

基本语法:

grep [选项] 查找内容 源文件

选项 功能
-n 显示匹配行及行号
-i 忽略字母大小写

cat a.txt | grep "hello" 在a.txt文件里找hello

案例:在hello.txt文件中,查找"yes"所在行,并且显示行号

写法1:cat /home/hello.txt | grep -n "yes" // -n是显示行号

写法2:grep -n "yes" /home/hello.txt

压缩和解压缩类
gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压

基本语法:

gzip文件 (压缩文件,只能将文件压缩为*.gz文件)

gunzip 文件.gz (解压缩文件命令)

案例1:gzip压缩,将/home下的hello.txt文件进行压缩

gzip /home/hello.txt

案例2:gunzip压缩,将/home下的hello.txt.gz文件进行解压缩

zip/unzip指令

zip用于压文件,unzip用于解压,这个在项目打包发布中很有用的

基本语法:

zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)

unzip [选项] XXX.zip (解压缩文件)

zip常用选项

-r: 递归压缩,即压缩目录

unzip的常用选项

-d<目录> 指定解压后文件的存放目录

案例1:将/home下的 所有文件/文件夹进行压缩成myhome.zip

zip -r myhome.zip /home/* // 带星号和不带都一样

案例2:将myhome.zip 解压到 /opt/tmp目录下

mkdir /opt/tmp

unzip -d /opt/tmp /home/myhome.zip

tar指令

tar指令是打包指令,最后打包后的文件时.tar.gz的文件

基本语法:

tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)

选项说明:

选项 功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件

案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

案例2:将/home的文件夹 压缩成 myhome.tar.gz

tar -zcvf myhome.tar.gz /home/

案例3:将pc.tar.gz 解压到当前目录,切换到/opt

tar -zxvf pc.tar.gz

案例4:将myhome.tar.gz 解压到/opt/tmp2目录下

mkdir /opt/tmp2

tar -zxvf /home/myhome.tar.gz -C /opt/tmp2