我迫切需要一些建议。
我几乎完成了 CS 专业的大三学业。我有点觉得自己是个后来者,因为我直到大二才真正进入计算机科学领域......通过努力工作,这一年和暑期学校的大量学分,我几乎 catch 了我的同龄人,但是来了担心:
我所有的学业都教会了我很多关于计算机科学的知识,但对实用编程却知之甚少。尽管我有很多动力,但我几乎没有空闲时间让我接手副业。这让我感到不安,原因有两个,1) 我真的对这个领域变得非常热情,2) 我知道很多雇主喜欢看到有一些校外经验的学生。
所以我最近有了一个想法:如果我将 Linux 作为我的主要操作系统,但尽可能地限制自己使用终端,以尝试自然地(在谷歌的帮助下)熟悉命令行并希望使用在线教程逐渐学习 shell 脚本。
您认为这对有抱负的程序员有多大好处?这有多现实?对于几乎没有空闲时间的学生可以在校外进行的小型项目,您还有其他建议吗?
非常感谢,我喜欢这个网站(和播客),非常感谢任何反馈。
最佳答案
听起来是个不错的计划。一些建议:
学习尽可能自动化一切。养成习惯。如果你做某件事不止几次,把它写在脚本里。这不仅仅是为了避免打字,而是为了记录这个过程。当您发现问题时改进您的脚本。在适当的时候分享您的脚本。
了解流水线的强大功能。了解 xargs 命令的用途。用您选择的语言重写标准命令行实用程序,例如 grep 或 sort。 (我偏爱 Perl,但这几乎是作弊。;-)
自定义您的 .bashrc 文件。了解您喜欢哪些设置以及哪些设置不适合您。
对脚本使用ksh 而不是bash。没有太多区别,但是 ksh 有一些非常好的额外功能。但是,对于交互式 shell,我更喜欢 bash。
似乎其他答案建议关注“真正的编程语言”。我不会说这是个坏建议,但根据我的经验,很少有程序员能很好地利用命令行。在整个职业生涯中,良好地使用 shell 脚本可以节省无数的时间和大量的单调乏味。
让我举个例子。这个周末我开始将新代码放入我们的生产系统。上周我们对它进行了测试,一切看起来都很好。理想情况下,您希望拥有操作系统的完美克隆,以便进行同类测试。但是我们买不起硬件的两个副本,所以我们借用生产机器来运行测试,并在执行升级时将它们切换到生产环境。
现在为了区分我们的操作和测试,我们使用两个不同的帐户。所以在系统投入运行之前,我们会清理测试账户产生的某些文件。基本上这是一个两步过程:
查找测试用户创建的所有文件。
把他们吹走。
我想我会花一两分钟的时间用 Perl 编写代码来执行此操作,然后再花几分钟来测试它。这是一项简单的工作。我什至不确定如何在 C/C++ 中进行处理。我认为您应该从根目录的 stat 开始。
但是每个掌握了 shell 脚本的人都跳上跳下,挥舞着手,大声喊出答案,因为你可以在敲代码的时间里写出代码:
$ find /data -user test | xargs rm -rf
测试包括运行命令和观察错误。这个特殊问题是 bash 的操 Helm 室中的垒球球场。 Perl 完成了工作,但它有点不自然。 (我会使用 find2perl,它只是增加了一个步骤。)在 C 或 C++ 中尝试这样做将是一个不切实际的任务。这些语言旨在解决不同的问题。
现在,如果您不在 UNIXy 环境中工作,那么可能有一个专为执行此类操作而设计的工具集。 (我不是专家,但在 Windows 中,我可能会运行搜索以在一个窗口中获取所有文件,选择所有文件并删除。非常简单。但是我不知道如何自动化它。)但是如果您打算在 UNIX/Linux 领域找到一份工作,您必须熟悉命令行,这样您就不会花 5 分钟来完成 30 秒的工作。
关于linux - 学习 linux shell 脚本对我来说有多有用/有多难?替代建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548676/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
“输出”是一个序列化的OpenStruct。定义标题try(:output).try(:data).try(:title)结束什么会更好?:) 最佳答案 或者只是这样:deftitleoutput.data.titlerescuenilend 关于ruby-on-rails-更好的替代方法try(:output).try(:data).try(:name)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
有没有一种简单的方法可以判断ruby脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免