操作系统:管理计算机硬件与软件 资源的计算机程序,同时也是计算机系统的内核与基石。
简单地说,操作系统就是出于用户与计算机系统硬件之间用于传递信息的系统程序软件。例如:操作系统会在接收到用户输入的信息后,将其传给计算机系统硬件核心进行处理,然后再把计算机系统硬件的处理结果返回给使用者。下图所示为简单理解操作系统作用的示意图。
https://www.cnblogs.com/biyoulin/p/9390496.html
Linux是一套免费使用和自由传播的操作系统
开源免费
安全稳定
可移植性好
高性能
windows文件系统是属于多根目录文件系统,用盘符区分。
linux文件系统是属于根目录文件系统
/:根目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
/home:用户目录
/root:系统管理员root的目录
/usr:应用程序存放目录
command [-options] [parameter]
说明:
command:命令名,相对应功能单词或者缩写。
[-options]: 选项,可用来对命令进行控制,也可以省略。
parameter:传给命令的参数,也可以是零个、一个,或者多个。
command --help
说明:显示command命令的帮助信息
man command
说明:查阅command命令的使用手册
查看目录内容: ls
切换目录: cd
创建和删除操作: touch 、 rm 、 mkdir
拷贝和移动文件: cp 、 mv
查看文件内容: cat 、 more 、 grep
其他:重定向 > 和 > > 、管道 | 、 pwd 、 clear
参数 | 含义 |
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合-l 以人性化的方式显示文件大小 |
cd 是英文单词 change directory 的简写,其功能为切换当前的工作目录,是用户最常用的命令之一
命令 | 含义 |
cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd .. | 切换到上级目录 |
cd - | 可进入上次所在的目录 |
绝对路径 在输入路径时,最前面是/或者~,表示从 根目录/家目录 开始的具体目录位置。
相对路径 在输入路径时,最前面不是/或者~,表示相对 当前目录 所在的目录位置。
创建文件或修改文件时间
如果文件 不存在,可以创建一个空白文件
如果文件 已经存在,可以修改文件的末次修改日期
创建一个新的目录
mkdir -p 可以递归创建目录
删除目录跟文件
rm命令删除文件后不可恢复,删除的时候要小心使用
rm常用参数以及使用方式
参数 | 含义 |
-i | 以进行交互方式执行 |
-f | 强制删除,忽略不存在文件,无需提示 |
-r | 递归删除目录下的内容,删除文件夹时必须要加此参数 |
cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中,相当于DOS 下的 copy 命令。
选项 | 含义 |
-f | 覆盖已经存在的目标文件而不提示 |
-i | 交互覆盖,覆盖文件时有提示 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
用户可以用mv命令移动文件或者目录,也可以给文件或目录重命名
命令 | 作用 |
cat 文件名 | 查看文件内容,创建文件,文件合并,追加文件内容等 |
more 文件名 | 分屏显示文件内容 |
gerp 文件文件名 | 搜索文本文件内容 |
Linux 允许将命令执行结果 重定向到一个文件
将本应显示在终端上的内容 输出/追加 到 指定文件中
其中
> 表示输出,会覆盖文件原有内容
>> 表示追加,会讲内容追加到已有文件的末尾
Linux 允许将 一个命令的输出 可以 通过管道 做为 另一个命令的输入
可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为塞东西(写),右端取东西(读)
常用的管道命令有:
more : 分屏显示内容
grep : 在命令执行结果的基础上查询指定的文本
显示当前工作目录
清屏
命令 | 作用 | 说明 |
reboot | 重启 | 执行后重启操作系统 |
shutdown | 关机 | 执行后提示1分钟关闭操作系统 |
命令 | 作用 |
ps -aux | 查看当前系统中正在执行程序的详细状况 |
kill -9 | 终止指定代号的进程,-9表示强行终止 |
top | 动态显示运行中的进程并排序 |
netstat命令用于显示各种网络相关信息
常用于查看软件打开端口信息
一半需要root权限才能看到更详细的端口信息
是一个列出当前系统打开文件的工具
可以用于查看系统中正在使用端口的详细信息
命令 | 作用 | 说明 |
head | 用来显示前10行的内容 | 不加参数默认显示前十行 |
head -15 文件名 | 显示前10行内容 | -- |
实时监控文件变化:
不停的向文件写入内容:ping www.baidu.com > temp.txt
实时监控:tail -f temp.txt
查看当前操作系统版本信息: cat /proc/version
查看版本当前操作系统发行信息: cat /etc/issue
find 查找文件
ln -s 软连接
tar、gzip、 bzip2、zip、unzip 打包和压缩
vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多。
命令模式
文本输入模式
末行模式
任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。
末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。例
:wq
退出保持文件
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您
我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element