Linux学习笔记(六)提高效率的Linux课程Mit missing semester

MIT开了一门课,专门讲程序员如何更高效利用工具。


前言

做作业的时候可以参考前辈的作业,省点时间。
[MIT]计算机科学课堂中学不到的知识 The Missing Semester of Your CS Education(2020)英语好的去youtube上看吧。

exercise

chinese-doculent

个人先去看了社区版本的中文笔记,然后去看了英文视频。因为都是youtube机翻的。

github实现中英双语字幕

看完每天1节并做作业

提示:以下是学习笔记

day1 shell

tail -n1#取出输入的倒数前两行
ls -l /#打印/目录下的内容
ls -l / | tail -n1#打印/目录下的内容,取出最后一行
xdg-open a.md
  • shebang是由脚本开头的字符数字符号和感叹号(#!)组成的字符序列,shebang说明了这个文本文件可以执行,shebang中含有执行这个文本文件需要用到的程序路径,所以shell才能执行这个文件。
  • #!/usr/bin/env python 这个shebang会自动找到Python的安装路径,并且执行。

xdg-open用法非常简单,就直接参数传入要打开的文件,等效于鼠标双击打开,系统会根据文件类型自动调用对应的程序

​ 作业

cd /tmp
mkdir missing
touch semester
如果程序无法执行,请使用 ls 命令来获取信息并理解其不能执行的原因。是因为新建的文件没有可执行权限。使用chmod加执行权限。

cat 电量的那个文件   
cd sys/classpower_supply/BAT0/power_now

curl是一个文件传输命令

day2 shell

  • 变量赋值,single quotes varible

  • $1~9脚本的参数 ¥?获得上一个命令返回值,!!bangbang完整执行上一条命令。

  • && (与操作符)前一个command execute成功才执行后一个,

  • || (或操作符)前一个command execute不成功才执行后一个,

  • 成功返回值为0

  • command substitution: $(pwd) pwd输出结果会替换掉 $( pwd )

  • process substitution :<(pwd) pwd输出结果会替换掉 <( pwd ),并形成一个临时文件

  • 花括号{} - 当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。

  • 编写shell脚本可以使用shellcheck检查脚本语法。sudo apt install shellcheck ``shellcheck test.sh

  • 函数 可以修改环境变量,脚本只能使用 export 将环境变量导出,并将值传递给环境变量。

  • 不认识的命令应该去tldr哪里搜索。

sudo apt install npm -y
sudo npm install -g tldr
sudo apt-get install nodejs-legacy
sudo tldr -u
  • convert处理图像,ffmpeg处理视频
  • 查找文件用find和fd,locate的效率更高,但是只能通过文件名。
# Delete all files with .tmp extension
find . -name '*.tmp' -exec rm {} \;
# Find all PNG files and convert them to JPG
find . -name '*.png' -exec convert {} {.}.jpg \;
fd '*.tmp'
updatedb
locate  
  • 查找以前的命令可以使用history | grep g++grep可以查找history文件中的内容。
  • ctrl+R以及fzf可以交互搜索history | fzf fuzzzy match
  • 其他查找内容的工具有包括 ack, ag 和 rg,主要是在恰当时机使用,具体哪一个反而不重要。ripgrep
  • ctrl+shift +f可以搜索控制台的内容。
  • 用tree以及brootnnn命令来显示文件和文件夹。tree只能树形显示。broot可以查找目录名字。nnn可以用箭头浏览。很像图形界面
  • 可以对shell自动补全的fish shell
  • 使用fasd可以快速定位到最近用过的目录。
  • sudo add-apt-repository ppa:aacebedo/fasd && sudo apt-get update && sudo apt-get install fasd
  • eval "$(fasd --init auto)"
  • 这些工具很多 ,但是太花费时间了。每种功能选择一个就行了。
  • 比如fasd+ripgrep+fzf
  • sudo apt install zsh -y
  • 想使用fasd的话,将eval "$(fasd --init auto)"以及plugins=(... fasd)添加到.bashrc文件或者其他的shell的启动文件中,比如zsh的启动文件.zshrc

作业
saarch command from tldr.

ls -a -lh -ltr --color=always

上bilibili好好看看怎么写shell,现在只是浅浅接触一下

vim marco.sh
#输入下面内容,注意要写shebang   #!/bin


#!/bin/bash
marco(){
        foo=$(pwd)
        export MARCO=$foo#此处可以不用foo传递,直接用MARCO=$(pwd)
}
polo(){
        cd "$MARCO" || echo "cd error"
}
#执行脚本
source marco.sh#加载函数到shell中
marco
polo
#使用函数之后,还在这个目录下。效果成功。可以加几个echo验证一下 
#!/bin/bash

echo "start capture the program failure log"

cnt=0
return_code=0
while [[ $return_code -eq 0 ]]
do
    output=$(sh "$1" 2>&1)
    return_code=$?
    cnt=$((cnt+1))
done
cnt=$((cnt-1))
echo "failed after ${cnt}th."
echo "output:"
echo "$output"




fd -e html -0 | xargs -0 zip output.zip

对于fd来说
-e, --extension … Filter by file extension
通过文件扩展名来搜索文件。这里搜索所有的html格式文件
-x, --exec Execute a command for each search result
-0, --print0 Separate results by the null character
对每一个结果使用NULL字符分隔

xargs
xargs将管道左边标准的输入转化为命令行应该使用的参数。
因为zip这个命令不接受标准输入
因为管道左边使用了-0参数,所有结果是用null来分隔,而不是空格。所以,xargs使用-0参数,将不会认为空格是分隔符。(因为文件名可能会出现分隔符)

fd . -0 -t f | xargs -0 stat -f '%m%t%Sm %N' | sort -n | cut -f2- | tail -n 1

day3 vim

  • 基本操作 vim game这个游戏不大好玩
    vim practice
    英文读物真的难学。
  • vim 配置 ~/.vimrc 下载老师提供的
  • github下载各种vim的插件 比如ctrlp.vim
    上youtube上多看几个教程

总结

这门课真是程序员必看,节省好多时间!

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页