今天小编要跟大家分享的文章是关于Linux系统中的Bash功能的介绍。一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件),这些指令会被翻译并传给内核,内核在得知用户的需求后调度硬件资源来完成操作(比如,使用网卡发送数据包)。

在Linux环境下,我们一般通过Shell来与内核交流,并最终实现我们想要使用计算机资源的目的。由于Linux的开放性特点,使得在Linux下对Shell的选择也很多,CentOS

6.3系统中可以使用的Shell有/bin/sh、/bin/bash、/bin/tcsh、/bin/csh这几种,/etc/shells文件说明了当前系统有哪些可用的Shell。不同的Shell有不同的特点以及操作方式,我们这里以CentOS默认使用的Shell为讲解案例即Bash。

一、BASH功能介绍

1、命令历史

Bash拥有自动记录命令历史的功能,用户所执行的命令会在注销时自动记录到自己家目录下的.bash_history这样一个隐藏文件中。查看这些命令历史记录的方法有很多,可以通过直接打开文件来查看,也可以通过键盘的上下键来上翻或下翻历史记录,还可以通过history命令查看历史记录,所有的命令历史都有记录编号。命令历史能够记录的信息数量由HISTSIZE变量所决定,CentOS 6.3默认通过/etc/profile文件定义了HISTSIZE=1000,也就是最多可以记录最近所使用的1000条命令,当有第1001条命令执行时第一条命令会被覆盖,执行history -c命令可以清空所有的历史记录。

记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令:

1.上下键翻阅历史命令,找到合适的命令后直接回车即可执行。

2.输入!string调用命令历史(string为关键字),如!vim将调用最后一次执行的以vim开头的命令。或者通过!n来准确定位历史记录,如!242将直接调用命令历史的第242条记录并执行。

3.通过Ctrl+r快捷键打开搜索功能,接着输入关键字即可在命令历史中搜索相关命令,回车完成执行操作。如果没有搜索到适合的命令按ESC键退出搜索。

2、命令别名

在CentOS

6.3系统中我们可以直接使用ll命令来显示文件的详细信息,其实系统中并没有ll这样一个命令,它仅是被提前定义好的一个别名而已,别名的好处是可以把本来很长的指令简化缩写,为常用且复杂的命令及选项创建别名可以大大提高日常工作效率。

3、管道与重定向

Bash的标准输入设备是键盘、鼠标、手写板等设备,标准输出为显示器,一般我们通过键盘输入命令并执行,系统将返回信息显示在屏幕上,默认不管是正确的还是错误的信息都将输出至显示器。标准输入的文件描述符为0,标准输出的文件描述符为1,错误输出的文件描述符为2。但有时我们需要改变这样的标准输入与输出方式,Linux中我们可以使用重定向符(、<>、|)重新定义输入与输出。

管道使得我们可以将多条命令连接在一起使用,它的作用是将一个命令的标准输出重定向给下一个命令并作为该命令的标准输入。例如,使用ifconfig eth0 | grep‘inet addr’命令过滤包含IP地址的行,ifconfig本身会输出大量网络接口的信息,由于这里使用了管道符号(|)所以ifconfig命令的所有输出都将作为grep命令的输入内容,最终实现过滤包含IP地址的行。

对于标准的输出信息是输出至显示器,而有时你可能并不需要这些输出信息,又或者是暂时不需要在屏幕上看到这些信息;另外对于输入一般是通过键盘输入,而有时你或许希望可以从文件中读取输入信息。输出重定向可以使用>或>>符号,使用>可以将输出导入至文件,如果文件不存在则创建该文件,如果文件已经存在则会覆盖该文件的内容;而使用>>可以将输出追加至文件;另外,对应错误信息的重定向需要使用2>或2>>符号实现。输入重定向可以使用

以下通过几个简单的实例演示重定向的使用方法:

4、快捷键

Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们,你的工作效率会直线上升。下面列出了常用的快捷键及其功能描述。

二、BASH使用技巧

1、重定向技巧

