Files
team-learning-program/LinuxPractice/README.md
2021-11-30 18:24:53 +08:00

217 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Datawhale Linux组队学习
## Part1 内容介绍
在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:
- Linux不会操作不知道文件目录创建、命令行等细节
- Linux不知道如何运行代码保存模型
- Pytorch不知道如何从头写代码
- Pytorch不知道定义模型和运行模型
而上述问题都是一个竞赛选手、一个算法工程师所必备的。因此我们将从本月组织一次竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,竟可能的帮助大家入门。
## Part2 Linux基础使用
### 学习内容
Linux全称GNU/Linux是一种免费使用和自由传播的类UNIX操作系统其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布它主要受到Minix和Unix思想的启发是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux有上百种不同的发行版如基于社区开发的debian、archlinux和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。在全球超级计算机TOP500强操作系统排行榜中Linux的占比最近十几年长期保持在85%以上且一直呈现快速上升趋势。根据2016年的排行榜Linux的占比已经高达98.80%。其实在各种大、中小型企业的服务器应用领域,**在企业内部服务器99%的情况下都是Linux系统如果你想成为一个合格的软件工程师&算法工程师Linux是你必备的技能**。
### 打卡汇总
任务名称 | 难度 | 所需技能
---|---|---
使用命令行登录指定的Linux环境 | 低 | ssh
在目录下创建文件夹、删除文件夹 | 低 | rm、mkdir
在目录下下载文件、阅读文件 | 低 | wget、nano
在目录下使用vi或vim编辑文件| 中 | vi、vim
在目录下创建py文件并进行运行 | 中 | python
在目录下创建py目录并进行import导入 | 中 | python
在Linux系统中后台运行应用程序并打印日志 | 中 | nohup
使用grep和awk从文件中筛选字符串 | 高 | grep、awk
在目录下创建zip和tar压缩文件并进行解压|中|zip、tar
使用find和locate定位文件|低|find、locate
### 学习资料
- https://bilibili.com/video/BV1yr4y1C7RC
- https://bilibili.com/video/BV1Zr4y1F7sQ
- https://bilibili.com/video/BV1S64y1v7UG
### 打卡要求
注:
- 需要使用指定的Linux系统完成打卡任务
- 需要完成所有的任务细节才算完成一个任务
**任务1使用命令行登录指定的Linux环境**
任务要点ssh登录、密码输入、环境配置
- 步骤1配置本地登录环境
- 如果是window系统安装任意一款ssh工具
- https://blog.csdn.net/puss0/article/details/103390947
- https://www.runoob.com/linux/linux-remote-login.html
- 如果是Mac或Linux系统则不需要可以直接使用ssh
- 步骤2使用如下信息登录系统
- 用户名coggle密码coggleIP139.198.15.157
- 如果登录失败请微信联系coggle小助手
![](https://img-blog.csdnimg.cn/06e512b972e440e7882deb33125f8cc8.png)
**任务2在目录下创建文件夹、删除文件夹**
任务要点:创建文件夹、创建文件、删除文件、删除文件夹
- 步骤1学习Linux的目录结构https://www.runoob.com/linux/linux-system-contents.html
- 步骤2学习Linux的文件和目录管理https://www.runoob.com/linux/linux-file-content-manage.html
- 步骤3
- 在/home/coggle目录下新建一个以你英文昵称中间不要有空格哦的文件夹A
- 在文件夹A内部创建一个以coggle命令的文件夹B
- 步骤4在B文件夹内创建一个空txt文件
- 步骤5删除步骤4创建的文件
- 步骤6删除文件夹B然后删除文件夹A
**任务3在目录下下载文件、阅读文件**
任务要点:下载文件、移动文件、阅读文件
- 步骤1
- 在home目录下新建一个以你英文昵称中间不要有空格哦的文件夹A
- 在文件夹A内部创建一个以coggle命令的文件夹B
- 步骤2使用wget命令下载https://mirror.coggle.club/dataset/affairs.txt到文件夹B
- wget教程https://www.cnblogs.com/pretty-ru/p/10936023.html
- 步骤3使用head、cat、tail命令阅读下载的文件。
- 阅读文件基础教程https://www.cnblogs.com/jixp/p/10833801.html
- 步骤4在命令行使用ipython进入python3环境并使用pandas读取下载的文件。
**任务4在目录下使用vi或vim编辑文件**
任务要点vi和vim使用
- 步骤1学习Nano的使用https://blog.csdn.net/junxieshiguan/article/details/84104912
- 步骤2学习Vim的使用https://www.runoob.com/linux/linux-vim.html
- 步骤3分别使用Nano和Vim创建py文件并输入以下内容并运行
```python
#!/usr/bin/env python3
print('Hello World!')
```
**任务5在目录下创建py文件并进行运行**
任务要点python的os和sys系统接口文件接口
- 步骤1学习python下os模块处理文件和目录的函数https://www.runoob.com/python/os-file-methods.html
- 步骤2学习python下sys模块和传参函数https://www.runoob.com/python3/python3-module.html
- 步骤3在home/coggle目录下在你英文昵称中间不要有空格哦的文件夹中新建一个test5.py文件改程序可以使用os、sys模块完成以下功能
- 功能1打印命令行参数Python
- 功能2使用os模块打印/usr/bin/路径下所有以m开头的文件。
```python
命令行输入python3 test5.py 参数1 参数2
程序输出
test5.py
参数1
参数2
```
**任务6在目录下创建py目录并进行import导入**
任务要点python代码模块化
- 步骤1学习python模块化https://www.runoob.com/python3/python3-module.html
- 步骤2在/home/coggle目录下在你英文昵称中间不要有空格哦的文件夹中创建affairs文件夹。
- 步骤3编写test6.py和affairs.py完成以下功能
- 功能1affairs.py代码完成https://mirror.coggle.club/dataset/affairs.txt文件的读取这里可以直接pd.read_csv('https://mirror.coggle.club/dataset/affairs.txt')来完成。这一部分建议写为函数。
- 功能2test6.py可以导入affairs.py代码
- 功能3test6.py可以进行命令行解析输出affairs.txt具体的第几行内容。
```Python
/home/coggle/
你英文昵称命名的文件夹/
test6.py
affairs/
affairs.py
```
实现要求:
```Python
/home/coggle/你英文昵称命名的文件夹/目录下可以执行
python3 test6.py 10
没有bug并完成第十行内容的输出
```
**任务7在Linux系统中后台运行应用程序并打印日志**
任务要点:程序后台运行,进程管理
- 步骤1在/home/coggle目录下在你英文昵称中间不要有空格哦的文件夹中创建一个sleep.py文件该文件需要完成以下功能
- 程序一直运行
- 每10秒输出当前时间
- 步骤2学习 & 和 nohup后台执行的方法
- https://blog.csdn.net/a736933735/article/details/89577557
- http://ipcmen.com/jobs
- 步骤3学习tmux的使用将步骤1的程序进行后台运行并将输出结果写入到txt文件。
**任务8使用grep和awk从文件中筛选字符串**
任务要点:字符筛选
- 步骤1下载周杰伦歌词文本并进行解压。https://mirror.coggle.club/dataset/jaychou_lyrics.txt.zip
- 步骤2利用grep命令完成以下操作并输出到屏幕
- https://blog.csdn.net/baidu_41388533/article/details/107610827
- https://www.runoob.com/linux/linux-comm-grep.html
- 统计歌词中 包含【超人】的歌词
- 统计歌词中 包含【外婆】但不包含【期待】的歌词
- 统计歌词中 以【我】开头的歌词
- 统计歌词中 以【我】结尾的歌词
- 步骤3利用sed命令完成以下操作并输出到屏幕https://www.cnblogs.com/JohnLiang/p/6202962.html
- 将歌词中 第2行 至 第40行 删除
- 将歌词中 所有【我】替换成【你】
**任务9在目录下创建zip和tar压缩文件并进行解压**
任务要点文件压缩https://www.cnblogs.com/wxlf/p/8117602.html
- 步骤1在/home/coggle目录下在你英文昵称中间不要有空格哦的文件夹中下载https://mirror.coggle.club/dataset/jaychou_lyrics.txt.zip
- 步骤2使用zip 压缩/home/coggle目录下在你英文昵称中间不要有空格哦的文件夹
- 步骤3将 /home/coggle目录下在你英文昵称中间不要有空格哦的文件夹打包为tar格式。
- 步骤4将 /home/coggle目录下在你英文昵称中间不要有空格哦的文件夹打包为tar.gz格式。
**任务10使用find和locate定位文件**
任务要点:文件搜索
- https://www.runoob.com/linux/linux-comm-find.html
- https://www.cnblogs.com/linjiqin/p/11678012.html
- 步骤1使用find统计文件系统中以py为后缀名的文件个数
- 步骤2使用find寻找/home/文件夹下文件内容包含coggle的文件
- 步骤3时候用locate寻找到python3.preinst文件
## Part3 提问&回答
问:具体的活动是怎么安排的?
> 有任务,自己先尝试,然后之后会视频演示和讨论。
问:环境和配置是什么?
> Linux上进行学习python3环境