Linux笔记-1

概述

简介

  1. Linux是现在服务器上最常用的操作系统(OS - Operating system) - 所谓的操作系统本质上也是一个软件,是一个可以运行其他软件的容器
  2. 如果一台服务器,没有安装操作系统,此时称之为裸机。裸机可以使用,在使用的时候需要使用机器语言或者汇编语言;为了提高可读性,采用了操作系统,可以才能使用通用的编程语言操作
  3. 经常使用的操作系统:Windows、Linux、Unix、Harmony、Mac、Android、IOS等
  4. Linux官网:www.linux.org
  5. Linux之父:Linus(林纳斯),还开发了Git - 名言:Talk is cheap, show me your code!

发展历程

  1. 1970年左右,贝尔实验室(曾经是全球最顶级的实验室之一,曾经也是在通信领域最顶级的实验室)在肯.汤普森(Unix之父)的主导和带领下,试图开发一套分时操作系统Unix,Unix是利用B语言开发的 - Unix也是众多分时操作系统的鼻祖
  2. 由于B语言无法直接解释为机器码,所以导致Unix的效率一直不高。后来,肯.汤普森和丹尼斯.里奇改进了B语言 - new B语言,改名为了C语言,利用新的语言重新设计了Unix系统,大大的提升了操作系统的执行效率。到此,Unix正式面世
  3. 各大公司,纷纷针对Unix系统进行了改进和适配,都产生了各自公司的Unix系统(Unix和硬件的耦合度非常高):IBM-AIX、HP-UX等
  4. 荷兰阿姆斯特丹大学的教授xxx(《计算机网络》的一书的作者)为了教学安排,仿照Unix设计了一个拥有教学的操作系统MINIX(mini unix)。由于MINIX系统是用于教学操作,本身存在非常多的问题
  5. Linus在上大学期间,学习MINIX系统的时候,产生了非常浓厚的兴趣,试图解决MINIX系统存在的问题(打补丁),打补丁的过程中,发现代码量已经超过了一万行,到此,Linus决定放弃MINIX,试图开发独立的操作系统 - 1991年6月份
  6. 同年9月份,Linux系统面世 - Linux0.01版本
  7. 1991年底,Linus将Linux系统公布并开源,此后各个机构和组织都针对Linux进行了不同程度的开发,也因此Linux系统是20世纪最伟大的发明之一

发行版

  1. Red Hat系列(红帽系列 - 红帽认证)
    1. RHEL(Red Hat Enterprise Linux):Red Hat公司(2018年被IBM收购)推出的开源的收费版的Linux系统,也是目前最稳定的Linux系统,收费不菲,不面向个人用户
    2. Fedora:Fedora社区维持,红帽公司赞助的免费版本。红帽公司将最新版的系统发布到Fedora上,免费公开给用户使用,每6个月进行一次强制更新
    3. CentOS:Centos社区维持,将RHEL中的付费部分去掉,剩余的部分开源,就是Centos系统。Centos已经被红帽收购,也因此Centos前后发生了较大的变化:Centos8作为分水岭,CentOS8及以前的版本更新稳定,Centos8以后的版本更名为Centos Steam,也是每6个月已更新,可以认为Centos Stream是另一个版本的Fedora
    4. Rockey Linux(岩石系列):其实就是原来的Centos,开源、免费、稳定
  2. Debian系列
    1. Debian:Debian社区维护,开源、免费。分为稳定版、不稳定版和测试版
    2. Ubuntu:以桌面应用为主的Linux系统,相对其他的Linux系统,Ubuntu提供了更友好的界面操作
  3. 国产Linux
    1. Deepin(深度):基于Debian开发,提供个人版和企业版,提供了较多的应用,并且兼容安卓应用
    2. KylinOS(麒麟):国防科技大学基于Ubuntu研发,更多的应用于军工领域
    3. UOS(统信):以Deepin系统为基础做的二次开发,跟为个人版、家庭版、企业版和专业版,更多的应用于政府领域
  4. SUSE系统
    1. SLES:德国SUSE公司开发的商用版Linux系统,也号称是最华丽的Linux系统,银行领域偏多
    2. Open SUSE:类似于RHEL和Centos的关系

