Linux CentOS7 shell

news2024/11/15 7:22:06

学好linux,首先要深入理解shell。

shell俗称壳,它包裹在内核的外面,是用户命令的翻译官。

作用:接收用户的命令,翻译后(处理一下)交给Linux内核处理。

用户执行命令 -> shell -> 内核 -> CPU -> 内核 -> shell ->用户获取结果

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

目前,CentOS默认的shell为bash。

不同的shell的命令会有所差别,这就是Ubuntu和CentOS等不同操作系统命令不一样的原因。

本文从shell的分类、查看信息和切换入手,讨论shell的相关知识。

一、shell分类

1.按使用环境

a.字符画shell

字符画shell就是CLl,也就是我们常说的命令行

b.图形化shell

图形化shell就是GUI,也就是我们常说的桌面

shell的图形化工具(dialog)

执行命令nmtui

2.按语言风格

目前较为流行或者历史上存在的一些shell的种类很多。目前流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。

a.bash

是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

b.sh

BourneShell(sh):是由AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。

c.ksh

ksh有42条内部命令,与bash相比有一定的限制性。但是ksh主要用于unix例如HP-Uinx

d.dash

dash是为跑脚本而生的,具有比bash更快的效率,但是交互性能较差。现在主要用在Debian和Ubuntu上。其内部命令以及参数等与bash有一些差别,如果使用bash命令写的一些脚本可能会出错。

e.tcsh & csh

把tcsh和csh放一起介绍是因为目前这两种sh其实是同一种,tcsh是csh的增强版,并且完全兼容csh。顾名思义csh,其实是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多。

f.pdksh

pdksh是Oracle自身的一种shell,主要用在Oracle数据库管理上。一般是DBA才会使用这种shell。它与ksh不能共存,如果系统中安装了ksh,那么安装pdksh时会报错。

g.zsh

目前Linux里最庞大的一种shell:zsh。它有84个内部命令,使用起来也比较复杂。一般情况下,不会使用该shell。

在查看/etc/passwd文件时,有一类系统用户使用/bin/nologin,这是指用户不能登录或不用登录,仅作为后台服务。

3.按是否登录

按登录方式,可以把shell分为登录shell和非登录shell两种。

a.登录shell

需要用户名、密码登录后才能进入的shell(或者通过"–login"选项生成的shell)。

b.非登录shell

不需要输入用户名和密码即可打开的Shell。

例如:直接命令"bash" 就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序就是一个非登录shell。

执行exit命令,退出一个shell(登录或非登录shell);

执行logout命令,退出登录shell(不能退出非登录shell)。

4.按交互方式

按是否进行交互,分为交互式shell和非交互式shell两种。

a.交互式模式

就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互而达成目的。

这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。

b.非交互式模式

以shell script(非交互)方式执行脚本文件。

在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

5.按传承关系

按传承关系或shell的上下级关系,可分为父shell和子shell两种。

a.父shell

在当前shell中,再打开一级shell时,当前shell称为父shell。而新打开的shell称为子shell

父子shell环境变量一致,但普通变量有独立作用域:父shell变量可以在子shell中使用,而子shell变量不能在父shell中使用。

https://img2018.cnblogs.com/i-beta/1732325/201912/1732325-20191230224708160-1247329388.png

b.子shell

shell可以继续创建子shell

生成子shell的成本不低,而且速度还慢,创建嵌套的子shell去处理命令进程性能更为严重。

通过输入exit命令能有条不絮的退出子shell

当没有了子shell时,再输入exit将退出控制台终端。

二、shell查看

通过命令行可以查看系统支持的shell,也可以查看当前用户正在使用的shell。

1.系统支持shell

查询系统支持的shell有两种方法。

a.cat /etc/shells

b.chsh –l

执行该命令,亦可以查看系统支持的shell。

2.当前使用shell

查询当前用户正在使用的shell,有多种方法,可以灵活选择。

a.echo $SHELL

执行命令显示出当前用户正使用的shell。

b.echo $0

c.env | grep SHELL

d.ps

三、shell切换

1.图形化shell与字符画shell

本系统设置运行级别为3

通过执行init 5

切换到图形化shell

可以通过按Ctrl+alt+F1-- Ctrl+alt+F2相互切换

也可以在命令行执行:

init 3/5  进行切换

2.bash与其他sh

a.添加用户时指定

b.修改用户sh

c.编辑/etc/passwd

d.chsh

执行下列命令,可以改变当前用户使用的shell。

        chsh -s /usr/bin/czh [用户名]

要更改的新的shell要写绝对路径。

修改了系统默认shell(或用户使用的shell)之后不会立即生效,之后再次登录系统修改的shell才会生效。