1.如果你编写了一个脚本实现自动修改系统帐号的密码,那么默认当密码修改成功后系统会提示successfully这样的提示信息,如果需要修改20个账户密码则显示20条这样的信息。像这样的案例,大量的成功提示信息并不是我们关注的重点,管理员更多的是关心错误提示。所以这时可以考虑将标准正确输出屏蔽,Linux中提供了一个特殊设备/dev/null,它很像太阳黑洞,任何东西往里写入都将永远消失。对大量无意义的输出信息可以通过管道导入至/dev/null设备。

2.标准输出与错误输出分离重定向

很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了,哪些命令出现了问题,并且为了方便管理需要将正确输出与错误输出分写保存在两个不同的记录文件中,那么分离重定向就显得尤为重要了。下面我们检查系统中是否存在tom用户,如果存在则将tom相关信息记录至user文件中,否则记录至error文件中:

2、命令序列

在Linux中我们可以使用控制字符(;、&&、||、&)来控制命令的执行方式。其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行[&&]控制符后面的命令;[||]控制字符的作用与[&&]刚好相反,仅当前一个命令执行失败才会执行[||]控制符后面的命令。下面通过实例演示。

1.火狐浏览器通过前端启动,使得当前Shell将暂时无法使用:

[root@centos6 ~]# firefox

2.后台运行浏览器,不影响当前Shell的使用:

[root@centos6 ~]# firefox &

3.所有命令按顺序执行(不管前面的命令是否成功,后面的命令一定正常执行):

[root@centos6 ~]# ls /tmp ; ls /root ; ls /home

4.如果某个文件存在则显示该文件内容,否则报错(仅当ls执行成功才会执行cat):

[root@centos6 ~]# ls test.txt && cat test.txt

5.如果有gedit编辑器则打开该程序,否则打开vim编辑器:

[root@centos6 ~]# gedit || vim

6.如果id tom执行成功则说明用户存在屏幕将显示Hi,tom,否则显示No such user:

[root@centos6 ~]# id tom &>/dev/null && echo“Hi,tom”|| echo“No such user”

实例5首先通过&>重定向符将id命令的所有输出屏蔽,让后使用&&与||来判断id命令是否执行成功,成功就显示问候语否则显示没有该用户。

3、作业控制

Bash环境中通过命令开启进程的时候使用&符可以使得该进程进入后台执行,或者一个命令执行后使用Ctrl+z快捷键可以将该进程放入后台并暂停执行,以后随时使用jobs命令可以查看这些后台进程,并且会为每个这样的进程分配一个编号,通过fg 的形式可以将这些后台进程再次调回前台执行。

[root@centos6 ~]# firefox &

[root@centos6 ~]# jobs

[1]+  Running

firefox &

[root@centos6 ~]# fg 1

4、花括号{}的使用

通过括号扩展可以生产命令行或脚本需要的字串,括号中可以包含连续的序列或使用逗号分割的多个项目,连续的序列包括一个起点与一个终点并使用..分割。接下来看看具体的语法格式案例:

以上就是小编今天为大家分享的关于Linux系统中的Bash功能的介绍的文章,希望本篇文章能够对正在从事Linux相关工作的小伙伴们有所帮助,想要了解更多Linux相关知识记得关注达内Linux培训官网。最后祝愿小伙伴们工作顺利,成为一名优秀的Linux运维工程师!

作者:丁丁历险

来源:http://manual.blog.51cto.com/3300438/1131800

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