目录结构

  1. 在Linux中,一切皆文件

  2. 在Linux中,根路径是/。路径分为绝对路径和相对路径

    1. 绝对路径:以根路径为起始路径,例如:/var/lib/log
    2. 相对路径:不以根路径为起始路径,例如tmplib/log
      1. .:当前路径。lib/log./lib/log表示当前路径下的lib目录下有一个log
      2. ..:上一层路径。../lib表示返回上一层目录,然后在上一层中寻找lib。
    3. 实际开发中,相对路径使用偏多
  3. 目录结构

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    1. bin:binary的缩写,存放的是Linux常用的指令
    2. boot:Linux用于存放系统引导文件
    3. dev:device的缩写,用于管理Linux的设备文件
    4. etc:存放系统环境配置和环境变量,不同于Windows,Linux中环境变量也是在文件中配置
    5. home:其他用户的家路径。Linux本身是一个多用户操作系统,允许创建多个用户,其中超级用户是root,除此之外的其他用户的根路径都是在home下。例如创建了一个tom用户,那么此时就会产生一个/home/tom用于存放tom用户的数据
    6. lib和lib64:library的缩写,存放的是Linux的系统文件
    7. media:临时挂在外在媒介
    8. root:root用户的数据目录
    9. tmp:临时目录,系统运行产生的缓存和日志都是在tmp目录下,当系统磁盘空间不足时,会自动清理tmp目录下的文件,所以自己的文件一定不能放在tmp下!
    10. var:软件运行产生的日志数据会存在这个路径下
    11. opt:operation的缩写,Linux系统提供的,希望用户在此进行操作的目录

vi和vim

  1. vi是Linux提供的用于编辑文件的命令,但是没有格式和高亮显示

  2. vim的功能和vi一致,只是提供了高亮显示

  3. 需要注意:Linux中默认内置了vi命令,vim需要安装

  4. 安装vim

    yum -y install vim
    
  5. 存在三种模式:一般模式、编辑模式和指令模式

  6. vi或者vim一个文件的时候,默认进入一般模式,在这种模式下,无法对数据进行修改或者插入

  7. 如果需要对数据进行修改或者插入,那么进入编辑模式

  8. 案例

    1. 编辑文件

      # 切换到opt下
      cd /opt
      # 创建空文件
      # 命令格式:touch 文件名
      touch a
      # 编辑文件
      # 命令格式:vim 文件名
      # 或者:vi 文件名
      vim a
      
    2. 进入编辑模式:按i, I, o, O, a, A, r, R, Insert

    3. 退出编辑模式:按esc,默认进入的是一般模式

    4. 进入命令模式:输入:

      参数解释
      wwrite的缩写,表示写入/保存
      qquit的缩写,表示退出
      !表示强制执行
  9. 一般模式操作

    操作解释
    yy复制当前一行数据
    p粘贴数据
    y数字y例如y3y,表示复制3行
    dd删除一行
    d数字d例如d3d,表示删除3行
    u撤销上一步
    x向后删除一个字母,等价于del
    X向前删除一个字母,等价于Backspace
    yw复制一个单词
    dw删除一个单词
    shift+$挪到行尾
    shift+^挪到行首
    shift+g挪到页尾
    数字+shift+g挪到指定行,例如3+shift+g。如果需要挪到页头,那么就是1+shift+g
  10. 命令模式操作

    参数解释
    :set nu显示行号
    :set nonu关闭行号
    /单词 或者 ?单词查找单词 1. n向下寻找 2. N向上寻找
    :noh关闭高亮

常用命令

帮助命令

  1. man:获取帮助信息

    # 命令格式
    man 命令/配置文件
    # 获取cd命令的帮助信息
    man cd
    
    字段解释
    NAME命令的名称和单行描述
    BASH BUILTID COMMANDS命令之后可以添加的参数
  2. help:获得shell内置命令的帮助信息

    # 命令
    help 命令
    # 获得cd命令的帮助信息
    help cd
    
  3. whatis:确定这个命令是干什么的

    # 命令格式
    whatis 命令
    

