当前位置: 首页 > news >正文

LINUX学习记录

回顾系列:两天的时间(2023.2.24-2023.2.25)重新学了遍Linux基础课,收获非常多,以前只会一些简单的Linux命令,对shell,git,管道,复杂Linux命令都不熟悉,学完之后终于是入门Linux了。


Tmux 和 Vim


  1. Tmux

    1. 前缀符号(默认是 ctrl + b, y总修改了配置文件改成了 ctrl + a) + a (attach) 可以重新打开之前的 tmux 窗口。前缀符 + d 可以挂起 tmux 窗口。

    2. 在 Acterminal中向外复制时,需要退出tmux进入bash,然后选中,ctrl + insert + fn(本机) 复制,shift + insert + fn(本机) 粘贴 (或是 ctrl + v)。

    3. 前缀符 + s 可以查看所有的session。

    4. bash 的配置文件是 .bashrc

    5. Vim

    6. Vim的配置文件是家目录下的 .vimrc

      1. cd 命令可以直接进入环境变量 $HOME 的目录,也就是家目录。
      2. echo $HOME 输出HOME的值
    7. 复制粘贴,需要 前缀符 + [ ,然后选中,前缀符 + ] 粘贴。

    8. gg (光标移动到第一行) , G (光标移动到最后一行) 。 gg=G 可以格式化代码 (后者命令模式下输入:set paste 设置粘贴模式,取消代码的缩进)

    9. v (选中文本),d(删除选中的文本),y(复制选中的文本)。dd(删除当前行),yy(复制当前行)。ggvGd 删除全文,ggvGy复制全部文本。

Shell编程


  1. ipython3 中使用! 自动将这一行解释为 shell脚本。

  2. 字符串可以用单引号,双引号,或者不引。

    1. 单引号与双引号的区别:

      单引号中的内容会原样输出,不会执行、不会取变量;
      双引号中的内容可以执行、可以取变量;

      name=yxc  # 不用引号
      echo 'hello, $name \"hh\"'  # 单引号字符串,输出 hello, $name \"hh\"
      echo "hello, $name \"hh\""  # 双引号字符串,输出 hello, yxc "hh"
      
  3. 参数说明
    $#代表文件传入参数个数。
    $*所有参数,使用空格隔开的字符串
    $@每个参数,各自用双引号括起来的字符串
    $$脚本当前运行的PID
    $?上一条命令的 exit code , 0表示正常退出,非0为异常
    $(command)返回 command 命令的stdout (可嵌套)
    `command`返回 command 命令的stdout (不可嵌套)
    $0,$1,$2…$0 是文件名(包含路径), $$ i 表示第 i 个参数。
  4. 通过上个表格,有 Shell 中,$ 表示取值,# 表示个数,* 和 @ 表示取全部

  5. 读取数组中某个元素的值 ${array[index]}

  6. `expr $a + $b` 很难用,符号注意要转义,一般不用Shell计算。

  7. if 语句

    a=3
    b=4if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
    thenecho ${a}在范围内
    fi
    
  8. 循环语句

    for ((expression; condition; expression))
    do语句1语句2
    donefor ((i=1; i<=10; i++)) // 双括号里边可以用c++的写法。
    doecho $i
    done
    -------------------------------------------------
    for var in val1 val2 val3
    do语句1语句2...
    donefor i in a 2 cc
    doecho $i
    done
    
  9. 用 Shell 写递归函数时,记得函数内部要用局部变量,不然可能出错。有一道练习题。

  10. source 命令通常用于保留、更改当前shell中的环境变量。