对于chsh命令,可以通过man chsh查看了解。

四.shell安装

选择使用不同的Shell,可以有各种原因。Shell一般由管理员在创建用户时,为用户指定;其保存在/etc/passwd文件中;或通过usermod命令进行更改。也可在登录后执行相应的命令切换Shell。

要使用不同的shell,就需要安装相应的shell软件。最方便的仍是用yum命令。

        yum -y install zsh

        yum -y install ksh

        yum -y install dash

小结

Shell其实是一个有特殊功能的程序,主要是提供用户与内核交互操作的一个接口。它的位置介于用户界面和内核之间,工作流程是接收用户输入的命令并且进行解释(转换为计算机可以理解的机械码),然后将命令送入内核去执行。我们一般通过ssh远程登录系统并且打开shell,也有一些是直接在图形界面上直接打开终端的方式打开shell。

Shell脚本的优势在于处理偏操作系统底层的业务,例如,Linux内部的很多应用都是使用Shell脚本开发的,因为有1000多个Linux系统命令为它作支撑,特别是Linux正则表达式以及三剑客grep、awk、sed等命令。

对于一些常见的系统脚本,使用Shell更符合Linux运维简单、易用、高效的三大原则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++笔试易错与高频题型图解知识点(三)——数据结构部分(持续更新中)

目录 1. 排序 1.1 冒泡排序的改进 2. 二叉树 2.1 二叉树的性质 3. 栈 & 队列 3.1 循环队列 3.2 链式队列 4. 平衡二叉搜索树——AVL树、红黑树 5 优先级队列(堆) 1. 排序 1.1 冒泡排序的改进 下面的排序方法中,关键字比较次数与记录的初…

LeetCode 996.正方形数组的数目

和上一道状压的区别在于我们要去重一下~ 思路都是和上一篇博客是一样的&#xff0c;感兴趣的同学可以看一下 const int N 15; int dp[1<<N][N]; int n; vector<int>nums1;bool check(int x){int tem sqrt(x);if(tem*temx)return 1;return 0; }int dfs(int u,in…

比较Excel中的两列目录编号是否一致

使用java代码比较excel中两列是否有包含关系&#xff0c;若有包含关系&#xff0c;核对编号是否一致。 excel数据样例如下&#xff1a; package com.itownet.hg;import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import j…

网站如何改成HTTPS访问

在今天的互联网环境中&#xff0c;将网站更改成HTTPS访问已经成为了一种标准做法。HTTPS不仅有助于提高网站的安全性&#xff0c;还可以提高搜索引擎排名&#xff0c;并增强用户信任。因此&#xff0c;转换为HTTPS是一个重要的举措&#xff0c;无论您拥有个人博客、电子商务网站…

如何将你的PC电脑数据迁移到Mac电脑?使用“迁移助理”从 PC 传输到 Mac的具体操作教程

有的小伙伴因为某一项工作或者其它原因由Windows电脑换成了Mac电脑&#xff0c;但是数据和文件都在原先的Windows电脑上&#xff0c;不知道怎么传输。接下来小编就为大家介绍使用“迁移助理”将你的通讯录、日历、电子邮件帐户等内容从 Windows PC 传输到 Mac 上的相应位置。 在…

PicoDiagnostics (NVH设备软件)-Mongoose识别不了VIN码

如果Mongoose J2534诊断线识别不到车辆的VIN码&#xff0c;通常在PD软件中会像下图那样提示。 遇到这种情况&#xff0c;首先确保你的电脑是否已经安装J2534驱动&#xff1a;打开【设备管理器】&#xff0c;如果你将示波器和Mongoose J2534诊断线连接到电脑&#xff0c;【设备管…

EtherCAT FP介绍系列文章—RAS

RAS扩展功能包是acontis公司在EC-Master EtherCAT主站基础上提供的一套基于TCP/IP的客户端/服务器架构的Remote API。Remote API旨在远程API提供了一个接口&#xff0c;解决在操作系统中当第二个进程&#xff08;例如OPC服务器&#xff09;可能访问EtherCAT总线的数据或在Ether…

oracle 校验左括号和有括号是否对称匹配

校验数据比如名称字段的左括号和有括号是否匹配。不匹配情况有&#xff1a; 左括号是英文的&#xff0c;右括号是中文的&#xff1b;右括号是中文的&#xff0c;左括号是英文的&#xff1b; 通过正则表达式对名称进行校验&#xff0c;校验脚本如下&#xff1a; SELECT NAMEFR…

超越YOLOv8?基于Gold YOLO的自定义数据集训练