目录文件类

  1. pwd:print working directory,查看当前所在的绝对路径

  2. ls:list(列出)的缩写

    ls [参数] [路径]
    
    1. 案例

      # 查看当前路径下所有的文件和目录
      ls
      # ls 路径
      # 表示查看指定路径下所有的子文件和子目录,不包含隐藏文件
      # 在Linux中,.开头的文件是隐藏文件,默认不被ls发现
      ls /var
      # ls -a [路径]
      # -a是all的缩写,表示所有,因此这个命令表示查看指定路径下的所有子文件和子目录,包含隐藏文件
      ls -a
      ls -a /root
      # ls -l [路径]
      # -l是list的缩写,ls -l表示列出指定路径下所有子文件和子目录的详细信息
      ls -l /var
      # drwxr-xr-x.  2      root   root             19                Feb 27 00:28   account
      # 文件类型和权限  链接数  所有者  所有者所在的用户组   文件大小,单位是字节 文件的修改日期    文件名
      # -开头表示这是个文件,d开头表示这是个目录,l开头表示这是个软链接(可以理解为Windows中的快捷方式)
      # ls -l可以缩写为ll
      
    2. 权限解释

      文件目录
      r - read可以被读取可以查看这个目录下的子文件和子目录
      w - write可以被修改对这个目录下的子目录和子文件进行创建、删除、重命名、复制操作
      x可执行,只要这个文件能被打开、能被修改等,就算是可以被执行这个目录可以被打开
    3. 在Linux中,一个文件能否被看到,由它的父目录的权限决定

    4. 权限每三位一组,决定用户、用户组和其他用户的权限

  3. cd:change directory,切换目录

    cd [参数] 路径
    #  回到上一层目录
    cd ..
    # 回到上一次所在的路径
    cd -
    # 回到当前用户所在的用户数据目录
    # 如果当前是tom用户,对应的数据目录就是/home/tom
    # 如果当前是root用户,对应的数据目录就是/root
    cd ~
    
  4. mkdir:make directory,创建目录

    # 创建空目录
    mkdir test
    # -p:表示创建多层目录
    mkdir -p bigdata/a2312
    
  5. rmdir:remove directory,只能删除空目录

    rmdir bigdata/a2312/
    
  6. rm:remove,移除文件/目录

    # 删除a文件
    rm a
    # -r,recursive(递归)的缩写,递归删除
    mkdir a
    rm -r a
    # -f,force(强制)的缩写
    mkdir -p test/bigdata/a2312
    rm -rf test/bigdata/a2312
    # -v,verbose,显示删除的详细过程
    mkdir -p test/bigdata/a2312
    rm -rfv test/bigdata/a2312
    

    温馨提示:在Linux中慎重删除文件/目录,因为Linux没有回收站!!!删除就无法恢复!!!

  7. touch:创建空文件

  8. cp:copy的缩写,复制文件或者目录

    # 格式
    cp [参数] 原文件 目的地
    # 复制文件
    cp /root/original-ks.cfg /opt
    # 在复制文件的时候,如果发现目的地中有同名文件,会询问是否覆盖
    # 复制的时候修改文件名
    cp /root/original-ks.cfg /opt/test.cfg
    # 复制的时候,如果有同名文件,就强制覆盖
    \cp /root/original-ks.cfg /opt
    # cp如果要复制目录,要求是空目录
    # -r,表示递归复制。如果目录非空,需要使用-r
    cp -r /var/log ./ 
    
  9. mv:move的缩写,剪切或者重命名文件/目录

    # 重命名
    mv test.cfg a.cfg
    # 剪切
    mv a.cfg /root
    # 剪切并重命名
    mv /root/a.cfg /opt/b.cfg
    
  10. head:查看文件头部的内容,默认是10行数据

    # 查看头部数据,默认10行
    head test
    # 查看指定行数
    head -n 3 test
    
  11. tail:查看文件尾部的内容,默认是10行数据

    # 查看尾部数据,默认10行
    tail test
    # 查看指定行数
    tail -n 3 test
    
  12. cat:查看文件的所有的数据

    # 查看文件所有的数据
    cat test
    # 查看数据的时候显示行号
    cat -n test
    
  13. more:分屏查看

    # 分屏查看
    more /var/log/boot.log
    # 回车表示查看下一行
    # 空格或者Ctrl+F表示查看下一页
    # Ctrl+B表示回滚一页
    # =表示查看当前是第几行
    # :f表示查看的是哪一个文件,查看的是第几行
    # q表示退出
    
  14. less:分屏查看

    # 分屏查看
    less /var/log/boot.log
    # 空格或者pagedown表示查看下一页
    # pageup表示查看上一页
    # /单词   或者  ?单词 要搜索这个单词,n表示查找下一个,N表示查找上一个
    # q表示退出
    
  15. more和less的区别:

    1. less的功能会更加强大:less支持搜索,more不支持
    2. more是先将整个文件读取出来,然后再进行分屏,因此会占用更大的内存空间;less根据屏幕来进行分屏读取,也就意味着如果结束查看,未查看到部分数据不读取。也就意味着,读取大文件更适合于用less
  16. ln:建立软链接

    # 命令格式
    ln -s [源文件] [目的地]
    # 建立软链接
    # 将/var/log目录链接到/opt下
    ln -s /var/log /opt
    cd log # 进入的/opt/log
    # 删除软链接
    mkdir test
    ln -s test a
    rm -rf a # 删除软链接,但是不删除源目录/文件
    rm -rf a/ # 命令无效
    # 进入软链接对应的实际路径
    cd -P log # 此时进入的是/var/log
    