linux中bash的功能主要有,Linux系统中的Bash功能的介绍相关推荐

  1. linux centos查看用户列表,查看centos中的用户和用户组_Centos查看系统中用户和用户组的方法...

    最近朋友刚接触Linux系统,想要查看系统中都又哪些用户和用户所属的组,接下来吾爱编程就为大家介绍一下Centos查看系统中用户和用户组的方法,有需要的小伙伴可以参考一下: 1.查看系统中的用户: C ...

  2. linux如何加辅助ip,如何在 Ubuntu 系统中添加一个辅助 IP 地址

    Linux 管理员应该意识到这一点,因为这是一项例行任务.很多人想知道为什么我们需要在服务器中添加多个 IP 地址,以及为什么我们需要将它添加到单块网卡中?我说的对吗? 你可能也会有类似的问题:在 L ...

  3. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法

    本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...

  4. 武汉中显触摸屏在电动汽车充电桩系统中的应用

    下面主要介绍武汉中显触摸屏在电动汽车充电桩系统中的应用.. 关键字:电动汽车  触摸屏  单片机    节能环保 一:引言 随着最近国家对于电动汽车的支持,以及民众购买电动汽车的各种财政补贴支持,推动 ...

  5. linux图形界面鼠标变成小手_win10系统中安装ubuntu子系统及图形界面

    作为全球最流行且最有影响力的Linux开源系统之一,Ubuntu自发布以来在应用体验方面:有较大幅度的提升,即使对比Windows.MacoS等操作系统,最新版本的Ubuntu也不逊色.下面教大家在w ...

  6. linux 内核 时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图 1 RT-Linux结构 RT -Linux的关键技术是通过软件来模拟硬件的中断控制器.当Linux系统要封锁CPU的中断时时,RT-Linux中的实 ...

  7. linux中时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图 1 RT-Linux结构 RT -Linux的关键技术是通过软件来模拟硬件的中断控制器.当Linux系统要封锁CPU的中断时时,RT-Linux中的实 ...

  8. linux 图标显示 异常,在Ubuntu 18.04系统中VSCode图标显示异常的解决方法

    以下介绍在Ubuntu 18.04系统中VSCode图标显示异常的解决方法,同时附上在Ubuntu 18.04系统中安装Anaconda3-5.3.0方法.VSCode是一款全平台开发的编辑器,它具有 ...

  9. 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

    文章目录 一.Android 逆向中使用的 android.permission 权限 二.Android 系统中的 Linux 用户权限 一.Android 逆向中使用的 android.permi ...

  10. linux中负载值为多少正常_Linux系统中load average平均负载

    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数.如果一个进程满足以下条件则其就会位于运行队列中: 1)它没有在等待I/O操作的结果 2)它没有主动进入等待状态(也就是没有调用'wait') ...

最新文章

  1. git 强制更新远程_版本控制管理工具git的常见指令合集
  2. selenium ie 操作cookie_Python3中selenium 怎么操作Cookie?
  3. HTML简单实例加表单的显示效果
  4. 罗永浩回应被列老赖;三星解散自研 CPU 团队;Python 采用 12 个月的发布周期 | 极客头条...
  5. 华为中兴腾讯拿下国家科学技术进步奖,中南大学一作奖项总数全国第三
  6. .net的页面在大并发下偶尔出现503错误
  7. PHP利用smarty生成静态页详解
  8. 高性能web建站规则(尽量减少http请求)
  9. 快速撑握C#知识点之类的数据成员
  10. quatus ii------调试利器 SignalTap II简介(基于TIGER BOARD 板子)
  11. PS中标尺工具在哪里
  12. 一个程序员的科幻小说
  13. matlab 安装时报错: dsp_doc_en_common 时检测到以下错误
  14. PLSQL Developer 13.0.0.1883 注册码
  15. 未能对git remote进行身份验证
  16. leetcode每日一题·救生艇问题(Python)
  17. Win7系统截图小工具
  18. 汽车matlab小论文,基于matlab汽车道路模型研究论文
  19. B2B电商平台怎么解决大额订单在线支付问题?
  20. 运算符(逻辑或||)和(逻辑与)和括号的优先级

热门文章

  1. 4.1.6 文件的基本操作
  2. Spring boot定制错误json数据
  3. 计算机图形学学习报告,计算机图形学学习报告.pdf
  4. 通过 Docker 部署 Redis 6.x 集群
  5. java基础之集合类
  6. Android开发中如何设置不显示标题和设置全屏
  7. java使用POI工具类导出excel
  8. Spring-data-redis入门
  9. 观察者模式(Observer) 简介
  10. 面向对象(上)知识点