[Coggle 30 Days of ML(2021.11)]Linux基础使用

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是你必备的技能。


在这里插入图片描述


任务1:使用命令行登录指定的Linux环境

任务要点:ssh登录、密码输入、环境配置

  1. 步骤1:配置本地登录环境如果是window系统,安装任意一款ssh工具

          https://blog.csdn.net/puss0/article/details/103390947
          https://www.runoob.com/linux/linux-remote-login.html
    

    如果是Mac或Linux系统,则不需要,可以直接使用ssh

  2. 步骤2:使用如下信息登录系统

          用户名:coggle,密码:coggle,IP:139.198.15.157。
    

一、配置本地登录环境如果是window系统

因为个人主机是win10,则根据上面第一个博客,在Microsoft store中安装了Termius(很nice)。如下图所示:
在这里插入图片描述

二、根据Coggle提供的信息登录系统

启动Termius后界面如下(并进行操作,可以按自己喜好换不同风格):

在这里插入图片描述

完成后点击CONTINUE进行连接
在这里插入图片描述
连接成功后就可以操作了
在这里插入图片描述


任务2:在目录下创建文件夹、删除文件夹

任务要点:创建文件夹、创建文件、删除文件、删除文件夹

步骤1:学习Linux的目录结构

https://www.runoob.com/linux/linux-file-content-manage.html

步骤2:学习Linux的文件和目录管理

https://www.runoob.com/linux/linux-system-contents.html

步骤3:在/home/coggle目录下,新建一个以你英文昵称(中间不要有空格哦)的文件夹A,在文件夹A内部创建一个以coggle命名的文件夹B
步骤4:在B文件夹内创建一个空txt文件
步骤5:删除步骤4创建的文件
步骤6:删除文件夹B,然后删除文件夹A

整个操作过程如下:
在这里插入图片描述
用pwd查看当前路径
用cd转到相应路径
用mkdir在相应路径下创建目录
用rmdir删除空的目录
用rm直接删除所创建的目录会出现rm: cannot remove ’ ': Is a directory,加上-r可删除
用touch来创建空的txt文件,rm可删除


任务3:在目录下下载文件、阅读文件

任务要点:下载文件、移动文件、阅读文件

步骤1:在home/coggle目录下,新建一个以你英文昵称(中间不要有空格哦)的文件夹A在文件夹A内部创建一个以coggle命令的文件夹B
步骤2:使用wget命令下载https://mirror.coggle.club/dataset/affairs.txt,到文件夹Bwget教程:https://www.cnblogs.com/pretty-ru/p/10936023.html
步骤3:使用head、cat、tail命令阅读下载的文件。阅读文件基础教程:https://www.cnblogs.com/jixp/p/10833801.html
在这里插入图片描述
用mkdir在相应路径下创建文件
wget + URL 即可下载对应文件
head和tail -n 5 可分别查看开头和结尾5行
cat则可以按行得到文件所有数据

步骤4:在命令行使用ipython进入python3环境,并使用pandas读取下载的文件。
在这里插入图片描述在命令行中直接输入ipython进入python3环境,导入pandas,利用其中read_csv函数读取下载的txt文件,该文件中数据维数为[6366,6]。


任务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文件,并输入以下内容,并运行

#!/usr/bin/env python3
print('Hello World!')

一、Nano创建py并运行

用nano创建一个空的helloword.py
在这里插入图片描述
在py文件中输入步骤三中内容
在这里插入图片描述Ctrl + X 保存 enter退出

写好helloword.py脚本后,使用chmod +x helloword.py给脚本加上执行权限,就可以运行了
./helloword.py
通常需要在.py文件第一行加上#!/usr/bin/env python这句话的意思是指定这个脚本文件的解释器地址为python,不加这句话,系统会自动默认使用shell解释器(https://blog.csdn.net/liuzubing/article/details/96632937)。

在这里插入图片描述
二、Vim创建py并运行

用nano创建一个空的helloworldv.py
在这里插入图片描述

vim界面如下:
在这里插入图片描述
按 i 进入输入模式(也称为编辑模式),开始编辑文字,在编辑模式当中,可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。编辑完后,按下 ESC 按钮回到一般模式。在一般模式中按下 :wq 储存后离开 。

之后对这个py进行与nano得到的py相同操作,即可运行成功。

在这里插入图片描述


任务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:打印命令行参数

命令行输入:python3 test5.py 参数1 参数2
程序输出:
test5.py
参数1
参数2

功能2:使用os模块打印/usr/bin/路径下所有以m开头的文件。