echo

  1. echo是Linux提供的用于输出的命令,类似于Java中的print

    echo a
    echo 'a'
    echo "a"
    
  2. 在Linux中,数据默认就是字符串!

    echo 2+3
    # 输出就是2+3
    
  3. 需要使用转义字符

    echo "hello\tworld" # 打印hello\tworld
    echo -e "hello\tworld" # 打印hello   world
    

>和>>

  1. >表示覆盖写入;>>表示追加写入

  2. 案例

    # 将打印结果覆盖到a.txt中
    echo "abc" > a.txt
    # 将打印结果追加到a.txt中
    echo "def" >> a.txt
    
  3. 监控指定文件(a.txt),如果文件中追加了新数据,能自动发现并打印这个数据

    tail -f a.txt
    
  4. 合并两个文件

    cat a.txt >> b.cfg
    

复习:转义字符、编码

  1. 转义字符:键盘上部分键的效果无法直接体现,所以才采用转义字符来表示

    字符解释
    \ttable的缩写,制表符,补齐字节,用于对齐!!!默认Windows中是4个字节,Linux是8个字节
    \rreturn的缩写,回车符,现在使用的较少,Linux不支持
    \nnewLine的缩写,换行符
    \f分页符
  2. 编码:将字符按照指定规则映射成数字,这个过程就叫编码,记录映射过程的表格称之为编码表

    1. ASCII(阿斯克码表):不完全码表,1个字符占用1个字节
    2. ISO-8859-1(西欧码表):一共有256个字符,1个字符占用1个字节
    3. GB2312(国标码,后来扩展成了GBK):1个字符占用2个字节,收录的是大部分的简体汉字和少部分的繁体汉字,GBK在大陆内范围通用,港澳台不适用
    4. Unicode编码体系:规定了一系列码表,UTF-8,UTF-16,UTF-32等。常用的是UTF-8,规定1个字符占用3个字节。UTF-8中收录的是常见语言的基本字符
      | newLine的缩写,换行符 |
      | \f | 分页符 |
  3. 编码:将字符按照指定规则映射成数字,这个过程就叫编码,记录映射过程的表格称之为编码表

    1. ASCII(阿斯克码表):不完全码表,1个字符占用1个字节
    2. ISO-8859-1(西欧码表):一共有256个字符,1个字符占用1个字节
    3. GB2312(国标码,后来扩展成了GBK):1个字符占用2个字节,收录的是大部分的简体汉字和少部分的繁体汉字,GBK在大陆内范围通用,港澳台不适用
    4. Unicode编码体系:规定了一系列码表,UTF-8,UTF-16,UTF-32等。常用的是UTF-8,规定1个字符占用3个字节。UTF-8中收录的是常见语言的基本字符
    5. 所有码表的前256位一模一样 - 英文在所有字符集/码表中都只占用1个字节!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/422820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何恢复edge的自动翻译功能

介绍:对于英文不好的小伙伴,把英语翻译成中文是有帮助的,而edge可以直接对英文页面翻译这一功能更是受人喜爱,但是,最近发现这一项功能消失了。 原始界面: 下面展示如何恢复该功能。 1.打开edge&#xff…

提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!

往期精彩文章 : 提升CKA考试胜算:一文带你全面了解RBAC权限控制!揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?CKA认证必备:掌握k8s网络策略的关键要点提高CKA认证成功率,CKA真题中的节点维…

AI大模型分析:数据背后隐藏的故事!

在当今的数字时代,人工智能(AI)大模型已经成为挖掘和解读庞大数据集背后故事的强大工具。这些模型通过分析复杂的数据模式,不仅揭示了数据的表面信息,还深入挖掘出潜藏的含义和联系,为我们提供了前所未有的…

初识C语言—常见关键字

变量的命名最好有意义 名字必须是字母&#xff0c;数字&#xff0c;下划线组成&#xff0c;不能有特殊字符&#xff0c;同时不能以数字开头 变量名不能是关键字 typedef---类型定义&#xff0c;类型重命名 #include <stdio.h>typedef unsigned int uint; //将unsigne…

VBA数据库解决方案第九讲:打开数据库记录集,所得数据回填

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

详解 Rope (Opal-03a) 的变化

文章目录 &#xff08;一&#xff09;特点&#xff08;二&#xff09;使用流程&#xff08;三&#xff09;界面&#xff08;四&#xff09;详解&#xff08;4.1&#xff09;目录区域⭐Start Rope⭐Video Folder⭐Output Folder⭐Faces Folder &#xff08;4.2&#xff09;预览控…

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞&#xff0c;上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求&#xff0c;很多小伙伴就寻思用Linux系统搭建占用会不会小一点&#xff1f;有计算机基础的小伙伴都知道Linux系统和Windows系统相比&#xff0c;…

