barriers / 阅读 / 详情

bash与sh的区别

2023-05-19 16:14:06
TAG: ba bas bash 区别
共1条回复
ardim

bash是 Bourne Again SHell 是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容Bourne shell,也就是说用Bourne shell的脚本不加修改可以在bash中执行。

sh是Bourne shell 这个是UNIX标准的默认shell,对它评价是concise简洁 compact紧凑 fast高效 有AT&T编写,属于系统管理shell。

相关推荐

bash是什么意思

bash 是一个为GNU项目编写的Unix shell,也就是linux用的shell。 Shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器。 BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL最近好像 zsh 功能强大的,很受推崇
2023-01-02 23:44:131

bash中文是什么意思

bash 英[bæʃ] 美[bæʃ] vt. 怒殴; 痛击,猛击; 严厉批评; vi. 严厉地,威胁地批评指责; n. 重击,猛撞; 痛快的玩乐[消遣]; <英方>尝试; [例句]He threw one of the biggest showbiz bashes of the year as a 36th birthday party for Jerry Hall.为了庆祝杰里·霍尔的36岁生日,他举办了当年演艺圈最盛大的庆祝宴会。[其他] 第三人称单数:bashes 复数:bashes 现在分
2023-01-02 23:44:181

Bash漏洞是什么意思?

  目前网上曝光了一个非常严重的Bash漏洞,它允许黑客向服务器发出遥控指令,轻松盗取隐私信息,然而很多朋友对于Bash是什么以及Bash是什么意思不了解,因此以下这篇知识扫盲文章,会给大家带来一定的帮助。    Bash是什么?   bash是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由布莱恩·福克斯创造。在1990年,Chet Ramey成为了主要的维护者。   bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。   2014年9月,多名网络安全专家发现一种在网络中已经隐藏20年的bug,这种名为Bash的漏洞比“心脏出血”漏洞的威胁还要严重。黑客可以通过它遥控向网络服务器发出指令,这意味着服务器受影响的公司将遇到大麻烦。   因此,在当前,Bash是一个安全漏洞,允许黑客向网络服务器发出遥控指令。由于这种bug允许黑客指令服务器去做任何他想做的事情,为此隐私信息很容易被从受影响的服务器中窃走。    Bash解决办法:   1、下载最新的补丁进行修复,方法为:   2、在机器上运行命令:   $ env x="() { :;}; echo vulnerable" bash -c "echo this is a test"   如果返回以下内容:则请尽快升级。   vulnerablethis is a test目前官方已经提供了升级包请运行:yum update -y bash 进行升级处理!    Bash是什么意思?   bash是一个英文单词,字面意思有:痛击、猛击严厉批评、怒殴、威胁地批评指责等含义。   不过bash通常是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash当你在命令行中敲入bash命令时,相当于进入bash环境,如果本身就是bash环境,那么就是进入一个子bash环境,相当于开了一个子进程。
2023-01-02 23:44:241

linux里面bash是什么?

另外市里边儿的系统这个还是需要的。
2023-01-02 23:44:305

Linux里面bash是什么?

就是Linux下的一种脚本文件,类似于C语言中的c文件,MATLAB里的m文件,Python里的py文件。
2023-01-02 23:44:503

bash是什么牌子

在法国女装品牌中bash成立于2003年,相对来说是法国当地比较年轻的一个服装品牌,它家的服装大多都没有很华丽的噱头,甚至是不会有过多的流行元素,但巧妙的风格构思设计让旗下单品算是比较少见的。女子服装,大多是上穿窄袖,下穿长裙,腰系卡带,肩披长巾。窄袖长到手腕。上衣短少仅仅到腰部,在唐朝的壁画中,女子穿的就是窄袖衫襦。身长披帛、长裙。这种上衣极短而下裙拖长的服饰、更能显示出比例上的节奏感而表现出体态美,可见唐代妇女的绰绰风姿。
2023-01-02 23:45:011

bash有什么主要特点

1、命令记忆能力(history)2、命令和文件补全功能([Tab]键的功能)3、命令别名设置功能(alias)4、程序脚本(bash script)5、通配符6、作业控制、前台、后台控制详细可查看:网页链接
2023-01-02 23:45:131

bash中文是什么意思

bash英[bæʃ]美[bæʃ]vt.怒殴;痛击抄,猛击;严厉批评;vi.严厉地,威胁地批评指责袭;n.重击,猛撞;痛快的玩2113乐[消遣];<英方>尝试;[例句]Hethrewoneofthebiggestshowbizbashesoftheyearasa36thbirthdaypartyforJerryHall.为了庆祝杰里·霍尔的36岁生日,5261他举办了当年4102演艺圈最盛大的庆祝宴会。[其他]第三人称单数:bashes复数1653:bashes现在分
2023-01-02 23:45:181

在linux中bash指的是什么

bash shell是sh shell的增强版本,目前linux大部分使用的都是bash shell。1、Linux操作系统,是一种计算机操作系统,中文读法大致一般为“哩内克斯”,2、但真正的读法应为“哩纳克斯”。Linux操作系统的内核的名字也是“Linux”。3、Linux操作系统也是自由软件和开放源代码发展中最著名的例子。 4、简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。5、这个系统是由世界各地的成千上万的程序员设计和实现的。6、其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix兼容产品。
2023-01-02 23:45:256

linux中bash是什么

bash是指GNU项目编写的中的Unixshell,也就是指的linux所用的shell,而Shell是指提供使用者使用界面的软件,也就是一个命令行解释器,BASH是SHELL中的一种,是大多数LINUX发行版默认的SHEL
2023-01-02 23:45:501

bash的基本功能-bash基本功能-历史命令与补全

1.历史命令 history [选项][历史命令保存文件] 选项: -c: 清空历史命令 -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history 一般是正常退出后把历史命令保存在 /.bash_history,使用-w之后强制马上保存到 /.bash_history 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改 历史命令的调用 使用上,下箭头调用以前的历史命令 使用“!n”重复执行第n条历史命令 使用“!!”重复执行上一条命令 使用“!字串”重复执行最后一条以该字串开头的命令 2.命令与文件补全 在bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
2023-01-02 23:45:561

如何在win10中开启Bash命令行

在 Windows 10 内部预览版 build 14316 中,点击“开始”——“设置”,在打开的设置窗口搜索框中输入“特性”两个字,将会出现“启用或关闭 Windows 功能”条目,点击启动它。将弹出“Windows 功能”对话框,在对话框窗口列表中向下滚动,直到发现“Windows Subsystem for linux (Beta)”条目,点击选中其前面的复选框。接下来将下载、安装和应用相关的组件,这些操作进程结束后,显示“立即重新启动”按钮,点击它重新启动电脑。重新启动进入 Windows 10 的桌面,在小娜搜索框中键入:Bash,小娜顶端出现“Bash 运行命令”条目,回车(或点击)启动它。将会出现类似 Windows 传统 cmd.exe 界面的窗口,提示此 Bash 来自 Ubuntu,并且需要下载相关文件,键入“Y”将开始从微软商店中下载。在这里键入“Y”,下载开始。经过一段时间的下载,Ubuntu 的 Bash 安装完成,提示符也变成了:在“#”号后面,可以键入 Bash 命令测试。
2023-01-02 23:46:013

bash常用命令

alias: 为一个命令定义一个别名; unalias:删除指定的别名; bg: 将任务放到后台运行; fg:将作业放到前台运行; break: 跳出for、while、select或until循环; continue: 继续执行for、while、select或until循环的下一次迭代; builtin: 执行指定的shell内建命令; cd: 切换为指定的目录; dirs: 出当前存储目录的列表; echo:将指定字符串输出; export:设置子shell进程可用的变量; jobs:输出提交的任务; history:命令历史记录; kill:杀掉指定进程; pwd:显示当前工作目录的路径名; set:设置并显示环境变量的值; unset:删除指定的环境变量; source:读取并执行指定文件中的命令; times:显示累计的用户和系统时间; cat:列出指定文件的内容; chmod:为指定文件或目录修改权限; date:显示日期; df:显示所有挂载设备的当前磁盘空间使用情况; du:显示指定文件路径的磁盘使用情况; file:查看文件类型; find:对文件进行递归查找; grep:在文件中查找字符串; getopt:解析命令选项; gzip:采用Lempel-Ziv编码的GNU项目压缩工具; head:显示指定文件内容的开头部分; help:显示bash内建命令的帮助页面; link:创建一个指向文件的链接; ls:列出目录内容; man:显示指定命令的教程; mkdir :在当前目录下创建文件夹; more:列出指定文件的内容,在每屏数据后暂停下来; sort:基于指定的顺序组织数据文件中的数据; tail:显示指定文件内容的末尾; tar:将数据和目录归档到单个文件中; top:显示任务活动进程; touch:新建一个空文件; whereis:显示指定命令的相关文件; which:查找可执行文件的位置; who:显示当前系统中的登录用户; whoami:显示当前用户的用户名
2023-01-02 23:46:361