管道、环境变量与常用命令


  1. 管道(管道类似于文件重定向,可以将前一个命令的stdout重定向到下一个命令的stdin)和Shell结合就有了自动化运维,非常的方便。

    find . -name '*.py' | xargs cat | wc -l

    翻译:统计当前目录下所有以 .py 结尾的文件,将输出结果作为 cat 的参数,运行之后,统计所有的行数。

  2. 配置 PATH 环境变量的时候,都是向最后写入,因为Shell是逐行执行的,会覆盖之前的内容。

    如果想新加一个环境变量, export PATH=/xxx/xxx:$PATH , 环境变量是用 : 隔开的。

  3. ps aux 查看进程,kill -9 pid 杀进程,(可能出现那个进程不应该用 -9 参数杀死,而不能杀掉的情况)

  4. 文件权限(10个字符)第一个表示类型,然后每3各一组,r(read,w(write,x(execute。

  5. find /path/to/directory/ -name '*.py' 搜索某个文件路径下的所有*.py文件

  6. wc -l:统计行数
    wc -w:统计单词数
    wc -c:统计字节数

  7. ag xxx:搜索当前目录下的所有文件,检索xxx字符串
  8. grep xxx:从stdin中读入若干行数据,如果某行中包含xxx,则输出该行;否则忽略该行。 文件检索过滤。
  9. xargs:将stdin中的数据用空格或回车分割成命令行参数
  10. tar:压缩文件
    tar -zcvf xxx.tar.gz /path/to/file/*:压缩(把/path/to/file/* 文件压缩成 xxx.tar.gz 文件)
    tar -zxvf xxx.tar.gz:解压缩

  11. diff xxx yyy:查找文件xxx与yyy的不同点

Git (原理就是SCP)


  1. 工作区:仓库目录,写代码的地方,独立的。
  2. 暂存区:将工作区写入版本库之前的缓冲区,独立的。
  3. 版本库:存放所有提交到本地仓库的代码
  4. 版本结构:每个节点表示一个代码版本。

1.先配置git的用户名和邮箱:

git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中

2.git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

常用的:

git add XX :将当前目录的XX文件添加到暂存区
git add . :将所有待加入暂存区的文件加入暂存区
git status:查看仓库状态
git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支
git log:查看当前分支的所有版本
git reflog:查看HEAD指针的移动历史(包括被回滚的版本)git reset --hard HEAD^ 或 git reset --hard HEAD~:将代码库回滚到上一个版本git reset --hard HEAD^^:往上回滚两次,以此类推git reset --hard HEAD~100:往上回滚100个版本git reset --hard 版本号:回滚到某一特定版本必须先将本地仓库和远程仓库关联才能传:
首先需要将本地服务器的公钥:./ssh/id_ras.pub文件传给云服务器,如果本地没有ssh就生成一个。
git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库
git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下

SSH


  1. ssh user@hostname 登录服务器。
    user:用户名
    hostname:IP地址或者域名

  2. 给要登录的服务器配置别名:~/.ssh/config (~ 和 直接cd 都是进入家[$HOME]目录)

     Host myserver1HostName IP地址或域名User 用户名
    
  3. 配置免密登录,想免密码登录哪个服务器,就将公钥传给哪个服务器即可。将公钥的内容复制到~/.ssh/authorized_keys

  4. ssh 后边也可以执行命令,ssh user@hostname command, 再配合Shell 实现管理多服务器的运维。

相关文章:

LINUX学习记录

回顾系列&#xff1a;两天的时间&#xff08;2023.2.24-2023.2.25&#xff09;重新学了遍Linux基础课&#xff0c;收获非常多&#xff0c;以前只会一些简单的Linux命令&#xff0c;对shell&#xff0c;git&#xff0c;管道&#xff0c;复杂Linux命令都不熟悉&#xff0c;学完之…...

华为OD机试用Python实现 -【狼羊过河 or 羊、狼、农夫过河】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲狼羊过河 or 羊、狼、农夫过河题目描述输入描述输出描述说明示例一输入输出说明Python 代码实现代码实现思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址…...

【SAP Abap】X-DOC:SAP ABAP 语法更新之Open SQL

SAP ABAP 语法更新之Open SQL1、前言2、演示1、前言 自从 SAP 推出 SAP ON HANA&#xff0c;与之相随的 AS ABAP NW 7.40 版本以后&#xff0c;ABAP 语法也有了较多的更新&#xff0c;本篇对 Open Sql的语法更新部分做一个DEMO演示。 NW 7.40 以前 OpenSQL 的限制&#xff1a…...

leetcode 困难 —— 数组中的逆序对(分治法)

题目&#xff1a; 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 题解&#xff1a; ① 我最开始想的蠢方法&#xff08;会超时&#xff0c;可跳过&#xff…...

02.24:图片的风格转换

Github网址&#xff1a;https://github.com/lengstrom/fast-style-transfer 在anaconda prompt中切换环境命令&#xff1a;activate 环境名 列出所有环境名&#xff1a;conda info --envs 安装环境&#xff1a;conda create -n 环境名 pythonx.x.x 删除某环境&#xff1a;co…...

[SSD综述 1.3] SSD及固态存储技术半个世纪发展史

在我们今天看来&#xff0c;SSD已不再是个新鲜事物。这多亏了存储行业的前辈们却摸爬滚打了将近半个世纪&#xff0c;才有了SSD的繁荣&#xff0c; 可惜很多前辈都没有机会看到。所有重大的技术革新都是这样&#xff0c;需要长期的技术积累&#xff0c;一代一代的工程师们默默的…...

PAT 1023 组个最小数(分数20)题目有bug

目录 题目描述&#xff1a; 题目讲解&#xff1a; 框架构建&#xff1a; 代码部分&#xff1a; 一个bug&#xff1a; 题目描述&#xff1a; 给定数字 0-9 各若干个。你可以以任意顺序排列这些数字&#xff0c;但必须全部使用。目标是使得最后得到的数尽可能小&#xff08;…...

QML 中的 5 大布局

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在 QML 中,可以通过多种方式对元素进行布局 - 手动定位、坐标绑定定位、锚定位(anchors)、定位器和布局管理器。 说到 anchors,可能很多人都不太了解,它是 QML 中一个非常重要的概念,主要提供了一种相…...

使用Python进行数据分析——线性回归分析

大家好&#xff0c;线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数&#xff0c;可以将线性回归分为一元线性回归和多元线性回归分析。一元线性回归&#xff1a;就是只包含一个自变量&#xff0c;且该自变量与因变量之间的关系是…...

我眼中的柔宇科技

关注、星标公众号&#xff0c;直达精彩内容来源&#xff1a;技术让梦想更伟大作者&#xff1a;李肖遥很早就知道了柔宇科技&#xff0c;当时是因为知道创始人刘自鸿&#xff0c;23岁清华本硕毕业&#xff0c;26岁获斯坦福大学电子工程博士学位&#xff0c;历时不超过3年&#x…...

Allegro如何快速把视图居中显示操作指导

Allegro如何快速把视图居中显示操作指导 用Allegro进行PCB设计的时候,为了方便检查和设计,时常需要将视图居中显示。一般地,会使用鼠标的中键进行放大和缩小,或者使用Zoom in和Zoom out来调整视图 Allegro还支持快速将视图居中 具体操作如下 点击View...

搜索相关功能

一、进入搜索页面 1.1 在pages下创建搜索页面为&#xff1a;search 1.2 在index.vue中点击进入搜素页面 onNavigationBarButtonTap(e){if(e.floatleft){uni.navigateTo({url:/pages/search/search})}},1.3 在pages.json中配置搜索页面头部 {"path" : "pages/…...

【从零开始制作 bt 下载器】一、了解 torrent 文件

【从零开始制作 bt 下载器】一、了解 torrent 文件写作背景了解 torrent 文件认识 bencodepython 解析 torrent 文件解密 torrent 文件结尾写作背景 最先开始是朋友向我诉说使用某雷下载结果显示因为版权无法下载&#xff0c;找其他的下载器有次数限制&#xff0c;于是来询问我…...

SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉

数字硬件建模SystemVerilog-时序逻辑建模&#xff08;5&#xff09;多个时钟和时钟域交叉数字门级电路可分为两大类&#xff1a;组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点&#xff0c;在后面会作为单独的主题处理。组合逻辑描述了门级电路&#xff0c;其中逻…...

基本中型网络的仿真(RYU+Mininet的SDN架构)-以校园为例

目录 ​​​​​​​具体问题可以私聊博主 一、设计目标 1.1应用场景介绍 1.2应用场景设计要求 网络配置方式 网络技术要求 网络拓扑要求 互联互通 二、课程设计内容与原理 &#xff08;1&#xff09;预期网络拓扑结构和功能 &#xff08;1&#xff09;网络设备信息 …...

西北工业大学大学物理(II)期末试题选填解析2021-2022

2 金属薄片&#xff0c;就暗示了载流子是电子了。3 熟练掌握左右手即可。4 又是位移电流。6 感应电场。随时间变化着的磁场能在其周围空间激发一种电场&#xff0c;它能对处于其中的带电粒子施以力的作用&#xff0c;这就是涡旋电场&#xff0c;又叫感生电场。涡旋电场是非保守…...

【USB】windows热插拔通知接口分析

文章目录接口介绍概述过滤器介绍举例接收通知创建窗口参考文档接口介绍 概述 window提供了RegisterDeviceNotificationW方法&#xff0c;可以用来监听设备的热插拔事件。 HDEVNOTIFY RegisterDeviceNotificationW([in] HANDLE hRecipient,[in] LPVOID NotificationFilter,[in]…...

CMake入门

课程地址 文档地址 CMake可以用于所有的编程语言 HelloWorld 编写一个C文件&#xff1a; //hello.cpp #include <iostream>int main() {std::cout << "hello, world" <<std::endl;return 0; }手动编译&#xff1a; c hello.cpp书写CMakeList…...

python中一种编写config文件并及时更新的方法

contents0. Intro1. config.py2. 调用以及更新0. Intro 在pytorch或者其他深度学习框架中&#xff0c;有许多超参数需要调整&#xff0c;包括learning_rate&#xff0c;training_data_path等&#xff0c;因此编写一个config文件统一存放这些参数&#xff0c;方便调用/查看/修改…...

基于Windows下离线安装当前最新Arduino ESP32 SDK(2.0.7)固件开发包

基于Windows下离线安装当前最新Arduino ESP32 SDK&#xff08;2.0.7&#xff09;固件开发包✨写这篇的文章的初衷&#xff0c;是由于在前几天想通过离线一键安装包方式实现升级安装&#xff0c;结果发现解压后&#xff0c;可以找到开发板&#xff0c;但是无法上传代码&#xff…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...