用nano新建test5.py空文件
在这里插入图片描述
根据步骤1和2中的文档即(https://zhuanlan.zhihu.com/p/56909212)完成所需的两个功能
在这里插入图片描述
运行后结果如下:

在这里插入图片描述


任务6:在目录下创建py目录,并进行import导入

任务要点:python代码模块化

步骤1:学习python模块化,https://www.runoob.com/python3/python3-module.html
步骤2:在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建affairs文件夹。
步骤3:编写test6.py和affairs.py完成以下功能:

  • 功能1:affairs.py代码完成https://mirror.coggle.club/dataset/affairs.txt文件的读取,这里可以直pd.read_csv(‘https://mirror.coggle.club/dataset/affairs.txt’)来完成。这一部分建议写为函数。
  • 功能2:test6.py可以导入affairs.py代码
  • 功能3:test6.py可以进行命令行解析,输出affairs.txt具体的第几行内容。
/home/coggle/    
	你英文昵称命名的文件夹/        
				test6.py
 				affairs.py

实现要求:

/home/coggle/你英文昵称命名的文件夹/目录下,可以执行:
python3 test6.py 10
没有bug,并完成第十行内容的输出。

数据的DataFrame形式如下:

在这里插入图片描述

在相应目录下用nano建立test6.py和affairs.py
在这里插入图片描述
按照步骤完成相应功能

affairs.py
在这里插入图片描述

test6.py
在这里插入图片描述
因数据序号从0开始,所以输入1,数据应输出序号为0的数据。

最终结果:

在这里插入图片描述


任务7:在Linux系统中后台运行应用程序,并打印日志

任务要点:程序后台运行,进程管理

步骤1:在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建一个sleep.py文件,该文件需要完成以下功能:

  • 程序一直运行
  • 每10秒输出当前时间

步骤2:学习 & 和nohup后台执行的方法

https://blog.csdn.net/a736933735/article/details/89577557http://ipcmen.com/jobs

步骤3:学习tmux的使用,将步骤1的程序进行后台运行,并将输出结果写入到txt文件。

在对应路径下用nano创建sleep.py空文件

在这里插入图片描述
按照所需功能写出代码

在这里插入图片描述
根据以下关于tmux的教程,使用tmux

https://linuxize.com/post/getting-started-with-tmux/
https://www.ruanyifeng.com/blog/2019/10/tmux.html

tmux的一些操作命令:
1.新建会话(新建一个指定名称的会话):
$ tmux new -s session-name
2.分离会话(在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离):
$ tmux detach
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。()
3.tmux ls命令可以查看当前所有的 Tmux 会话
$ tmux ls or $ tmux list-session
4.接入会话(tmux attach命令用于重新接入某个已存在的会话):
tmux attach-session -t session-name
5.杀死会话(tmux kill-session命令用于杀死某个会话):
# 使用会话编号
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t session-name

以下是会话创建、分离、接入和杀死的过程:

在这里插入图片描述

根据步骤二中学习的后台运行nohup和&方法,在创建的tmux中实现sleep.py的后台运行。
(其中-u:实时查看输出;record.txt:运行过程打印的信息输出的文件 https://www.cxybb.com/article/qq_44864740/120900148)

在这里插入图片描述
用nohup和&实现后台运行(https://blog.csdn.net/davidhzq/article/details/102766881)
命令前加上nohup可以让你退出shell之后继续运行相应的进程。nohup就是忽略当前任务挂断信号的意思。输入nohup命令之后会给出提示:nohup: ignoring input and appending output to ‘nohup.out’,这是正常提示,直接打回车就可以。nohup默认会把标准输出重定向到默认文件nohup.out中,你可以自定义该输出文件,如上record.txt。

sleep.py在后台运行过程中,可以看到record.txt的大小在不断增大(即第4列数字)。
在这里插入图片描述
输出record.txt的前5行内容可以看出结果正确

在这里插入图片描述


任务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行 删除
  • 将歌词中 所有【我】替换成【你】

用wget将所需zip下载至相应位置

在这里插入图片描述

 解压:unzip filename.zip

在这里插入图片描述
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。

https://blog.csdn.net/baidu_41388533/article/details/107610827)

在这里插入图片描述

包含【超人】的歌词

 grep [选项] "搜索内容" 文件名

在这里插入图片描述
包含【外婆】但不包含【期待】的歌词

 -v : 显示不包含匹配文本的所有行。

1.竖线‘|’ ,在linux中是作为管道符的,将‘|’前面命令的输出作为’|'后面的输入。
2.反引号是命令替换,命令替换是指Shell可以先执行中的命令,将输出结果暂时保存,在适当的地方输出。
3.echo 指令用于字符串的输出
4.双引号"“则对于双引号”"内的参数替换($)

https://blog.csdn.net/qq_26711103/article/details/81666460
https://blog.csdn.net/qq_40491569/article/details/83688652?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

在这里插入图片描述
以【我】开头的歌词

在这里插入图片描述
以【我】结尾的歌词

在这里插入图片描述
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作

 sed [-nefri] 'command' 输入文本

将歌词中 第2行 至 第40行 删除

 sed '1,2d' filename           #删除第一行到第二行

在这里插入图片描述
将歌词中 所有【我】替换成【你】

 替换一行中的某部分
 sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)

在这里插入图片描述


任务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格式。

用wget将所需zip下载至相应位置
在这里插入图片描述
zip命令

 解压:unzip filename.zip
 压缩:zip filename.zip dirname

在这里插入图片描述
tar命令

 解压:tar zxvf filename.tar
 压缩:tar czvf filename.tar dirname

在这里插入图片描述
tar.gz命令

  解压:tar zxvf filename.tar.gz
  压缩:tar zcvf filename.tar.gz dirname
  压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....

在这里插入图片描述


任务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文件

参考

https://blog.csdn.net/proberbs/article/details/62079254

在/home/coggle/目录下找到后缀为py的文件数,其中wc -l 选项为打印换行符的总数,也即由 find 命令输出的绝对文件路径总数。
在这里插入图片描述
在/home/目录下使用上述语句

在这里插入图片描述
PS:使用 sudo 命令来读取指定目录中的所有文件,包括具有超级用户权限的子目录中的文件,以避免 “Permission denied” 错误。

find 命令没有读取当前工作目录中的所有文件。下面是更多的示例,分别显示 /var/log 和 /etc 目录中的常规文件总数。

在这里插入图片描述
查找文件名+内容

  find 文件目录  -type f |xargs grep "查询内容"

在这里插入图片描述
只显示包含内容的文件名

  grep -r -l "查询内容"  文件目录

在这里插入图片描述
另:文件名+内容

  grep -r "查询内容"  文件目录

使用locate寻找到python3.preinst文件
一般情况我们只需要输入 locate your_file_name 即可查找指定文件。
locate your_file_name

在这里插入图片描述
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值