bash用英语怎么说

败史
2023-01-02 23:46:422

Bash变量的类型

Bash变量的类型 通常理解shell变量是弱类型的,或者无类型的,其实Bash变量是有类型的。 Bash变量一共有三类: 直接赋值一个普通变量就是定义一共string变量。 VAR2就是一个array变量。 对于定义map变量必须要显式的申明( declare -A )," -A "表示这是一个map变量;而这个显式的申明并不需要作用给字符串变量和普通array变量(虽然显式的申明 declare -a ,小写的" -a "表示这是一个array变量),对程序的规范性和可阅读都有很好的帮助,但不是必须的,只有map才是必须显式申明。 如果不显示的申明 -A ,那么Bash会把变量VAR3解释成一个普通array变量,并且只包含一个元素,即最后一个,即上述: 定义数字变量很常见,经常用到: 有同学就会问了,这不是定义一个数字变量吗,怎么说只有三种变量类型,没有数字类型呢;其实Bash内部使用的还都是字符串,只不过是数字字符串而已。 也就是只能给这个变量赋值数字字符,不能赋值字母字符, 例如 而如果强行给赋值非数字字符,那么相当于赋值了"0": 这个命令等同于: 命令 declare -p <var> 可以打印出变量类型以及值。 输出结果如下: 字符串变量的类型declare使用 -- 标识。
2023-01-02 23:46:501

bash是什么编程语言呀

就是Linux中集成的脚本语言,俗称shell script
2023-01-02 23:46:562

Bash编程1——基本定义

