The missing semester

发布于:2024-04-14 ⋅ 阅读:(59) ⋅ 点赞:(0)

课程项目地址
我的代码实现

零、创作思考

本篇博客的目的在于将The missing semester中常用的一些功能(Shell、Vim、ssh还有Git)进行整理,方便笔者自己以及广大程序员进行查询,官网中的资料比较全,适合系统学习(想要好好学非常建议),但是当作操作手册真的感觉有点杀鸡用牛刀的意味。另外课程作业相对比较简单,跟着习题解答应该是可以完成的。实现形式可以是Ubuntu原生系统、Ubuntudocker镜像还有Ubuntu wsl2集成,当然云服务器也可以实现。

一、Shell介绍

1.1 什么是shell

shell是一个命令行窗口

1.2 使用 shell

  1. $表示普通用户,#代表超级用户
  2. echo命令用于打印环境变量的值
echo $PATH
  1. which命令可以查看命令的位置
which echo
  1. grep命令
ls -a || grep 
  1. diff命令
    在这里插入图片描述
    比较两个文件夹之间的不同
  2. mv命令
mv test1.txt test2.txt

将文件重命名

  1. 编写shell脚本并执行
#!/bin/bash

echo "Starting program at $(date)" # Date will be substituted

echo "Running program $0 with $# arguments with pid $$"

for file in "$@"; do
    grep foobar "$file" > /dev/null 2> /dev/null
    # When pattern is not found, grep has exit status 1
    # We redirect STDOUT and STDERR to a null register since we do not care about them
    if [[ $? -ne 0 ]]; then
        echo "File $file does not have any foobar, adding one"
        echo "# foobar" >> "$file"
    fi
done

在这里插入图片描述
在目标文件中查找,如果没有查找到就自动添加信息。
这里有一个赋予文件执行权限的命令:

sudo chmod +x test.sh
  1. 查找当前目录中所有包含待查找的东西
    在这里插入图片描述

课后作业

作业解答

二、Vim编辑器

Vim编辑器是一个非常有用的工具,在Linux环境下非常实用。

Vim创建两个窗口方法

在Normal模式输入":split"实现水平方向新建窗口
输入":vsplit"实现垂直方向创建新窗口

Vim常见操作汇总

在这里插入图片描述
在这里插入图片描述
这里面的"/"操作非常实用,“{4}G”表示转跳到第四行。
在这里插入图片描述

课后作业

作业解答

扩展资料

在这里插入图片描述

三、DataWrangling数据整理

数据处理是将某种格式存储的数据转换成另一种格式。

3.1 日志处理

ssh myserver journalctl

这行命令可以查看有哪些用户尝试登陆我的服务器。

3.2 正则表达式

在这里插入图片描述

3.3 grep、sed、sort命令

ssh myserver journalctl
 | grep sshd
 | grep "Disconnected from"
 | sed -E 's/.*Disconnected from (invalid |authenticating )?user (.*) [^ ]+ port [0-9]+( \[preauth\])?$/\2/'
 | sort | uniq -c
 | sort -nk1,1 | tail -n10

grep命令的作用类似于一个过滤器,这里首先筛选了sshd(ssh守护进程)的行,然后又筛选了包含"Disconnected from"的行。
sed命令实现数据内容替换,移除所有直到"Disconnected from"字样前的内容,只保留后面的信息。
sort实现对输入的数据进行排序。uniq -c 会把连续出现的行折叠为一行并使用出现次数作为前缀,sort -n 会按照数字顺序对输入进行排序(默认情况下是按照字典序排序 -k1,1 则表示“仅基于以空格分割的第一列进行排序”。,n 部分表示“仅排序到第n个部分”。

课后作业

作业解答

四、命令行环境

4.1 任务控制

4.1.1 结束进程

  • Ctrl-C 可以停止命令的执行。
  • SIGINT 和 SIGQUIT 都常常用来发出和终止程序相关的请求。SIGTERM 则是一个更加通用的、也更加优雅地退出信号。为了发出这个信号我们需要使用 kill 命令, 它的语法是:

kill -TERM

4.1.2 暂停和后台执行进程

  • Ctrl-Z可以中止进程,想要恢复暂停的工作可以使用fg(前台工作)或bg(后台工作)命令。
  • jobs命令会列出当前终端会话中尚未完成的全部任务,附加命令pgrep可以实现筛选特定的pid
  • **“&”**后缀可以让命令直接在后台运行。
  • 注意!在终端开始运行的进程,不管前台还是后台都是终端进程的子进程,如果想要实现关闭终端继续运行进程,可以使用nohup运行程序:nohup /root/runoob.sh(这里替换成自己的程序即可) & ;如果是已经运行的进程,则使用disdown命令。

4.2 终端多路复用

简称终端多开器,类似于平板上面的同时打开多个应用分屏哈哈哈
在这里插入图片描述
上面的是常用的,想要详细学习看这里

4.3 取别名

常用的列在下面:

# 创建常用命令的缩写
alias ll="ls -lh"

# 能够少输入很多
alias gs="git status"
alias gc="git commit"
alias v="vim"

# 手误打错命令也没关系
alias sl=ls

# 重新定义一些命令行的默认行为
alias mv="mv -i"           # -i prompts before overwrite
alias mkdir="mkdir -p"     # -p make parent dirs as needed
alias df="df -h"           # -h prints human readable format

# 别名可以组合使用
alias la="ls -A"
alias lla="la -l"

# 在忽略某个别名
\ls
# 或者禁用别名
unalias la

# 获取别名的定义
alias ll
# 会打印 ll='ls -lh'

4.4 ssh相关使用

4.4.1 连接远程设备

ssh foobar@192.168.1.42

foobar是用户名,后面是想要连接的远程设备的ip地址,详细的连接可以自己看看计算机网络的相关知识点。
相关的配置就是:
在这里插入图片描述

课后作业

作业解答

五、Git版本控制工具

我之前写过一篇有关于Git常用操作的汇总,有兴趣可以看一看。

5.1 常用操作以及简介

  • 基础操作
    在这里插入图片描述
  • 切换分支实现多线开发或者切换版本
    在这里插入图片描述
  • 远端仓库操作
    在这里插入图片描述
  • 撤销操作
    在这里插入图片描述

课后作业

作业解答


网站公告

今日签到

点亮在社区的每一天
去签到