第三篇Linux入门

一.linux基本指令

1.Linux根目录为/,后续路径用/分隔,如/home/admin

2.Linux命令

  • 基础格式:



    command: 命令本身

    -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节

    parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

  • ls命令:



    ls表示展示当前目录下文件信息

    -alh为可选项

    -a:表示列出全部文件(包括隐藏文件)

    -l:以列表形式展示,并输出权限等更多信息

    -h:列出文件大小,更加便于阅读<必须搭配-l一起使用>

  • cd命令



    切换到指定路径下<需要有执行权限>

  • pwd命令

    语法就为:pwd

    查看当前所在工作目录<防迷路>

  • 特殊路径符

    . 表示当前目录 cd ./Desktop

    .. 表示上一级目录, cd .. 切换到上一级目录

    ~ 表示当前用户的home目录 cd ~

  • mkdir命令



    mkdir用于在指定路径下创建目录(文件夹)

    -p:表示自动创建不存在的父目录,适用于创建连续多层级的目录<递归创建文件>

  • touch命令



    用于创建文件<mkdir创建文件夹>

  • cat命令



    查看文件内容<文本格式>

  • more命令



    cat是直接将内容全部显示出来

    more支持翻页,如果文件内容过多,可以一页页的展示

    空格进行翻页,按q即可退出查看

  • cp命令



    可以用于复制文件\文件夹

    参数1,Linux路径,表示被复制的文件或文件夹

    参数2,Linux路径,表示要复制去的地方

    -r用于复制文件夹,递归复制文件夹内所有文件

  • mv命令



    用于移动文件\文件夹(或者重命名)

    参数1,Linux路径,表示被移动的文件或文件夹

    参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

  • rm命令



    用于删除文件、文件夹

    -r 选项用于删除文件夹

    -f 表示force,强制删除(不会弹出提示确认信息)

    参数可多个,表示删除多个文件

    rm -rf /*

  • which命令



    可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里

  • find命令



    查找文件名叫做:test的文件,从根目录开始搜索: find / -name "test"<可以模糊查询>

  • find可选项还有"-size",格式如下:



    +、- 表示大于和小于

    n表示大小数字

    kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB

    从根目录下查找小于10KB的文件: find / -size -10k

  • grep命令



    可以通过grep命令,从文件中通过关键字过滤文件行。

    选项-n,可选,表示在结果中显示匹配的行的行号。

    关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来。

    文件路径,必填,表示要过滤内容的文件路径。

  • wc命令



    -c,统计bytes数量 count

    -m,统计字符数量 number

    -l,统计行数 line

    -w,统计单词数量 word count

    不带可选项则全部信息输出<分别为:行数,单词数,字节数>

  • 管道符|

    管道符的含义是:将管道符左边命令的结果,作为右边命令的输入

  • echo命令



    可以使用echo命令在命令行内输出指定内容<类似printf>

    PS:我们可以通过将命令用反引号(通常也称之为飘号)`将其包围被该符号包围的内容,会被作为命令执行,而非普通字符

  • 重定向符 > >>

    单个>: 将左侧命令的结果,覆盖写入到符号右侧指定的文件中

    两个>>: 将左侧命令的结果,追加写入到符号右侧指定的文件中

  • tail命令



    可以查看文件尾部内容,跟踪文件的最新更改

    -f 表示持续跟踪文件,随时更新最后内容

    -num 表示查看尾部多少行,默认为10行(-3 -7 -5 ...)

二. vi/vim使用

  • 是Linux中最经典的文本编辑器。vim为加强版
  • vi\vim编辑器的三种工作模式:



    命令模式(Command mode):所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。

    输入模式(Insert mode):所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。

    底线命令模式(Last line mode):通常用于文件的保存、退出。
  • 通过vi/vim命令编辑文件(vim + 文件名),会打开一个新的窗口,此时这个窗口就是:命令模式窗口,后续操作如下图切换模式。
  • 命令模式快捷键







    常用:

    i 进入编辑模式,esc回退到命令模式.:进入底线模式

    0 光标移到当前行开头,$移动到当前行结尾

    dd 删除光标所在行 ndd<删除光标以下n行>

    yy 复制光标所在行 nyy同理

    p 粘贴 u 撤回 ctrl + r反撤回

    gg跳转到首行 G跳转到尾行

三. Linux权限<用户与用户组>

  • root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。

  • su命令



    用于账户切换的系统命令

    -符号是可选的,表示是否在切换用户后加载环境变量,建议带上

    exit命令用于退出登录

  • sudo命令



    为普通的命令授权,临时以root身份执行

    但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

  • 为普通用户配置sudo认证

    切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers

    在文件的最后添加:



    其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码

    最后通过 wq 保存

  • 用户组

    Linux中关于权限的管控级别有2个级别,分别是:

    针对用户的权限控制

    针对用户组的权限控制

  • 创建用户组

    groupadd 用户组名

  • 删除用户组

    groupdel 用户组名

  • 创建用户

    useradd [-g -d] 用户名

    选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g

    选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

  • 删除用户

    userdel [-r] 用户名

    选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

  • 查看用户所属组

    id [用户名]

    参数:用户名,如果不提供则查看自身

  • 修改用户所属组

    usermod -aG 用户组 用户名,将指定用户加入指定用户组

  • getent passwd

    可以查看当前系统中有哪些用户



    共有7份信息,分别是:

    用户名:密码(x 隐藏):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

  • getent group

    可以查看当前系统中有哪些用户组



    包含3份信息,组名称:组认证(显示为x):组ID

  • 文件权限信息

    通过ls -l 可以以列表形式查看内容,并显示权限细节



    序号1,表示文件、文件夹的权限控制信息

    序号2,表示文件、文件夹所属用户

    序号3,表示文件、文件夹所属用户组

    d rwx rwx rwx <用户 用户组 其他用户>

  • chmod命令

    修改文件、文件夹的权限信息



    选项:-R,对文件夹内的全部内容应用同样的操作<表递归>

    PS: chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x

    将一组看成二进制三个1, 111 101 001 -> 751 -> chmod 751 hello.txt

  • chown命令

    可以修改文件、文件夹的所属用户和用户组



    -R,同chmod,对文件夹内全部内容应用相同规则

    : 用于分隔用户和用户组<: 前为用户, 后为用户组>

    chown root hello.txt,将hello.txt所属用户修改为root

    chown :root hello.txt,将hello.txt所属用户组修改为root

四. 实用技巧

1.常用快捷键

  • ctrl + c 强制停止
  • ctrl + d 退出或登出<su命令登出>
  • history查看历史命令
  • ctrl + r,输入内容去匹配历史命令
  • ctrl + a,跳到命令开头
  • ctrl + e,跳到命令结尾
  • ctrl + 键盘左键,向左跳一个单词
  • ctrl + 键盘右键,向右跳一个单词
  • ctrl + l,可以清空终端内容

2.软件安装

  • yum命令



    用于自动化安装配置Linux软件,并可以自动解决依赖问题。

    -y,自动确认,无需手动确认安装或卸载过程

    install:安装

    remove:卸载

    search:搜索

    PS:需要root权限,需要联网

  • apt命令



    为ubantu的自动化软件安装

    用法一致

3.服务控制

  • systemctl命令



    服务<软件>控制指令,使用systemctl命令控制:启动、停止、开机自启

    start 启动

    stop 关闭

    status 查看状态

    enable 开启开机自启

    disable 关闭开机自启

    Ps:部分软件安装后没有自动集成到systemctl中,我们可以手动添加。

4.软连接

  • ln命令



    -s选项,创建软连接<类似Windows中快捷方式>

    参数1:被链接的文件或文件夹

    参数2:要链接去的目的地

5.日期时间

  • date命令



    通过date命令可以在命令行中查看系统的时间。

    格式化字符串:通过特定的字符串标记,来控制显示的日期格式。

    %Y 年

    %y 年份后两位数字 (00..99)

    %m 月份 (01..12)

    %d 日 (01..31)

    %H 小时 (00..23)

    %M 分钟 (00..59)

    %S 秒 (00..60)

    %s 自 1970-01-01 00:00:00 UTC 到现在的秒数

    ex.

    -d选项,可以按照给定的字符串显示日期,一般用于日期计算

    ex.

  • Linux修改时区

    将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可.

  • ntp程序

    我们可以通过ntp程序自动校准系统时间

    安装ntp:yum -y install ntp

    启动并设置开机自启:

    systemctl start ntpd

    systemctl enable ntpd

    当ntpd启动后会定期的帮助我们联网校准系统的时间

    也可以手动校准(需root权限):ntpdate -u ntp.aliyun.com

6.IP地址

  • ifconfig命令

    查看本机的ip地址,如无法使用ifconfig命令,可以安装:yum -y install net-tools

  • Linux修改主机名

    hostname查看主机名



    命令:hostnamectl set-hostname 主机名,修改主机名(需root)

7.网络传输

  • wget命令



    wget是非交互式的文件下载器,可以在命令行内下载网络文件

    -b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件

    url,下载链接

  • curl命令



    可以发送http网络请求,可用于:下载文件、获取信息等

    -O,用于下载文件,当url是下载链接时,可以使用此选项保存文件

    url,要发起请求的网络地址

  • nmap命令

    语法:nmap 被查看的IP地址

    安装nmap:yum -y install nmap

  • netstat命令

    语法:netstat -anp | grep 端口号,安装netstat:yum -y install net-tools

8.进程管理

  • ps命令



    -e,显示出全部的进程

    -f,以完全格式化的形式展示信息(展示全部信息)

    一般就使用 ps -ef



    从左到右分别是:

    UID:进程所属的用户ID

    PID:进程的进程号ID

    PPID:进程的父ID(启动此进程的其它进程)

    C:此进程的CPU占用率(百分比)

    STIME:进程的启动时间

    TTY:启动此进程的终端序号,如显示?,表示非终端启动

    TIME:进程占用CPU的时间

    CMD:进程对应的名称或启动路径或启动命令

  • kill命令



    通过kill命令关闭进程

    -9 表示强制关闭

9.主机状态

  • top命令<任务管理器>

    直接输入top即可,按q或ctrl + c退出,默认每5秒刷新一次



    第一行:

    top:命令名称,14:39:58:当前系统时间,up 6 min:启动了6分钟,2 users:2个用户登录,load:1、5、15分钟负载

    第二行:

    Tasks:175个进程,1 running:1个进程子在运行,174 sleeping:174个进程睡眠,0个停止进程,0个僵尸进程

    第三行:

    %Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率

    第四、五行:

    Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用

    KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用

  • top命令更多



    PID:进程id

    USER:进程所属用户

    PR:进程优先级,越小越高

    NI:负值表示高优先级,正表示低优先级

    VIRT:进程使用虚拟内存,单位KB

    RES:进程使用物理内存,单位KB

    SHR:进程使用共享内存,单位KB

    S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)

    %CPU:进程占用CPU率

    %MEM:进程占用内存率

    TIME+:进程使用CPU时间总计,单位10毫秒

    COMMAND:进程的命令或名称或程序文件路径

  • top交互式选项

    当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制

  • df命令

    语法:df [-h]

    可以查看硬盘的使用情况

    -h,以更加人性化的单位显示

  • iostat命令

    语法:iostat [-x] [num1] [num2]

    查看CPU、磁盘的相关信息

    -x,显示更多信息

    num1:数字,刷新间隔,num2:数字,刷新几次

  • sar命令

    语法:sar -n DEV num1 num2

    查看网络的相关统计

    -n,查看网络,DEV表示查看网络接口

    num1:刷新间隔(不填就查看一次结束),num2:查看次数(不填无限次数)

10.环境变量

  • env命令

    语法: env

    可查看当前系统中记录的环境变量

    环境变量是一种KeyValue型结构,即名称和值,如下图

  • \(符号
    在Linux系统中,\)符号被用于取”变量”的值。

    环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。

    取得环境变量的值就可以通过语法:$环境变量名 来取得

    比如: echo $PATH

    就可以取得PATH这个环境变量的值,并通过echo语句输出出来。

  • export命令<临时>

    语法:export 变量名=变量值

    用户自行设置环境变量

    若想永久生效:

    针对当前用户生效,配置在当前用户的: ~/.bashrc文件中

    针对所有用户生效,配置在系统的: /etc/profile文件中

    并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效

11.上传和下载<需要终端机 如xshell, finalshell>

可以通过:yum -y install lrzsz,安装。

  • rz命令

    语法:直接输入rz即可

  • sz命令

    语法: sz 要下载的文件

    文件会自动下载到桌面的:fsdownload文件夹中。

12.压缩与解压

  • tar命令



    -c,创建压缩文件,用于压缩模式

    -v,显示压缩、解压过程,用于查看进度

    -x,解压模式

    -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个

    -z,gzip模式,不使用-z就是普通的tarball格式

    -C,选择解压的目的地,用于解压模式

    tar命令均可以进行压缩和解压缩的操作

    常用:

    tar -cvf xxx.tar {打包压缩文件集合} <仅打包,不压缩>

    tar -zcvf xxx.tar.gz {打包压缩文件集合} <打包并且压缩>

    tar -xvf xxx.tar <解包>

    tar -zxvf xxx.tar.gz <解压压缩包>

    tar -xvf test.tar -C /home/itheima <-C + Path 指定解压路径>

    -f选项,必须在选项组合体的最后一位

    -z选项,建议在开头位置

    -C选项单独使用,和解压所需的其它参数分开

  • zip命令



    -r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致<表示递归>

    常用:

    zip xxx.zip {打包压缩文件集合} <压缩文件,不包含文件>

    zip -r xxx.zip {打包压缩文件集合} <压缩文件,且包含文件>

  • unzip命令



    -d,指定要解压去的位置,同tar的-C选项

    常用:

    unzip xxx.zip,<将xxx.zip解压到当前目录>

    unzip xxx.zip -d /home/itheima,<将xxx.zip解压到指定文件夹内(/home/itheima)>


END!

Linux再学!的更多相关文章

  1. Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  2. 【C】 01 - 再学C语言

    “C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...

  3. Linux必学的60个命令

    inux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想 ...

  4. Linux必学的命令

    Linux必学的命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正 ...

  5. Linux必学的60个命令【转载】

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存  [转载地址]http://blog.chinaunix.net/uid-16728139-id-3154272.ht ...

  6. [Python]再学 socket 之非阻塞 Server

    再学 socket 之非阻塞 Server 本文是基于 python2.7 实现,运行于 Mac 系统下 本篇文章是上一篇初探 socket 的续集, 上一篇文章介绍了:如何建立起一个基本的 sock ...

  7. Linux 从头学 01:CPU 是如何执行一条指令的?

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  8. Linux从头学02:x86中内存【段寻址】方式的来龙去脉

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  9. Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  10. Linux从头学06:16张结构图,彻底理解【代码重定位】的底层原理

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

随机推荐

  1. SMU Spring 2023 Contest Round 5(2023 (ICPC) Jiangxi Provincial Contest -- Official Contest)

    题目链接 Problem A. Drill Wood to Make Fire S * V >= n即可 #include<bits/stdc++.h> #define int lo ...

  2. C语言/实现MD5加密

    本文详细视频讲解,已经发布到B站 https://www.bilibili.com/video/BV1uy4y1p7on/ 更多仔细,请关注公众号:一口Linux 一.摘要算法 摘要算法又称哈希算法. ...

  3. HTB-BoardLight靶机笔记

    BoardLight靶机笔记 概述 HTB的靶机BoardLight 靶机地址:https://app.hackthebox.com/machines/BoardLight 一.nmap扫描 1)端口 ...

  4. 移动端100vh的问题与解决方案

    之所以100vh在移动端出现问题,原因大致如上图,真搞不懂,为什么总是有反人类的设计出现. 经过多方参考,实测有效的方案如下: <style> :root { --vh: 1vh; } & ...

  5. JavaScript设计模式样例八 —— 适配器模式

    适配器模式(Adapter Pattern) 定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作.目的:主要解决在软件系统中,常常要将一些&quo ...

  6. C#应用 - 事件总线

    目录 前言 1,简介 2,设计 2.1 设计思路 2.2 设计实现 2.2.1 IEventData 2.2.2 EventBus 2.2.3 用起来 3,问题 3.1 起缘 3.2 改造 3.3 用 ...

  7. 通过 GitHub Actions 实现代码的自动编译和发布

    GitHub Actions 是一个非常强大的工具,可以用来实现各种自动化任务,包括自动编译和发布 release.以下是一个基本的工作流程,展示如何使用 GitHub Actions 实现这一目标: ...

  8. 小tips:npm与npx的区别

    npm npm是Node.js的软件包管理器,其目标是自动化的依赖性和软件包管理. 这意味着,可以在package.json文件中为项目指定所有依赖项(软件包),当需要为其安装依赖项时,只要运行npm ...

  9. 推荐3款卓越的 .NET 开源搜索组件库

    前言 最近有不少同学提问:.NET有哪些开源的搜索组件库可以推荐的吗?,今天大姚给大家推荐3款卓越的 .NET 开源搜索组件库,希望可以帮助到有需要的同学. Elasticsearch .NET El ...

  10. Vue3——SVG 图标配置

    1. SVG 图标配置 安装 SVG 依赖插件 vite-plugin-svg-icons npm i vite-plugin-svg-icons -D npm install fast-glob - ...