The missing semester
零、创作思考
本篇博客的目的在于将The missing semester中常用的一些功能(Shell、Vim、ssh还有Git)进行整理,方便笔者自己以及广大程序员进行查询,官网中的资料比较全,适合系统学习(想要好好学非常建议),但是当作操作手册真的感觉有点杀鸡用牛刀的意味。另外课程作业相对比较简单,跟着习题解答应该是可以完成的。实现形式可以是Ubuntu原生系统、Ubuntudocker镜像还有Ubuntu wsl2集成,当然云服务器也可以实现。
一、Shell介绍
1.1 什么是shell
shell是一个命令行窗口
1.2 使用 shell
- $表示普通用户,#代表超级用户
- echo命令用于打印环境变量的值
echo $PATH
- which命令可以查看命令的位置
which echo
- grep命令
ls -a || grep
- diff命令
比较两个文件夹之间的不同 - mv命令
mv test1.txt test2.txt
将文件重命名
- 编写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
- 查找当前目录中所有包含待查找的东西
课后作业
二、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 常用操作以及简介
- 基础操作
- 切换分支实现多线开发或者切换版本
- 远端仓库操作
- 撤销操作