Gold-YOLO的出色性能是对Noahs Ark Lab团队的奉献和专业知识的证明。它不仅超越了其前身YOLOv8&#xff0c;还为实时目标检测设定了新标准。凭借其闪电般快速的处理能力和出色的准确性&#xff0c;Gold-YOLO承诺革命化一系列应用&#xff0c;从自动驾驶车辆到监视系统等等。 我…

影响产品开发决策的认知偏见

认知偏见存在于每个人的内心&#xff0c;并在不断影响人们的工作和生活。认识并承认自己有偏见&#xff0c;并寻求相应的解决方案&#xff0c;可以帮助我们更好的做出产品决策、团队建设和架构设计。原文: The cognitive biases that influence product development decisions …

某国产中间件企业:提升研发安全能力,助力数字化建设安全发展

​某国产中间件企业是我国中间件领导者&#xff0c;国内领先的大安全及行业信息化解决方案提供商&#xff0c;为各个行业领域近万家企业客户提供先进的中间件、信息安全及行业数字化产品、解决方案及服务支撑&#xff0c;致力于构建安全科学的数字世界&#xff0c;帮助客户实现…

解决谷歌浏览器翻译插件不能用的问题

Chrome浏览器右键翻译页面现在已经不能用了 这是因为谷歌关闭了大陆内的谷歌翻译服务&#xff0c; 所以我们需要将Chrome浏览器的翻译域名指向国内可以用的域名 首先ping一下谷歌cn域名 ping google.cn PING google.cn (108.177.97.100) 56(84) bytes of data. 64 字节&#xf…

PHP在线客服系统平台系统源码+完全开源 带完整的搭建教程

在线客服系统已经成为企业与用户进行实时沟通的重要工具。PHP作为一种流行的服务器端脚本语言&#xff0c;具有高效、稳定和易用性等优点&#xff0c;因此被广泛应用于在线客服系统的开发。今天罗峰来给大家介绍一款PHP在线客服系统平台系统源码&#xff0c;源码完全开源&#…

js实现groupby

初始结果是一个数组&#xff0c;最终得到一个对象。 let arr [{sex: male,name: xiaomi }, {sex: male,name: lisi }, {sex: female,name: zhangsan }]最终得到&#xff1a; 代码&#xff1a; const groupBy (list, key) > {const obj {};list.map(item > {if (!ob…

如何在Instagram和kol展开合作

网红营销已经演变成一个由品牌、MCN机构、红人和消费者组成的复杂生态系统&#xff0c;并在某种程度上重新定义了当今社交媒体时代营销和广告的本质。在这个情况下&#xff0c;品牌找红人进行营销推广已经成为大势&#xff0c;而最能体现网红营销发展的莫过于Instagram这个平台…

简析有源滤波器应用在光伏发电系统中

叶根胜 安科瑞电气股份有限公司 上海嘉定201801 摘要:阐述了有源滤波器在光伏行业的应用&#xff0c;介绍了有源滤波器的原理和HTQF有源滤波器的技术优势&#xff0c;并展示了HTQF有源滤波器的应用效果。 关键词:太阳能;有源滤波器;单晶炉线锯 0前言 面对日益迫切的能源危…

GC8549直流电机驱动芯片解决方案,可替代LV8548/LV8549/ONSEMI

GC8549 是一款双通道 12V 直流电机驱动芯片&#xff0c; 为摄像机、消费类产品、玩具和其他低压或者电池 供电的运动控制类应用提供了集成的电机驱动解 决方案。芯片一般用来驱动两个直流电机或者驱动 一个步进电机。它可以工作在 3.8~12V 的电源电压上&#xff0c;每 通道能提…

Go语言Gin框架Logrus日志管理和token身份验证

文章目录 Logrus日志管理Logrus基本用法实现日志切割和过期删除 token身份验证Hash消息认证签名实现tokenRSA签名实现token椭圆曲线数字签名算法&#xff08;ECDSA&#xff09;方式生成token Logrus日志管理 Logrus是一个结构化的Go日志框架&#xff0c;功能强大&#xff0c;具…

机器学习2:决策树--基于信息增益的ID3算法

1.决策树的简介 建立决策树的过程可以分为以下几个步骤: 计算每个特征的信息增益或信息增益比,选择最优的特征作为当前节点的划分标准。根据选择的特征将数据集划分为不同的子集。对每个子集递归执行步骤 1 和步骤 2,直到满足终止条件。构建决策树,并输出。基于信息增益的…

Sqlserver两个服务器数据库拷贝

一.当前条件&#xff1a; serverA 为源服务器 serverB 为目标服务器 想把serverA中的数据库test拷贝到serverB上。 方法一&#xff1a; 1.在serverB上建立空数据库test 2.右键点击serverA上的test &#xff0c;任务——导出数据&#xff0c;之后填写目标服务器就行