the missing semester 
		 
		
		
		
 
the missing semester lectrue 1-the shell(based on LINUX) 快捷键启用终端(最重要的事,我们以下的操作都是基于bash环境进行的) 1 2 3 4 ctrl+alt+t
环境变量
 
1 2 3 4 ┌──(kali㉿kali)-[~]# 获取环境变量(环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数) 配置完成后不用在安装目录中打开或运行文件 直接可以通过cmd进行运行 
路径
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 pwd #打印当前路径
文件操作
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ┌──(kali㉿kali)-[~/Desktop]#  类似于重命名                                                                                                                                                                        #  复制并且指定路径                                                                                                                                                                                                                                          # 删除文件 
手册
 
1 2 3 man+“command”
链接不同的文件(shell中强大的功能)
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ┌──(kali㉿kali)-[~/Desktop/my code]#  cat 命令用来打印文件的内容#  include<stdio.h> #  重定向操作,并且在命令前使用cat 不会影响任何东西 >  file2  # <hello.c>>hello1.c 双端链接表示追加 
管道
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 在Linux中,“|”符号被称为管道(pipe)操作符。管道在Unix和Linux中被用于将一个程序的输出(STDOUT)连接到另一个程序的输入(STDIN)。这是一种在线程之间传输信息的方法。 #  tali通常查看文件的最后一行该命令行将管道与前文的交互式进行综合                                                                                                                                                                                                                                        #  tee 命令#  tee  是一个Unix和Linux常用的命令行工具,它主要用于在将输出内容重定向到文件的同时,也在终端显示输出结果。tee  命令的名称来源于T型管道,其形象地解释了 tee  的功能: 它会将输入从一个位置(如:一个命令的输出)分流到两个位置(如:屏幕和一个文件)。
进入管理员权限
 
lectrue2-shell tools and scripting shell scripting 
shell中类似于高级语言的东西
 
1 2 3 4 5 6 7 8 9 
source 加载脚本函数
 
1 2 3 4 5 lane@lane-virtual-machine:~$ vim mcd.sh
bash中特殊变量
 
1 2 3 4 5 6 7 8 $ 0  $ 1~$9   $ @  $ $ ?  $ $  $ -  
bash变量
 
1 2 3 4 5 6 7 8 # $? 返回上一条指令的成功与否(1为失败,0为成功) # 并且逻辑运算符与c语言一致 # $(pwd )打印路径 
命令替换与进程替换
 
1 2 3 $ ( CMD ) 命令替换 (command  substitution):通过 $( CMD ) 这样的方式来执行CMD 这个命令时,它的输出结果会替换掉 $( CMD ) 。例如,如果执行 for  file in  $(ls ) ,shell首先将调用ls  ,然后遍历得到的这些返回值。 
example.sh(一个例子)(Bash是一种命令语言,通常运行于文本窗口中能执行用户直接输入的命令,还能从SH文件中读取命令一般作为内置于操作系统的应用程序向用户提供访问操作系统内核的服务。)
 
1 2 3 4 5 6 7 8 9 10 11 12 echo  "starting program at $(date) "  echo  "running program $0  with $#  arguments with pid $$"  for  file in  "$@ " ; do  "$file "  > /dev/null 2> /dev/null if  [["$?"  -ne 0]]; then  echo  "File $file  does not have any foobar,adding one" echo  "# foobar"  >> "$file " fi done  
通配符
 
通配符 - 当你想要利用通配符进行匹配时,你可以分别使用 ? 和 *
花括号{} - 当你有一系列的指令,其中包含一段公共子串时,可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。
 
1 2 3 4 5 6 7 8 9 10 11 convert image.{png,jpg}#  会展开为 #  会展开为 #  也可以结合通配使用 #  会移动所有 *.py 和 *.sh 文件 
shell tools 如何在终端进行创立,写入并编译运行.c 文件 1 2 3 4 5 6 touch hello.c# 首先点击“i” 进入插入模式,我们此时可以进行文件的编写 # 然后编写完成后,点击“esc”,在点击“:wq”保存并推出 
查看命令如何使用 
对应命令行前添加–help 
使用 man 命令 
 
查找文件 
所有的类unix系统都包含find命令 ,其会递归地搜索符合条件的所有文件 
 
1 2 3 4 5 6 7 8 #  查找所有名称为src的文件夹 #  查找所有文件夹路径中包含test 的python文件 #  查找前一天修改的所有文件 #  查找所有大小在500k至10M的tar.gz文件 
除了查找文件还可通过对查找到的文件进行操作(利用-exec+操作{}+) 
 
更高效的工具:
fd 就是一个更简单、更快速、更友好的程序,它可以用来作为find的替代品。它有很多不错的默认设置,例如输出着色、默认支持正则匹配、支持unicode并且它的语法更符合直觉。以模式PATTERN 搜索的语法是 fd PATTERN。
locate : 通过编译索引或建立数据库的方式来实现更加快速地搜索。locate 使用一个由 updatedb负责更新的数据库,在大多数系统中 updatedb 都会通过 cron每日更新。这便需要我们在速度和时效性之间作出权衡。locate只能通过文件名检索。
查看文件内容 查看文件的内容使用grep命令,它是用于对输入文本进行匹配的通用工具。
经常使用的选项有 :
-C :获取查找结果的上下文(Context);
-v: 将对结果进行反选(Invert),也就是输出不匹配的结果。
-R: 递归搜索子目录
更高效的工具:ripgrep
查找shell中命令 
按向上的方向键会显示你使用过的上一条命令,继续按上键则会遍历整个历史记录。 
history 命令允许您以程序员的方式来访问shell中输入的历史命令。 
使用 Ctrl+R 对命令历史记录进行回溯搜索。反复按下就会在所有搜索结果中循环。 
 
directory navigation 强烈推荐使用nnn 它是一种通过箭头进行交互的查看文件的方式(很适用于我bushi)
lecture3-editor(vim) modal editing Vim的设计以大多数时间都花在阅读、浏览和进行少量编辑改动为基础,因此它具有多种操作模式:
正常模式 :在文件中四处移动光标进行修改 
插入模式:插入文本 
替换模式:替换文本 
可视化(一般,行,块)模式:选中文本块 
命令模式:用于执行命令 
 
1 2 3 
常用命令 1 2 3 4 5 6 7 :q #退出(关闭窗口)
vim设计的初衷便是按照编程语言,在终端上面通过键入命令,来更好地对文件进行编辑与保存 移动 1 2 3 4 5 6 7 8 通过箭头光标进行基本移动
可视化 1 2 3 v 可视化
编辑 就我个人而言,比较习惯使用单个打字与删除插入
一些自认为比较有用的编辑命令
 
1 2 3 4 u #撤销
将命令与数字结合 改变内容 1 2 ci( #改变当前()括号内容
lectrue 4-data wrangling 
 观众老爷能赏口饭吃吗
 
 
  本文总阅读量