POSIX:一系列基于Unix的开放系统标准。 Bash主要关注posix 1003.1标准的Shell和Utilities部分。 blank :空格或tab字符 builtin:由shell本身在内部实现的命令,而不是由文件系统中的某个可执行程序实现的命令。 control operator: 执行控制功能的记号。 它是换行符或以下之一:‘||", ‘&&", ‘&", ‘;", ‘;;", ‘;&", ‘;;&", ‘|", ‘|&", ‘(", or ‘)" exit status:命令返回给调用者的值。 该值限制为8位,因此最大值为255。 field:一个文本单元,它是一个shell扩展的结果。 扩展后,执行命令时,生成的字段将用作命令名称和参数。 filename:用于标识文件的字符串。 job:组成一个管道的进程组以及其任一子进程,这些进程都处于同样的进程组。 job control:用户可以选择性地停止(暂停)和重新启动(恢复)进程执行的机制。 metachracter:一个分隔单词的字符(不加引号时)。 元字符是空格,制表符,换行符或以下字符之一:‘|", ‘&", ‘;", ‘(", ‘)", ‘<", or ‘>"。 name:由字母,数字和下划线组成并且以字母或下划线开头的单词。 名称用作shell变量名和函数名。 也称为标识符。 operator:控制操作符或重定向操作符。 运算符包含至少一个不带引号的元字符。 process group:一个具有相同进程组ID的相关进程的集合。 process group ID:在其生命周期内表示进程组的唯一标识符。 reserved word:一个对shell有特殊意义的词。 大多数保留字引入了shell流控制结构,例如for和while。 return status:exit status的同义词。 signal:一种机制,通过该机制,内核可以通知系统中发生的事件。 special builtin:shell内置命令,由posix标准分类为特殊命令。 token:shell的一系列字符被认为是一个单元。 它既可以是单词,也可以是运算符。 word:由shell处理为一个单元的字符序列。 单词可能不包括不带引号的元字符。
2023-01-02 23:47:101

在linux下 什么是bash.什么又是shell

我想这个好像没有专门的命令的一般都是通过编程来实现的,可以通过递归方式来遍历目录,然后得到文件数。
2023-01-02 23:47:164

$bash是什么命令

Linux系统默认开启的终端,一般都是Bash Shell,可以通过如下命令确定当前运行的默认Shell。echo $SHELL说明:个人系统是Redhat Enterprise server5,默认使用的shell即为bash shell。如果系统默认使用的不是bash shell,可以通过bash命令运行bash shell。说明:图中随便输入的命令,目的是让shell执行出错,通过出错信息来确定bash命令是否成功执行。在bash中如果找不到命令开头一定是"bash: "之类的信息。 通过上图即可知道要运行bash shell,只需要执行bash命令即可。
2023-01-02 23:47:371

linux下怎么运行bash脚本

linux下运行bash脚本的方法如下:1.首先在桌面右键点击,选择在终端中打开,打开命令行;2.在命令行中输入cd 脚本路径,进入脚本所在目录;3.使用chmod+x 脚本名命令给文件添加可执行权限;4.使用sh 脚本名或者 ./脚本名的方法来运行bash脚本。
2023-01-02 23:47:432

bash和dash的区别

你好关于bash和dash的区别:Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加、增强了很多特性。 GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。语法上的主要的区别有:1.定义函数bash: function在bash中为关键字dash: dash中没有function这个关键字2.select var in list; do command; donebash:支持dash:不支持, 替代方法:采用while+read+case来实现3. echo {0..10}bash:支持{n..m}展开dash:不支持,替代方法, 采用seq外部命令4. here stringbash:支持here stringdash:不支持, 替代方法:可采用here documents5. >&word重定向标准输出和标准错误bash: 当word为非数字时,>&word变成重定向标准错误和标准输出到文件worddash: >&word, word不支持非数字, 替代方法: >word 2>&1; 常见用法 >/dev/null 2>&16. 数组bash: 支持数组, bash4支持关联数组dash: 不支持数组,替代方法, 采用变量名+序号来实现类似的效果7. 子字符串扩展bash: 支持${parameter:offset:length},${parameter:offset}dash: 不支持, 替代方法:采用expr或cut外部命令代替8. 大小写转换bash: 支持${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern}dash: 不支持,替代方法:采用tr/sed/awk等外部命令转换9. 进程替换<(command), >(command)bash: 支持进程替换dash: 不支持, 替代方法, 通过临时文件中转10. [ string1 = string2 ] 和 [ string1 == string2 ]bash: 支持两者dash: 只支持=11. [[ 加强版testbash: 支持[[ ]], 可实现正则匹配等强大功能dash: 不支持[[ ]], 替代方法,采用外部命令12. for (( expr1 ; expr2 ; expr3 )) ; do list ; donebash: 支持C语言格式的for循环 dash: 不支持该格式的for, 替代方法,用while+$((expression))实现13. let命令和((expression))bash: 有内置命令let, 也支持((expression))方式dash: 不支持,替代方法,采用$((expression))或者外部命令做计算14. $((expression))bash: 支持id++,id--,++id,--id这样到表达式dash: 不支持++,--, 替代方法:id+=1,id-=1, id=id+1,id=id-1希望对你有帮助
2023-01-02 23:47:521

如何windows 10 bash

1、确保您使用至少是Windows 10的14316版本。 这种方法只适用于64位版本的Windows 10。打开设置应用程序和头部更新和安全>对于开发。 在这里启动“开发者模式”开关,使开发者模式。2、接下来,打开控制面板,单击“程序”,然后单击“打开Windows功能打开或关闭”在程序和功能。在这里启用“Windows子系统为Linux(测试版)”列表中的选项,并单击“确定”。执行此操作后,系统会提示您重新启动计算机。 点击“立即重新启动”,以重新启动您的计算机和Windows 10将安装新的功能。3、您的计算机重新启动后,单击开始按钮(或按Windows键),键入bash,然后按Enter键。4、运行bash.exe文件中的第一次,系统会提示您接受服务条款。 那么该命令将从Windows Store下载Bash on Ubuntu on Windows。5、如何使用Ubuntu的bash shell,并且安装Linux软件您现在有基于Ubuntu的完整的命令行的bash shell。 因为它们是相同的二进制文件,你可以使用Ubuntu的apt-get命令来安装Ubuntu的软件要打开Bash shell,只需打开开始菜单,搜索bash或Ubuntu你会看到一个“Bash on Ubuntu on Windows应用程序。 你可以将这个应用程序的快捷方式放到你的开始菜单,任务栏,或桌面,方便使用。6、使用你会用的Linux终端命令。 如果你使用标准的Windows命令提示符与DOS命令,这里有两个Bash和Windows中的一些基本命令你需要使用apt-get命令安装和更新了Ubuntu环境下的软件。
2023-01-02 23:47:581

Win10系统Linux Bash命令怎么用

你好,具体方法如下:1、没安装Bash的用户可以按照之前介绍的方法,先在设置→更新和安全→针对开发人员中选择“开发人员模式”,点击后会下载“开发人员模式包”,如下图 ——Win10但有时这个包会下载不成功,2、此时也无需担心,上一步如果不顺利,可以在后续步骤中弥补。此时进入控制面板→程序和功能→启用或关闭Windows功能,勾选“适用于Linux的Windows子系统(Beta)”,点击“确定”后安装,——Win103、安装后需要重启,然后打开命令提示符,执行如下命令即可开启(可直接在管理员模式下输入Bash命令开启):C:windowssystem32bash.exe4、如果第一步安装不顺利,此时可能就需要从商店下载所需组件,顺利与否还得看网络状况,IT之家测试中就遇到如下“鬼畜”情况:
2023-01-02 23:48:251

[Linux记录] 常用BASH命令(1)——基础

Linux最简单基础的常用命令,掌握这些命令就可简单使用Linux系统。 Linux中的目录即为Windows中常说的文件夹,不同层级之间以 / 分隔,如 /home/cooper/Desktop/working ;而Windows采用 分隔,如 C:UserscooperDesktopMyScripts 。 Linux中文件扩展名仅起标识作用,而不像Windows系统中是必备的。Linux中常见可编辑文件类型均为文本文件,可使用文本编辑器直接编辑。Windows文件的换行符采用 ,而Linux文件的换行符采用 ,当在Linux中无法执行Windows文件时,可尝试 dos2unix filename 转换文件的换行符。 Linux中以 . 开头命名的文件为隐藏文件,一般为配置文件或配置目录,如 ~/.bashrc 为用户的BASH配置文件, ~/.vim/ 目录存放VIM编辑器的配置文件。如果不清楚这些文件目录的含义,不要擅自修改这些隐藏文件。 绝对路径与相对路径:绝对路径是指从根目录开始的目录路径,而相对路径是指相对于当前目录的目录路径。下述所有关于目录和文件的操作均可使用绝对路径和相对路径。 Linux中文件与目录名建议以小写英文字母开始,中间可使用 _ 、 - 、 . 、穿插大小写字母及数字等方式进行分割标记。 Note :大多数情况下,如果一个目录名为"dirname",那么 dirname 与 dirname/ 均可作为目录名使用。 进入系统后,首先要进入一个目录。Linux中最常用的目录切换命令为 cd ,即change directory的缩写,其常见用法包括: Note : cd - 只能单独使用 打印当前目录内容的命令为 ls ,即list的缩写,常见用法包括: 进入层级关系复杂的目录后,有时需要确认当前目录是否为想要进入的目录,此时可以通过打印当前目录路径进行确认。 pwd 命令,即print working directory的缩写,其使用直接在命令行键入即可。 cp 命令为拷贝或拷贝重命名,copy的缩写。 mv 命令为移动或移动重命名,move的缩写。这两个命令都支持对目录或文件的操作,常见用法如下: Note :不论是 cp 还是 mv ,当目标文件名或目标目录名与原文件或原文件名一致时,目标文件或目标目录将会被原文件或目录覆盖。例如: 文件和目录的创建可分别使用 touch 、 mkdir 命令,常用操作如下: Note : rm 命令,即remove的缩写,用于删除文件或目录。常用操作如下: Note : Tab 键可用于命令、文件名、目录名、变量名等补全,该命令人畜无害,记不清上述名称时按 Tab ,一次不够多按几次即可。如果没有出现想要的内容,检查已键入的命令或名称。 Linux系统中难免要使用VIM编辑器进行文本编辑,最简单的使用方法为: 最简单的VIM编辑器使用就是进入编辑模式编辑,最后进入底线命令模式退出。
2023-01-02 23:48:301

linux上bash是什么进程

bash进程就是shell的进程,每一个已登录的用户都有bash这个进程,当一个用户在终端上面登录后,Linux系统就会给这个用户一个shell,这个shell就是bash进程(当默认shell程序是bash时),然后你接下来执行的命令都是这个bash进程的子进程,因为它是大部分命令行启动的程序的父进程,所以不要随便终结它。
2023-01-02 23:48:361

linux的shell编程中#/bin/sh和$bash是什么意思

你清楚sh和bash的区别吗?如果知道那就没有这个问题了,建议你去看了解这两个shell的异同。
2023-01-02 23:48:424

如何修改.bash

首先要确保该 .bash 文件的属主确实是属于你本人的(因为在每个人的主目录下都有各自的 .bash 文件),且你确实具有对该文件的读写权限。然后你就可以使用 Linux 的全屏幕编辑程序 vi 对 .bash 文件进行编辑了。你可以在该文件中写入各种你想执行的 SHELL 命令。
2023-01-02 23:49:082

10 分钟学会Linux常用 bash命令

显示所有的环境变量,如果你想获取某个变量的详细信息,使用 echo $VARIABLE_NAME . Example: whereis使用系统自动构建的数据库来搜索可执行文件,源文件和手册页面。 Example: 它在环境变量PATH指定的目录中搜索可执行文件。此命令将打印可执行文件的完整路径。 Example: 清除窗口上的内容。 列出您的文件。 ls 有很多选项: -l 列出“长格式”的文件,其中包含文件的确切大小,拥有该文件的人员,有权查看该文件,以及何时进行上次修改。 -a 列出所有文件,包括隐藏文件。有关此命令的更多信息,请检查此链接。 Example: 创建或更新您的文件。 Example: 它可以在UNIX或Linux下用于以下目的。 显示文件的第一部分(用空格移动并键入q以退出)。 输出文件的前10行。 输出最后10行文件。用于-f在文件增长时输出附加数据。 将文件从一个位置移动到另一个位置。 filename1 文件的源路径, filename2 是目标路径。 将文件从一个位置复制到另一个位置。 filename1 文件的源路径, filename2 是目标路径。 删除文件。在目录上使用此命令会给您显示一个错误: rm: directory: is a directory 。 为了删除目录,你必须传递 -rf 去递归删除目录中的所有内容。 比较文件,并列出他们的差异。 让您更改文件的读取,写入和执行权限。 压缩文件。 解压缩gzip压缩的文件。 让你查看gzip压缩文件,而不需要gunzip它。 打印文件。 查看打印机队列。 Example: 从打印队列移除某些内容。 awk是处理文本文件最有用的命令。它一行一行地在整个文件上运行。默认情况下,它使用空格分隔字段。awk命令最常用的语法是 让我们采取以下文件 /etc/passwd 。以下是此文件包含的示例数据: 所以现在让我们从这个文件只获取用户名。 -F 指定在我们要基于哪个分隔字段。在我们的例子中 : 。 { print $1 } 意味着打印出第一个匹配字段。 运行上述命令后,您将获得以下输出。 有关如何使用 awk 的更多细节,请查看以下链接。 查找文件内的文本。您可以使用grep搜索与一个或多个正则表达式匹配的文本行,并仅输出匹配的行。 Example: 您还可以通过使用 -i 选项强制grep忽略单词大小写。 -r 可用于搜索指定目录下的所有文件,例如: -w 只搜索单词。有关 grep 详细信息,请查看以下链接。 告诉你一个文件中有多少行,多少单词和多少字符。 Example: 7459 是行数, 15915 是单词数, 398400 是字符数. 用于过滤和转换文本的流编辑器。 example.txt 用连字符替换所有空格 使用"d"替换所有的数字 排序文本文件的行 example.txt sort example.txt 随机化一个排序的example.txt 报告或省略重复的行 example.txt 只显示example.txt的唯一行(首先你需要排序,否则看不到重叠) 显示每行的唯一项,并告诉我找到了多少个实例 从每行文件中删除部分。 example.txt 显示第2,7和9栏的空格作为分隔符 显示一行文字 显示 "Hello World" 用字母之间的换行显示 "Hello World" 简单的最佳文本格式化程序 example: example.txt (1 line) 将example.txt的行输出为20个字符的宽度 翻译或删除字符 example.txt 把所有小写字母变成为大写 把所有的空格变成换行符 显示文件的行数 example.txt 带行号显示 example.txt 打印匹配模式的行 - 扩展表达式(别名为:"grep -E") example.txt 在其中显示“Lorem”或“dolor”的行 打印匹配模式到的行 - FIXED模式匹配(别名为:"grep -F") example.txt 在example.txt中找到具体的字符串"(Lorem | doloar)" 生成一个新的目录。 执行这个,从一个目录转移到另外一个目录。 将你移动到主目录。此命令接受可选的 dirname ,将你移动到该目录。 告诉你你目前所在的目录。 ssh (SSH client) 是一个用来在登录到远程机器并执行的命令的程序。 此命令还接受 -p 可用于连接到特定端口的选项。 返回当前登录用户名。 允许当前登录的用户更改其密码。 显示您的磁盘配额。 显示当前日期和时间。 显示月份的日历。 显示当前的正常运行时间。 显示谁在线 Displays information about user. 显示内核信息。 显示指定命令的手册。 显示磁盘使用情况。 显示文件名中文件和目录的磁盘使用情况(du -s只给出一个总数)。 列出您最后登录的指定用户。 列出您的进程。 使用您所提供的ID杀死(结束)进程。 用名称杀死所有进程。 显示当前活动的进程。 列出停止的或后台工作的Job; 恢复在后台停止的Job。 前台化最近的Job。 Brings the most recent job in the foreground. Pings主机并输出结果。 获取域的whois信息。 获取域的DNS信息。 下载文件。 在本地主机和远程主机之间或两台远程主机之间传输文件。 从本地主机复制到远程主机 从远程主机复制到本地主机 此命令还接受 -P 选项可用于连接到特定的端口。 在bash中你将编写第一行脚本文件,被叫做 shebang 。任何脚本中的这一行来确定脚本的执行能力,如独立的可执行文件,而不是在终端中预先键入sh,bash,python,php等。 Example: 上面的一行创建一个变量str并给它赋值“hello world”。通过 $ 放在变量名的开头来检索变量的值。 Example: 像其他语言一样,bash也有数组。数组是包含多个值的变量。数组的大小没有最大限制。bash中的数组为零。第一个元素被索引为元素0.在bash中创建数组有几种方法。以下给出了哪些。 Examples: 要在特定索引处显示值,请使用以下语法: 如果没有提供索引,则假定为数组元素0。要了解数组中有多少值,请使用以下语法: Bash也支持三元条件。下面是一些例子。 检查一些关于如何操作字符串的语法 Example: 当您运行上述示例时,该hello函数将输出“world!”。上述两个功能 hello 和 say 是相同的。主要区别是功能 say 。此功能打印其接收到的第一个参数。函数内的参数以与给脚本的参数相同的方式进行处理。 bash中的条件语句与其他编程语言相似。条件有许多形式,如最基本的形式是 if 表达式 then 语句,其中语句只有在表达式为真时执行。 有时,如果条件变得混乱,所以你可以使用相同的条件 case statements 。 Expression Examples: bash 中有三种不同类型的循环。 for , while 和 until . for 语法: while 语法: until 语法: bash_profile 可以通过运行后面的命令打开。 nano ~/.bash_profile nano ~/.bashrc source ~/.bashrc cd hotellogs 您可以通过传递不同的选项来轻松地调试bash脚本bash。例如-n,不会运行命令并仅检查语法错误。-vecho命令在运行它们之前。-x命令行处理后的echo命令。
2023-01-02 23:49:201

linux下怎么查看.bash

Linux系统默认开启的终端,一般都是Bash Shell,可以通过如下命令确定当前运行的默认Shell。echo $SHELL说明:个人系统是Redhat Enterprise server5,默认使用的shell即为bash shell。如果系统默认使用的不是bash shell,可以通过bash命令运行bash shell。说明:图中随便输入的命令,目的是让shell执行出错,通过出错信息来确定bash命令是否成功执行。在bash中如果找不到命令开头一定是"bash: "之类的信息。 通过上图即可知道要运行bash shell,只需要执行bash命令即可。
2023-01-02 23:49:261

centos安装的时候一直进去bash

Linux系统默认开启的终端,一般都是Bash Shell,可以通过如下命令确定当前运行的默认Shell。echo $SHELL说明:个人系统是Redhat Enterprise server5,默认使用的shell即为bash shell。如果系统默认使用的不是bash shell,可以通过bash命令运行bash shell。说明:图中随便输入的命令,目的是让shell执行出错,通过出错信息来确定bash命令是否成功执行。在bash中如果找不到命令开头一定是"bash: "之类的信息。 通过上图即可知道要运行bash shell,只需要执行bash命令即可。
2023-01-02 23:49:351

Bash 教程六章

引号是在任何编程语言中引用字符串的标准做法。引号用于处理带有空格字符的文本、文件名。阅读本教程以了解单引号和双引号之间的区别。 上面脚本会输出 shell 变量扩展仅适用于双引号。如果您在单引号中定义任何变量将不起作用。 上面脚本会输出 Bash 脚本提供了在运行时调试脚本的选项。您在 shell 脚本中使用“set -xv”命令或在执行脚本时在命令行上使用 -xv。 执行以下命令 退出代码是一个介于 0 和 255 之间的数字。这是子进程完成后返回给父进程的值。换句话说,它表示我们函数的最后一个命令的退出状态。 基于命令或程序返回的退出代码值将成功执行或不执行。 编写程序在 /tmp/test.txt 文件中写入一些内容并检查命令执行成功与否。 编写一个程序来搜索文件中的字符串并检查字符串是否存在。 以上代码会输出
2023-01-02 23:49:431

在bash shell里 $0 $? $* $@ 各表示什么意思?

$0就是该bash文件名$?是上一指令的返回值$*所有位置参数的内容:就是调用调用本bash shell的参数。$@基本上与上面相同。只不过是“$*”返回的是一个字符串,字符串中存在多外空格。“$@”返回多个字符串。还有$#返回所有位置参数的个数。
2023-01-02 23:49:494

linux怎样进入bash?

ctrl+alt+t
2023-01-02 23:50:256

不可或缺的 Bash 别名

Bash 别名是一种用新的命令补充或覆盖 Bash 命令的方法。Bash 别名使用户可以轻松地在 POSIX 终端中自定义其体验。它们通常定义在 $HOME/.bashrc 或 $HOME/bash_aliases 中(它是由 $HOME/.bashrc 加载的)。 大多数发行版在新用户帐户的默认 .bashrc 文件中至少添加了一些流行的别名。这些可以用来简单演示 Bash 别名的语法: 但并非所有发行版都附带预先添加好的别名。如果你想手动添加别名,则必须将它们加载到当前的 Bash 会话中: 否则,你可以关闭终端并重新打开它,以便重新加载其配置文件。 通过 Bash 初始化脚本中定义的那些别名,你可以键入 ll 而得到 ls -l 的结果,当你键入 ls 时,得到也不是原来的 ls 的普通输出。 那些别名很棒,但它们只是浅尝辄止。以下是十大 Bash 别名,一旦你试过它们,你会发现再也不能离开它们。 在开始之前,创建一个名为 ~/.bash_aliases 的文件: 然后,确认这些代码出现在你的 ~/.bashrc 文件当中: 如果你想亲自尝试本文中的任何别名,请将它们输入到 .bash_aliases 文件当中,然后使用 source ~/.bashrc 命令将它们加载到当前 Bash 会话中。 如果你一开始使用过 GNOME 中的 Nautilus、MacOS 中的 Finder 或 Windows 中的资源管理器等 GUI 文件管理器,那么你很可能习惯了按文件大小排序文件列表。你也可以在终端上做到这一点,但这条命令不是很简洁。 将此别名添加到 GNU 系统上的配置中: 此别名将 lt 替换为 ls 命令,该命令在单个列中显示每个项目的大小,然后按大小对其进行排序,并使用符号表示文件类型。加载新别名,然后试一下: 在 MacOS 或 BSD 上,ls 命令没有相同的选项,因此这个别名可以改为: 这个版本的结果稍有不同: 实际上,即使在 Linux上,上面这个命令也很有用,因为使用 ls 列出的目录和符号链接的大小为 0,这可能不是你真正想要的信息。使用哪个看你自己的喜好。 感谢 Brad Alexander 提供的这个别名的思路。 mount 命令过去很简单。只需一个命令,你就可以获得计算机上所有已挂载的文件系统的列表,它经常用于概览连接到工作站有哪些驱动器。在过去看到超过三、四个条目就会令人印象深刻,因为大多数计算机没有那么多的 USB 端口,因此这个结果还是比较好查看的。 现在计算机有点复杂,有 LVM、物理驱动器、网络存储和虚拟文件系统,mount 的结果就很难一目了然: 要解决这个问题,试试这个别名: 此别名使用 awk 按列解析 mount 的输出,将输出减少到你可能想要查找的内容(挂载了哪些硬盘驱动器,而不是文件系统): 在 MacOS 上,mount 命令不提供非常详细的输出,因此这个别名可能过度精简了。但是,如果你更喜欢简洁的报告,请尝试以下方法: 结果: 有时你好不容易弄清楚了如何在终端完成某件事,并觉得自己永远不会忘记你刚学到的东西。然后,一个小时过去之后你就完全忘记了你做了什么。 搜索 Bash 历史 记录是每个人不时要做的事情。如果你确切地知道要搜索的内容,可以使用 Ctrl + R 对 历史 记录进行反向搜索,但有时你无法记住要查找的确切命令。 这是使该任务更容易的别名: 这是如何使用的例子: 每个星期一都会这样:你坐在你的电脑前开始工作,你打开一个终端,你发现你已经忘记了上周五你在做什么。你需要的是列出最近修改的文件的别名。 你可以使用 ls 命令创建别名,以帮助你找到上次离开的位置: 输出很简单,但如果你愿意,可以使用 --long 选项扩展它。这个别名列出的显示如下: 如果你需要知道目录中有多少文件,那么该解决方案是 UNIX 命令构造的最典型示例之一:使用 ls 命令列出文件,用-1 选项将其输出控制为只有一列,然后输出到 wc(单词计数)命令的管道,以计算有多少行。 这是 UNIX 理念如何允许用户使用小型的系统组件构建自己的解决方案的精彩演示。如果你碰巧每天都要做几次,这个命令组合也要输入很多字母,如果没有使用 -R 选项,它就不能用于目录,这会为输出引入新行并导致无用的结果。 而这个别名使这个过程变得简单: 这个别名会计算文件,忽略目录,但 不会 忽略目录的内容。如果你有一个包含两个目录的项目文件夹,每个目录包含两个文件,则该别名将返回 4,因为整个项目中有 4 个文件。 你用 Python 编程吗? 你用 Python 编写了很多程序吗? 如果是这样,那么你就知道创建 Python 虚拟环境至少需要 53 次击键。 这个数字里有 49 次是多余的,它很容易被两个名为 ve 和 va 的新别名所解决: 运行 ve 会创建一个名为 venv 的新目录,其中包含 Python 3 的常用虚拟环境文件系统。va 别名在当前 shell 中的激活该环境: 每个人都会吐槽进度条,因为它们似乎总是不合时宜。然而,在内心深处,我们似乎都想要它们。UNIX 的 cp 命令没有进度条,但它有一个 -v 选项用于显示详细信息,它回显了复制的每个文件名到终端。这是一个相当不错的技巧,但是当你复制一个大文件并且想要了解还有多少文件尚未传输时,它的作用就没那么大了。 pv 命令可以在复制期间提供进度条,但它并不常用。另一方面,rsync 命令包含在几乎所有的 POSIX 系统的默认安装中,并且它被普遍认为是远程和本地复制文件的最智能方法之一。 更好的是,它有一个内置的进度条。 像使用 cp 命令一样使用此别名: 使用此命令的一个有趣的副作用是 rsync 无需 -r 标志就可以复制文件和目录,而 cp 则需要。 你不应该使用 rm 命令。rm 手册甚至这样说: 如果要删除文件,则应将文件移动到“废纸篓”,就像使用桌面时一样。 POSIX 使这很简单,因为垃圾桶是文件系统中可访问的一个实际位置。该位置可能会发生变化,具体取决于你的平台:在 FreeDesktop 上,“垃圾桶”位于 ~/.local/share/Trash,而在 MacOS 上则是 ~/.Trash,但无论如何,它只是一个目录,你可以将文件藏在那个看不见的地方,直到你准备永久删除它们为止。 这个简单的别名提供了一种从终端将文件扔进垃圾桶的方法: 该别名使用一个鲜为人知的 mv 标志(-t),使你能够提供作为最终移动目标的参数,而忽略了首先列出要移动的文件的通常要求。现在,你可以使用新命令将文件和文件夹移动到系统垃圾桶: 现在文件已“消失”,只有在你一头冷汗的时候才意识到你还需要它。此时,你可以从系统垃圾桶中抢救该文件;这肯定可以给 Bash 和 mv 开发人员提供一些帮助。 注意: 如果你需要一个具有更好的 FreeDesktop 兼容性的更强大的垃圾桶命令,请参阅 Trashy 。 每个人都有自己独特的工作流程,但无论如何,通常都会有重复的任务。如果你经常使用 Git,那么你可能会发现自己经常重复的一些操作序列。也许你会发现自己回到主分支并整天一遍又一遍地拉取最新的变化,或者你可能发现自己创建了标签然后将它们推到远端,抑或可能完全是其它的什么东西。 无论让你厌倦一遍遍输入的 Git 魔咒是什么,你都可以通过 Bash 别名减轻一些痛苦。很大程度上,由于它能够将参数传递给钩子,Git 拥有着丰富的内省命令,可以让你不必在 Bash 中执行那些丑陋冗长的命令。 例如,虽然你可能很难在 Bash 中找到项目的顶级目录(就 Bash 而言,它是一个完全随意的名称,因为计算机的绝对顶级是根目录),但 Git 可以通过简单的查询找到项目的顶级目录。如果你研究过 Git 钩子,你会发现自己能够找到 Bash 一无所知的各种信息,而你可以利用 Bash 别名来利用这些信息。 这是一个来查找 Git 项目的顶级目录的别名,无论你当前在哪个项目中工作,都可以将目录改变为顶级目录,切换到主分支,并执行 Git 拉取: 这种别名绝不是一个普遍有用的别名,但它演示了一个相对简单的别名如何能够消除大量繁琐的导航、命令和等待提示。 一个更简单,可能更通用的别名将使你返回到 Git 项目的顶级目录。这个别名非常有用,因为当你在一个项目上工作时,该项目或多或少会成为你的“临时家目录”。它应该像回家一样简单,就像回你真正的家一样,这里有一个别名: 现在,命令 cg 将你带到 Git 项目的顶部,无论你下潜的目录结构有多深。 (据称)曾经一位著名科学家提出过,我们可以通过收集极客输入 cd 后跟 ls 消耗的能量来解决地球上的许多能量问题。 这是一种常见的用法,因为通常当你更改目录时,你都会有查看周围的内容的冲动或需要。 但是在你的计算机的目录树中移动并不一定是一个走走停停的过程。 这是一个作弊,因为它根本不是别名,但它是 探索 Bash 功能的一个很好的借口。虽然别名非常适合快速替换一个命令,但 Bash 也允许你在 .bashrc 文件中添加本地函数(或者你加载到 .bashrc 中的单独函数文件,就像你的别名文件一样)。 为了保持模块化,创建一个名为 ~/.bash_functions 的新文件,然后让你的 .bashrc 加载它: 在该函数文件中,添加这些代码: 将函数加载到 Bash 会话中,然后尝试: 函数比别名更灵活,但有了这种灵活性,你就有责任确保代码有意义并达到你的期望。别名是简单的,所以要保持简单而有用。要正式修改 Bash 的行为,请使用保存到 PATH 环境变量中某个位置的函数或自定义的 shell 脚本。 附注,有一些巧妙的奇技淫巧来实现 cd 和 ls 序列作为别名,所以如果你足够耐心,那么即使是一个简单的别名也永无止限。 可以定制你的环境使得 Linux 变得如此有趣,提高效率使得 Linux 可以改变生活。开始使用简单的别名,进而使用函数,并在评论中发布你必须拥有的别名! via: https://opensource.com/article/19/7/bash-aliases 作者: Seth Kenlon 选题: lujun9972 译者: wxy 校对: wxy
2023-01-02 23:50:551

请教怎样编辑.bash

1)在Linux里面,默认地,没有.bash这个文件,倒是有.bashrc .bash_login .bash_history 等文件,你可以运行命令cd,再运行ls -l .bash* , 就可以看见。2)运行vi <文件名>就可以编辑文件,例如,vi a.txt网上vi教程很多,可以百度一下。实际上,你的机器上,任何编辑器都可以用来编辑文本文件。vi比较常用。供参考,谢谢!
2023-01-02 23:51:022

bash是什么编程语言呀

什么是shell shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。 Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/linux 操作系统之核心 程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者 间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分 配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因 为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command) 或 是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢? 其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码, 然后执行它。 各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文 件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、 Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) 等其它的 shell。UNIX/linux将 shell 独立于核心程序之外, 使得它就如同一般的应用 程序, 可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。 有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。 shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。 shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。 一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。 当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。
2023-01-02 23:51:211

