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:配置本地登录环境如果是window系统,安装任意一款ssh工具
https://blog.csdn.net/puss0/article/details/103390947
https://www.runoob.com/linux/linux-remote-login.html
如果是Mac或Linux系统,则不需要,可以直接使用ssh
步骤2:使用如下信息登录系统
用户名:coggle,密码:coggle,IP:139.198.15.157。
因为个人主机是win10,则根据上面第一个博客,在Microsoft store中安装了Termius(很nice)。如下图所示:
启动Termius后界面如下(并进行操作,可以按自己喜好换不同风格):
步骤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可删除
步骤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]。
步骤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界面如下:
按 i 进入输入模式(也称为编辑模式),开始编辑文字,在编辑模式当中,可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。编辑完后,按下 ESC 按钮回到一般模式。在一般模式中按下 :wq 储存后离开 。
之后对这个py进行与nano得到的py相同操作,即可运行成功。
步骤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)完成所需的两个功能
运行后结果如下:
步骤1:学习python模块化,https://www.runoob.com/python3/python3-module.html
步骤2:在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建affairs文件夹。
步骤3:编写test6.py和affairs.py完成以下功能:
/home/coggle/
你英文昵称命名的文件夹/
test6.py
affairs.py
实现要求:
在/home/coggle/你英文昵称命名的文件夹/目录下,可以执行:
python3 test6.py 10
没有bug,并完成第十行内容的输出。
数据的DataFrame形式如下:
在相应目录下用nano建立test6.py和affairs.py
按照步骤完成相应功能
test6.py
因数据序号从0开始,所以输入1,数据应输出序号为0的数据。
最终结果:
步骤1:在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建一个sleep.py文件,该文件需要完成以下功能:
步骤2:学习 & 和nohup后台执行的方法
https://blog.csdn.net/a736933735/article/details/89577557http://ipcmen.com/jobs
步骤3:学习tmux的使用,将步骤1的程序进行后台运行,并将输出结果写入到txt文件。
在对应路径下用nano创建sleep.py空文件
按照所需功能写出代码
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行内容可以看出结果正确
步骤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
用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' (要替换的字符串可以用正则表达式)
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格式。
解压:unzip filename.zip
压缩:zip filename.zip dirname
解压:tar zxvf filename.tar
压缩:tar czvf filename.tar dirname
解压:tar zxvf filename.tar.gz
压缩:tar zcvf filename.tar.gz dirname
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....
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 的查找并不是实时的,而是以数据库的更新为准.