目前的计算机操作系统都采用了某型形式的用户界面,借此指定系统需要操作系统的命令。但是在很多操作系统中,命令行界面是内嵌的,是人与计算机交互的唯一方式。操作系统的命令行页面就是为了执行您的命令。
shell是一个程序,它的工作就是为了用户执行其他程序,即系统中允许用户输入命令的部分。
shell不过是在Unix上运行的一个程序,如果你不喜欢标准shell可以自己编写一个。因此shell曾经出现过很多的版本,如:Bourne shell 简称sh; C shell 简称 csh,它们两个是最早的shell。后面又出现了Korn shell 简称ksh和bash shell等。
那么,有这么多版本的shell我该用哪个呢?
bash 提供了 shell 程序员所需要的编程特性和命令行用户喜爱的各种便利。它一开始打算作为 ksh 的替代品,但随着自由软件运动变得愈发重要,Linux 越来越流行,bash 的风头很快就盖过了 ksh。
bash 也因此成了我们已知的所有 Linux 发行版以及 macOS(包括早期的 OS X 版本)的默认 shell。bash 既是一门强大的编程语言,也是一种优秀的用户界面。它让你在获得复杂编程特性的同时,能够保持键盘输入的便捷性。
答案: 学习 bash 准没错
bash 是一种shell,也就是命令解释器。bash的主要目的是让用户可以同计算机操作系统交互,以便完成想做的任务。这通常涉及运行程序,因此 shell 会接受你输入的命令,判断要用到的程序,然后执行命令来启动程序。bash 其实就是一种用于执行命令的语言,你输入的命令(如 ls、cd、grep、cat)从某种意义上来说就是 bash 命令。这些命令有些是 bash 内建的,有些是独立的程序。
所有的命令行 shell 都采用某种形式的提示符来告诉用户 shell 已经准备好接受输入了。提示符的具体形式取决于很多因素,其中包括操作系统的类型和版本、shell 的类型和版本、发行版以及其他人所做的配置。
$ :通常表明您是以普通用户身份登陆,如下图:

#:通常表明您是root。root用户是系统的管理员,如下图:

~:此符号通常表示所在的目录为主目录,如下图:

pwd 是 print working directory(打印工作目录)的缩写,该命令接受两个选项。-L 显示当前的逻辑路径,这也是默认选项。-P 显示当前的物理路径,如果跟随符号链接,结果可能和逻辑路径不同。

bash 会在环境变量 PATH 中保留一个用于查找命令的目录列表。内建命令 type 会在环境(别名、关键字、函数、内建命令、
$PATH )中搜索匹配其参数的可执行文件并显示匹配结果的类型和位置。该命令有多个选项,其中值得注意的是-a,它会打印出所有的匹配结果,而不是只找出第一个匹配。如下图:

which命令与 type 类似,但它只搜索 $PATH。在不同的系统中,which 的形式各异,不过一般有 -a 选项。如下图:

你需要文件的更多相关信息,例如类型、属主、是否可执行、有多少硬链接,以及最后一次访问或更改的时间,使用 ls、stat、file 或 find 命令。
ls 命令只显示文件名,-l 选项可以提供每个文件更详细的信息。如下图:

ls 的选项很多,可以查询手册页了解其所支持的选项,其中有用的选项包括以下几个。
-a: 不隐藏以 .(点号)开头的文件。
-A:和 -a 相似,但不显示两个常见的目录 . 和 ..,因为每个目录中都有这两项。
-r: 逆序排列。
-R:递归显示子目录。
-S:按照文件大小排序。
用 type 和 which 命令查看指定命令是否存在,并确定其是内建命令还是外部命令。如下图:

顾名思义,内建命令就是内建在 shell 自身中的命令,外部命令则是由 shell 运行的外部文件。外部文件可以是二进制文件,也可以是shell 脚本。理解内外部命令之间的差异很重要。
可以用 enable 命令来关闭或启用内建命令,enable -a 可以列出所有的内建命令及其当前状态。
内建命令的问题在于你无法使用 -h 或 --help 选项获得使用帮助。这时候就用得上内建命令 help 了。help 会显示 shell 内建命令的帮助信息,如下图:

先确定已经安装了 bash。在命令行中输入 bash --version。如果获得了版本输出,则说明 bash 已经安装好了,如下图:

如果没有看到版本号,可能是系统路径中缺少了相应的目录。在一些系统中,chsh -l 或 cat /etc/shells 可以给出一份可用的shell 清单。否则,可以询问系统管理员 bash 的安装位置,或者是否可以安装 bash,如下图:

如果已经安装了 bash,可以用 chsh -s 命令修改默认 shell,例如 chsh -s /bin/bash,如下图:

本文由
传智教育博学谷教研团队发布。如果本文对您有帮助,欢迎
关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。转载请注明出处!
这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式rubyshell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器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
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
我们如何从ruby脚本返回值?#!/usr/bin/envrubya="test"a我们如何在Ubuntu终端或java或c中访问'a'的值? 最佳答案 在ruby/python脚本中打印你的变量,然后可以通过示例从shell脚本中读取它:#!/bin/bashruby_var=$(rubymyrubyscript.rb)python_var=$(pythonmypythonscript.py)echo"$ruby_var"echo"$python_var"注意你的ruby/python脚本只打印这个变量(有更多复杂的方