带你玩转java封装和继承(上)

上次带大家学习了java里面比较重要的知识点类和对象&#xff0c;而且我们知道java是一门面向对象的语言&#xff0c;有时一个程序里可能有很多类&#xff0c;那么这么多类他们之间有什么联系吗&#xff1f;今天就带大家学习一下java类之间的关系。 什么是继承&#xff1a; 我们…

【数据结构】实现栈

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解栈&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一 .栈的概念及结构二 .栈的实现栈的结构体初始化销毁栈顶插入栈顶删除显示栈顶元素是否为空栈的大…

2673. 使二叉树所有路径值相等的最小代价

给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编号从 1 到 n 。根节点编号为 1 &#xff0c;树中每个非叶子节点 i 都有两个孩子&#xff0c;分别是左孩子 2 * i 和右孩子 2 * i 1 。 树中每个节点都有一个值&#xff0c;用下标从 0 开始、长度为 n 的整…

c++之旅——第二弹

大家好啊&#xff0c;这里是c之旅第二弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一、内存四区…

等概率事件算法

1等概率的生成(0-8)范围内的正整数 // Math.random 数据范围[0,1) 且 是 等概率的产生随机数 // 应用&#xff1a; // 1.生成等概率的整数&#xff08;等概率的生成(0-8)范围内的正整数 int value (int) (Math.random() * 9); System.out.println("value "…

Python 教学平台,支持“多班教学”的课程授课方式|ModelWhale 版本更新

龙行龘龘、前程朤朤&#xff0c;ModelWhale 新一轮的版本更新&#xff0c;期待为大家带来更优质的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 新增 课程&#xff08;包括课件、作业、算力&#xff09;按班级管理&#xff08;团队版✓ …

基于Google Vertex AI 和 Llama 2进行RLHF训练和评估

Reinforcement Learning from Human Feedback 基于Google Vertex AI 和 Llama 2进行RLHF训练和评估 课程地址&#xff1a;https://www.deeplearning.ai/short-courses/reinforcement-learning-from-human-feedback/ Topic: Get a conceptual understanding of Reinforcemen…

程序员的金三银四求职宝典!

目录 ​编辑 程序员的金三银四求职宝典 一、为什么金三银四是程序员求职的黄金时期&#xff1f; 二、如何准备金三银四求职&#xff1f; 1. 完善简历 2. 增强技术能力 3. 提前考虑目标公司 4. 提前准备面试 三、程序员求职的常见面试题 1. 数据结构和算法 2. 数据库 …

文件系统制作

文章目录 什么是文件系统如何制作根文件系统文件添加登录密码文件系统制作Squashfs制作方式gzip & lzo & xz 压缩 Jffs2制作方式 Ubi文件系统 什么是文件系统 Linux文件系统中的文件是数据的集合&#xff0c;文件系统不仅包含着文件中的数据而且还有文件系统的结构&am…

el-input组件当数据为空时, 边框变红,并提示错误信息

1&#xff0c;样式 初始&#xff1a; 当不输入口令&#xff0c; 点击确定时&#xff1a; 2, 思路 主要是使用动态类的方式。 先设置输入框变红的样式以及提示文字的样式class 对于样式class 用变量来控制是否奏效。 3&#xff0c; 代码实现 //html&#xff1a; <div cl…

数据结构-----反射

文章目录 反射1.定义2 用途(了解)3 反射基本信息4 反射相关的类&#xff08;重要&#xff09;4.1 Class类(反射机制的起源 )4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用 5、反射优点和缺点6 重点总…

七、基于FreeRTOSSTM32移植MQTT

1、移植环境 (1)Keil MDK: V5.38.0.0 (2)STM32CubeMX: V6.8.1 (3)MCU: STM32F407ZGT6 (4)已移植好FreeRTOS和调试好串口的项目。 FreeRTOS移植参考博客&#xff1a;示例1&#xff1a;FreeRTOS移植详解_基于HAL库工程_hal库移植rtos-CSDN博客mqttclient源码&#xff1a;htt…

如何自学python

Python是一种高级编程语言,它具有简单易学、可读性强、可移植性好、功能丰富等优点,因此在许多领域都被广泛使用,如科学计算、数据分析、人工智能、Web开发、游戏开发等等。 Python具有丰富的标准库和第三方库,可以帮助程序员快速开发功能强大的应用程序。同时,Python也具…