-bash是什么进程

Bash(GNU Bourne-Again SHell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用 Linux之父Linus对BASH的描述: 我下载了一个叫Borne Shell的外壳程序。它是UNIX的初始外壳程序之一,可以从互联网上免费下载,名字来源于一个难听的双关语。编写该外壳程序的家伙名叫波恩(英文中的“忍受”或“出生”之意――译注),所以这个程序就叫做“Borne Again Shell”(“再次忍受或再次降生外壳程序”――译注),或一般被称为BASH(bash的英文意为“重击”――译注)。 BASH的正确缩写: BASH = GNU Bourne-Again SHell,BASH 是 GNU 组织开发和推广的一个项目。 BASH的作者和产生: Bourne shell 的作者是 Steven Bourne,它是 UNIX 最初使用的 Shell 并且在每种 UNIX 上都可以使用。 而BASH 与 Bourne shell 完全向后兼容,是Bourne shell的扩展。 双关语的经典之处: [1]作者名叫Steven Bourne,“bourne”与“borne”的发音相近,而borne有“出生”和“忍受”的含义。 [2]Bourne-Again字面意思代表了它是“Bourne shell”l的一种扩展,而暗示“borne-again”、“born-again”则有“重生”和“再次忍受”的意思。(我想作者应该更喜欢“重生”) [3]它的简写“bash”的意思是“重击”,暗示它的出现是一次强有力的重击。 BASH还有魔兽争霸3中人族英雄山丘之王技能之一重击的意思,也就是说bash是重击的英文
2023-01-02 23:51:272

linux怎么让bash

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。以下是几种shell版本,bash是默认的:sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。pdksh: 是 Linux 系统提供的 ksh 的扩展。pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。Linux深入学习的话推荐《Linux就该这么学》。
2023-01-02 23:51:353

bash脚本的几个循环写法

bash脚本里的循环写法其实也就三种,分别是 for , while 和 until 对于某些需要重复执行的命令来说,其仅仅是一些参数有着区别,其他的命令大体是相同的,比如有一只摸鱼怪跳了出来并表示自己是一条鱼,然后这只摸鱼怪被抓到了锅里做成了水煮鱼 好的,现在我们有水煮鱼吃了,但是好巧不巧又跳出来十只摸鱼怪,每个人都表示自己是一条鱼,现在家(bash)里出现了十条鱼 难道我们需要手动运行上面的echo十次,一只一只把鱼抓回来么,当然不用。 for命令允许我们创建一个遍历一系列值的循环。每次循环都使用其中一个值来执行已经定义好的一组命令。命令格式如下: 每次循环会顺序地从list中取出一个值赋给 var , var 可以以 $var 的形式取其中的值,遍历完 list 中的所有元素后跳出for循环 循环体则是do和done之间地部分,可以填入各种标准shell语句,当然也可以填入另一个循环。 list 的形式则有如下两种,一种使用大括号扩起,或者使用空格分隔 好巧不巧输入的数据中含有空格时,可以将带空格的数据使用 " 扩起 另外 list位置也可以填入一条输出命令的语句,即 有点像管道,commands给出一个列表并被循环使用 如果是数字的话,还可以考虑如下写法 上面的式子代表 [digit1,digit2] 中的每一个整数 那么抓摸鱼怪就很方便了 文件中的内容如下: im fish 1 im fish 2 im fish 3 im fish 4 im fish 5 im fish 6 im fish 7 im fish 8 im fish 9 bash中有一种循环方式具有类似C的循环风格(之前"普通"的循环则更类似于迭代器) 基本就是c中那味,当然,既然是c中内味就说明其实还能多写点东西,比如多写两个变量 但是条件还是只能定义一种条件 test command 和bash中 if-else 定义的 test command 是完全一样的,也可以使用任何普通的bash命令,只要状态码不发生变换,循环就会被一直执行下去。而且test command其实可以写多行,只有最后一个测试命令会拿来决定是否退出循环,最后一个命令之前的测试命令都会被忠实地执行。 基本和while一样,连循环体都长得一样
2023-01-02 23:51:491

[bash]$ 什么意思?

就是个提示符,bash是shell脚本中得一种。linux中,$代码普通用户,#代表root用户。都是linux基础,学学吧。
2023-01-02 23:51:541

简述运行bash文件的几种方法?

相对路径运行绝对路径运行放入PATH路径通过文件名运行通过bash 文件名运行通过source 文件名运行通过. 文件名运行常见就这么几种吧
2023-01-02 23:51:591

Ubuntu系统下bash和dash的区别

inux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加、增强了很多特性。 GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。 Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。 语法上的主要的区别有: 1.定义函数 bash: function在bash中为关键字 dash: dash中没有function这个关键字 2.select var in list; do command; done bash:支持 dash:不支持, 替代方法:采用while+read+case来实现 3. echo {0..10} bash:支持{n..m} dash:不支持,替代方法, 采用seq外部命令 4. here string bash:支持here string dash:不支持, 替代方法:可采用here documents 5. >&word重定向标准输出和标准错误 bash: 当word为非数字时,>&word变成重定向标准错误和标准输出到文件word dash: >&word, word不支持非数字, 替代方法: >word 2>&1; 常见用法 >/dev/null 2>&1 6. 数组 bash: 支持数组, bash4支持关联数组 dash: 不支持数组,替代方法, 采用变量名+序号来实现类似的效果 7. 子字符串扩展 bash: 支持${parameter:offset:length},${parameter:offset} dash: 不支持, 替代方法:采用expr或cut外部命令代替 8. 大小写转换 bash: 支持${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern} dash: 不支持,替代方法:采用tr/sed/awk等外部命令转换 9. 进程替换<(command), >(command) bash: 支持进程替换 dash: 不支持, 替代方法, 通过临时文件中转 10. [ string1 = string2 ] 和 [ string1 == string2 ] bash: 支持两者 dash: 只支持= 11. [[ 加强版test bash: 支持[[ ]], 可实现正则匹配等强大功能 dash: 不支持[[ ]], 替代方法,采用外部命令 12. for (( expr1 ; expr2 ; expr3 )) ; do list ; done bash: 支持C语言格式的for循环 dash: 不支持该格式的for, 替代方法,用while+$((expression))实现 13. let命令和((expression)) bash: 有内置命令let, 也支持((expression))方式 dash: 不支持,替代方法,采用$((expression))或者外部命令做计算 14. $((expression)) bash: 支持id++,id--,++id,--id这样到表达式 dash: 不支持++,--, 替代方法:id+=1,id-=1, id=id+1,id=id-1
2023-01-02 23:52:041

如何修改.bash

File → Import → Network from Web Services...,选择数据源“NCBI Entrez EUtilities Web Service Client”,关键词是“pparg AND human[ORGN]”。搜索完毕,返回网络,命名,Layout → yFiles → Organic。返回的网络的数据来自NCBI Entrez Gene data set,后者涵盖了BIND、BioGRID和HPRD。
2023-01-02 23:52:101

bash脚本的解释

2>/dev/null 的意思是把运行 ((1/0)) 时打印的错误信息重定向到 /dev/null,也就是把错误信息完全屏蔽掉了。这样执行这个脚本就不会看到系统打印的 ((1/0)) 的错误提示,而只能看到脚本自己所有的 echo 信息。 如果你去掉那段重定向,再执行这个脚本,就会在输出的Exit status of ((1/0)) is 1这段话前面看到一段类似于下面的错误信息(bash里除0的错误提示)bash: ((: 1/0: division by 0 (error token is "0")
2023-01-02 23:52:152

bash和dash的区别

Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加、增强了很多特性。 GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。语法上的主要的区别有:1.定义函数bash: function在bash中为关键字dash: dash中没有function这个关键字2.select var in list; do command; donebash:支持dash:不支持, 替代方法:采用while+read+case来实现3. echo {0..10}bash:支持{n..m}展开dash:不支持,替代方法, 采用seq外部命令4. here stringbash:支持here stringdash:不支持, 替代方法:可采用here documents5. >&word重定向标准输出和标准错误bash: 当word为非数字时,>&word变成重定向标准错误和标准输出到文件worddash: >&word, word不支持非数字, 替代方法: >word 2>&1; 常见用法 >/dev/null 2>&16. 数组bash: 支持数组, bash4支持关联数组dash: 不支持数组,替代方法, 采用变量名+序号来实现类似的效果7. 子字符串扩展bash: 支持${parameter:offset:length},${parameter:offset}dash: 不支持, 替代方法:采用expr或cut外部命令代替8. 大小写转换bash: 支持${parameter^pattern},${parameter^^pattern},${parameter,pattern},${parameter,,pattern}dash: 不支持,替代方法:采用tr/sed/awk等外部命令转换9. 进程替换<(command), >(command)bash: 支持进程替换dash: 不支持, 替代方法, 通过临时文件中转10. [ string1 = string2 ] 和 [ string1 == string2 ]bash: 支持两者dash: 只支持=11. [[ 加强版testbash: 支持[[ ]], 可实现正则匹配等强大功能dash: 不支持[[ ]], 替代方法,采用外部命令12. for (( expr1 ; expr2 ; expr3 )) ; do list ; donebash: 支持C语言格式的for循环 dash: 不支持该格式的for, 替代方法,用while+$((expression))实现13. let命令和((expression))bash: 有内置命令let, 也支持((expression))方式dash: 不支持,替代方法,采用$((expression))或者外部命令做计算14. $((expression))bash: 支持id++,id--,++id,--id这样到表达式dash: 不支持++,--, 替代方法:id+=1,id-=1, id=id+1,id=id-1
2023-01-02 23:52:231

有哪些好用的bash 技巧

简洁的bash编程技巧1) 检查命令执行是否成功  第一种写法,比较常见:echoabcdee grep-q abcdif[ $? -eq0 ]; then echoFoundelse echoNot foundfi  简洁的写法:ifechoabcdee grep-q abc; then echoFoundelse echoNot foundfi  当然你也可以不要if/else,不过这样可读性比较差:[SunNov 04 05:58 AM] [kodango@devops] ~/workspace$echoabcdee grep-q abc && echoFound echoNot foundFound  2) 将标准输出与标准错误输出重定向到/dev/null 第一种写法,比较常见:1grepabctest.txt1>/dev/null2>&1  常见的错误写法:1grepabctest.txt2>&1 1>/dev/null  简洁的写法:1grepabctest.txt&> /dev/null  3) awk的使用  举一个实际的例子,获取Xen DomU的id。  常见的写法:1sudoxm li grepvm_name awk"{print $2}"  简洁的写法:1sudoxm li awk"/vm_name/{print $2}"  4) 将一个文本的所有行用逗号连接起来  假设文件内容如下所示:[SatNov 03 10:04 PM] [kodango@devops] ~/workspace$cat/tmp/test.txt123  使用Sed命令:123[SatNov 03 10:14 PM] [kodango@devops] ~/workspace$sed":a;$!N;s//n/,/;ta"/tmp/test.txt1,2,3  简洁的写法:123[SatNov 03 10:04 PM] [kodango@devops] ~/workspace$paste-sd, /tmp/test.txt1,2,3  5) 过滤重复行  假设文件内容如下所示:[SatNov 03 10:16 PM] [kodango@devops] ~/workspace$sort/tmp/test.txt  常用的方法:[SatNov 03 10:16 PM] [kodango@devops] ~/workspace$sort/tmp/test.txt uniq123  简单的写法:[SatNov 03 10:16 PM] [kodango@devops] ~/workspace$sort/tmp/test.txt-u  6) grep查找单词  假设一个文本的每一行是一个ip地址,例如[SatNov 03 10:20 PM] [kodango@devops] ~/workspace$cat/tmp/ip.list10.0.0.110.0.0.1210.0.0.123  使用grep查找是否包括10.0.0.1这个ip地址。常见的写法:[SatNov 03 10:22 PM] [kodango@devops] ~/workspace$grep"10.0.0.1/>"/tmp/ip.list10.0.0.1  简单的方法(其实这方法不见得简单,只是为了说明-w这个参数还是很有用的)123[SatNov 03 10:23 PM] [kodango@devops] ~/workspace$grep-w "10.0.0.1"/tmp/ip.list10.0.0.1  顺便grep的-n/-H/-v/-f/-c这几参数都很有用。  7) 临时设置环境变量  常见的写法:[SatNov 03 10:26 PM] [kodango@devops] ~/workspace$exportLC_ALL=zh_CN.UTF-8[六11月 03 10:26 下午] [kodango@devops] ~/workspace$date2012年11月 03日 星期六 22:26:55 CST  简洁的写法:[六11月 03 10:26 下午] [kodango@devops] ~/workspace$unsetLC_ALL[SatNov 03 10:27 PM] [kodango@devops] ~/workspace$LC_ALL=zh_CN.UTF-8 date2012年11月 03日 星期六 22:27:43 CST  在命令之前加上环境变更的设置,只是临时改变当前执行命令的环境。  8) $1,$2等位置参数的使用  假设只想使用$2,$3..这几个参数,常见的做法是:12shiftecho$@  为什么不这样写呢?1echo${@:2}  9)退而求其次的写法  相信大家会有这种需求,当一个参数值没有提供时,可以使用默认值。常见的写法是:arg=$1if[ -z $arg]; then arg=0fi  简洁的写法是这样的:1arg=${1:-0}  10)bash特殊参数–的用法  假设要用grep查找字符串中是否包含-i,我们会这样尝试:[SatNov 03 10:45 PM] [kodango@devops] ~/workspace$echo"abc-i" grep-iUsage:grep[OPTION]... PATTERN [FILE]...Try"grep--help"formoreinformation.[SatNov 03 10:45 PM] [kodango@devops] ~/workspace$echo"abc-i" grep/-iabc-i  简洁的方法是:123[SatNov 03 10:45 PM] [kodango@devops] ~/workspace$echo"abc-i" grep-- -iabc-i  bash中–后面的参数不会被当作选项解析。  11)函数的返回值默认是最后一行语句的返回值#Check whether an item is a function#$1: the function name#Return: 0(yes) or 1(no)functionis_function(){ localfunc_name=$1 test`type -t $1 2>/dev/null`= function}  不要画蛇添足再在后面加一行return $?了。  12) 将printf格式化的结果赋值给变量  例如将数字转换成其十六进制形式,常见的写法是:12[SatNov 03 10:55 PM] [kodango@devops] ~/workspace$var=$(printf"%%%02x"111)  简单的写法是:12[SatNov 03 10:54 PM] [kodango@devops] ~/workspace$printf-vvar "%%%02x"111  看看printf的help[SatNov 03 10:53 PM] [kodango@devops] ~/workspace$help printf grep-A 1 -B 1 -- -vprintf:printf[-vvar] format[arguments] Formatsand prints ARGUMENTS under control of the FORMAT.-- Options: -vvar assign the output to shell variable VAR rather than displayit on the standard output  13)打印文件行  打印文件的第一行:1head-1 test.txt  打印文件的第2行:1sed-n "2p"test.txt  打印文件的第2到5行:1sed-n "2,5p"test.txt  打印文件的第2行始(包括第2行在内)5行的内容:1sed-n "2,+4p"test.txt  打印倒数第二行:12$tail-2 test.txt head-1$tac test.txt sed-n "2p"  14)善用let或者(())命令做算术运算  如何对一个数字做++运算,可能你会这样用:12a=1a=`expra + 1`  为何不用你熟悉的:123a=1leta++leta+=2  15)获取软连接指定的真实文件名  如果你不知道,你可能会这样获取:123[SatNov 03 11:12 PM] [kodango@devops] ~/workspace$ls-l /usr/bin/python awk-F"->""{print $2}" tr-d ""/usr/bin/python2  如果你知道有一个叫readlink的命令,那么:123[SatNov 03 11:13 PM] [kodango@devops] ~/workspace$readlink /usr/bin/python/usr/bin/python2  16)获取一个字符的ASCII码[SatNov 03 11:14 PM] [kodango@devops] ~/workspace$printf"%02x""+2b[SatNov 03 11:30 PM] [kodango@devops] ~/workspace$echo-n "+" od -tx1 -An tr-d ""2b  17)清空一个文件  常见的用法:1echo> test.txt  简单的写法:1>test.txt  18) 不要忘记有here document  下面一段代码:grep-v1 /tmp/test.txt whilereadline; do leta++ echo--$line--doneechoa:$a  执行后有什么问题吗?[SunNov 04 05:35 AM] [kodango@devops] ~/workspace$sh test.sh--2----3--a:  发现a这个变量没有被赋值,为什么呢?因为管道后面的代码是在在一个子shell中执行的,所做的任何更改都不会对当前shell有影响,自然a这个变量就不会有赋值了。  换一种思路,可以这样做:grep-v1 /tmp/test.txt> /tmp/test.tmpwhilereadline; do leta++ echo--$line--done< /tmp/test.tmpechoa:$arm-f /tmp/test.tmp  不过多了一个临时文件,最后还要删除。这里其实可以用到here document:b=1whilereadline2; do letb++ echo??$line2??done< < EOF`grep-v1 /tmp/test.txt`EOFechob: $b  here document往往用于需要输出一大段文本的地方,例如脚本的help函数。  19)删除字符串中的第一个或者最后一个字符  假设字符串为:12[SunNov 04 10:21 AM] [kodango@devops] ~/workspace$str=aremoveb  可能你第一个想法是通过sed或者其它命令来完成这个功能,但是其实有很简单的方法:[SunNov 04 10:24 AM] [kodango@devops] ~/workspace$echo${str#?}removeb[SunNov 04 10:24 AM] [kodango@devops] ~/workspace$echo${str%?}aremove  类似地,你也可以删除2个、3个、4个  有没有一次性删除第一个和最后一个字符的方法呢?答案当然是肯定的:123[SunNov 04 10:26 AM] [kodango@devops] ~/workspace$echo${str:1:-1}remove  关于这些变量替换的内容在bash的man手册中都有说明。  20)使用逗号join数组元素  假设数组元素没有空格,可以用这种方法:[SunNov 04 10:14 AM] [kodango@devops] ~/workspace$a=(1 2 3)$b=${a[*]}[SunNov 04 10:15 AM] [kodango@devops] ~/workspace$echo${b///,}1,2,3  假设数组元素包含有空格,可以借用printf命令来达到:[SunNov 04 10:15 AM] [kodango@devops] ~/workspace$a=(1 234)[SunNov 04 10:15 AM] [kodango@devops] ~/workspace$printf,%s${a[@]} cut-c2- 1,23,4  21) Shell中的多进程  在命令行下,我们会在命令行后面加上&符号来让该命令在后台执行,在shell脚本中,使用(cmd)可以让fork一个子shell来执行该命令。利用这两点,可以实现shell的多线程:job_num=10functiondo_work(){ echoDo work..}for((i=0; i<job_num ;i++)); do echoFork job $i (do_work)&donewait #wait for all job doneechoAll job have been done!  注意最后的wait命令,作用是等待所有子进程结束。  22) bash中alias的使用  alias其实是给常用的命令定一个别名,比如很多人会定义一下的一个别名:1aliasll="ls-l"  以后就可以使用ll,实际后执行的是ls -l。  现在很多发行版都会带几个默认的别名,比如:aliasgrep="grep--color=auto" # 带颜色显示aliasls="ls--color=auto"# 同上aliasrm="rm-i" # 删除文件需要确认  alias在某些方面确实提高了很大的效率,但是也是有隐患的,这点可以看我以前的一篇文章终端下肉眼看不见的东西。那么如何不要alias,而是用本来的意思呢?答案是使用转义:12/ls/grep  在命令前面加一个反斜杠后就可以了。  这里要插一段故事,前两天我在shell脚本中定义了下面的一个alias,假设位于文件util.sh:#!/bin/bash...aliasssh="ssh-o StrictHostKeyChecking=no -o LogLevel=quiet -o BatchMode=yes"...  后面这串ssh选项是为了去掉一些warning的信息,不提示输入密码等等。具体可以看ssh的文档说明。我自己测试的时候好好的,当时我同事跑得时候却依然有报Warning。我对比了下我们两个人的用法:12shutil.sh #我的./util.sh #他的  大家应该知道,直接./util.sh执行,shell会去找脚本第一行的shebang中给定的解释器去执行改脚本,所以第二种用法相当于直接用bash来执行。那想必是bash/sh对alias是否默认这一点上是有区别的了(可能是bash版本的问题,RHEL 5U4)。翻阅了下Bash的man手册,发现可以通过设置expand_aliases选项来打开alias的功能,默认在非交互式Shell下是关闭的(什么是交互式登录Shell)。  修改下util.sh,打开这个选项就Ok了:#!/bin/bash...#Expand aliases in scriptshopt-s expand_aliasesaliasssh="ssh-o StrictHostKeyChecking=no -o LogLevel=quiet -o BatchMode=yes"...  23)awk打印除第一列之外的其他列  awk用来截取输入行中的某几列很有用,当时如果要排除某几列呢?  例如有如下的一个文件:$cat/tmp/test.txt12 3 4 51020 30 40 50  可以用下面的代码解决(来源):123$awk"{$1=;print $0}"/tmp/test.txt23 4 52030 40 50  但是前面多了一个空格,可以用cut命令稍微调整下:123$awk"{$1=;print $0}"/tmp/test.txt cut-c2-23 4 52030 40 50  附几则小技巧:  1)sudo iptables -L -n vim -  2)grep -v xxx vim -   3)echo $"/  4)set — 1 2 3; echo $@  5)搜索stackoverflow/superuser等站点
2023-01-02 23:52:321

linux 进程中 -bash 和bash 有何区别

这是两个不同的进程,所以进程id(pid)当然不一样的。-bash和bash都是command的名称,在execv中数组的第一个参数,可以自由设置
2023-01-02 23:52:381

什么是SHELL

文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。  shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。  Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。交互式shell和非交互式shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。shell的类型在UNIX中主要有两大类shellBourneshell(包括sh,ksh,andbash)Bourneshell(sh)Kornshell(ksh)BourneAgainshell(bash)POSIXshell(sh)Cshell(包括cshandtcsh)Cshell(csh)TENEX/TOPSCshell(tcsh)BourneShell最初的UNIXshell是由StephenR.Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourneshell。Bourneshell是一个交换式的命令解释器和命令编程语言。Bourneshell可以运行为loginshell或者loginshell的子shell(subshell)。只有login命令可以调用Bourneshell作为一个loginshell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。CShellBillJoy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了Cshell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。KornShell有很长一段时间,只有两类shell供人们选择,Bourneshell用来编程,Cshell用来交互。为了改变这种状况,AT&T的bell实验室DavidKorn开发了Kornshell。ksh结合了所有的Cshell的交互式特性,并融入了Bourneshell的语法。因此,Kornshell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inlineediting)等功能。KornShell是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。BourneAgainShell(bash)bash是GNU计划的一部分,用来替代Bourneshell。它用于基于GNU的系统如Linux.大多数的Linux(RedHat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。POSIXShellPOSIXshell是Kornshell的一个变种.当前提供POSIXshell的最大卖主是Hewlett-Packard。在HP-UX11.0,POSIXshell就是/bin/sh,而bsh是/usr/old/bin/sh.各主要操作系统下缺省的shell:AIX下是KornShell.Solaris和FreeBSD缺省的是Bourneshell.HP-UX缺省的是POSIXshell.Linux是BourneAgainshell.Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])
2023-01-02 23:52:431

c shell 和bash有什么区别

C shell的语法和 C语言的很相似
2023-01-02 23:52:492

bash脚本和shell脚本的区别

题主你好,Unix|Linux下有好多的shell, 如sh, bash, zsh等等.因此: bash脚本是指专门使用bash shell来运行的脚本, 也就是说bash脚本要完全符合bash shell的语法. shell脚本其实是统称, 即使用任意shell语法(sh, bash, zsh等等)编写的脚本都可以称为shell脚本.*.每种shell的基本用法都差不多, 也就是说无论你用哪个shell, 像ls, echo, pwd等这种最最基本的命令用法都是差不多的, 但每种shell又有自己独有的语法. 记的没错的话, 其它shell都是在sh shell的基础上开发出来的.-----希望可以帮到题主, 欢迎追问.
2023-01-02 23:52:581