Linux学习之shell bash

2023-11-02

一,硬件,内核,与shell

       有操作系统就会离不开shell这个东西,操作系统实际上是一组软件,由于这组软件在控制整个硬件与管理系统的活动检测,如果能被随意操作那就乱套了,所以不能被非管理员用户所随意使用。但是对于用户来说也是需要体验的,用户可以通过应用程序来指挥内核,让内核完成所需要的硬件任务,如说明,应用程序在最外层,像鸡蛋壳一样所以被称为壳程序 也就是shell。

二,命令行的shell

        Linux多家百花齐放,也有窗口可供设置主机,但是对于所有的Linux都一样,shell的bash是通用的。学会命令行才可谓掌握着Linux的命脉。而且命令行指令相比窗口要快得多,能用窗口解决的一定可以使用命令行,但是命令行解决的窗口并不一定会解决。所以命令行真的是万金油。

三,关于shell  bash

        shell是一个程序,可以称之为壳程序,用于用户与操作系统进行交互。用来区别与核,相当于是一个命令解析器,Shell有很多中,这里列出其中几种
- Bourne SHell(sh)
- Bourne Again SHell(bash)
- C SHell(csh)
- KornSHell(ksh)
- zsh

各个shell的功能都差不太多,在某些语法的下达下面有些区别,Linux预设就是bash。这里主要记录bash

bash命令是sh命令的超集大多数sh脚本都可以在bash下运行,bash主要有如下这些功能

  • 记录历史命令:bash可以记录曾经的命令,保持在~/.bash_history文件中,只保存上次注销登录之后的命令
  • tab键自动补全:使用tab见可以自动不全命令或者目录
  • alias命令别名:可以使用alias ll='ls -al'来设置命令的别名
  • 工作控制:可以将某些任务放在后台去运行(任务管理,前台。后台控制)
  • 程序脚本:可以执行shell脚本文件
  • 通配符:在查找相关文件或者执行相关命令时,可以使用通配符*
  • 内建命令type:可以使用type 命令来查看某个命令是否为内建在bash当中的命令

bash中变量有两种,分别是环境变量和自定义变量,可以理解为全局变量和局部变量,在理解他们的区别前,需要知道副程序和子程序,举个例子,当前的bash我们称之为父程序,而在这个bash下执行的任何程序,都称之为子程序。那全局变量和局部变量的区别就是,全局变量在子程序中仍然有效,局部变量只在当前程序中生效。(注意,一旦退出父程序这个bash的话,无论是全局变量还是局部变量都失效了,再次打开bash时,该变量是不存在的) 

变量的设定有几个规则
- 设定变量通过=来链接,例如name=sujinzhou,两边不能有空格,如果有空格的话,需要用引号
- 变量名只能是英文名和数字,只能是英文开头
- 如果变量内容被引号扩起来的话,双引号和单引号是有区别的
- 双引号里面的特殊字符,会保持原有的特性。
- 单引号里面的特殊字符,只会是字符
- 使用\将特殊字符转换为一般字符
- 使用“这个符号扩起来的命令会先计算这个命令里面的内容,这个指令等价于$()
- 给原有的变量添加值时,使用变量,"变量,"变量”再加具体的内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux学习之shell bash 的相关文章

  • 尽管 EXPORT_SYMBOL 模块插入时出现“模块中的未知符号”

    我正在尝试编译并插入 r8169 realtek 以太网驱动程序 我的内核版本是 ebin sony uname r 4 2 0 rc3 custom 我的本地磁盘中有相同的完整源代码 用于安装当前的内核 当我运行时该模块编译成功make
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • 如何重新安装cudnn?

    安装Cudnn 4 0 4后 我发现如果我想运行我下载的代码 我需要更高版本的Cudnn 然后我下载 cudnn 7 0 linux x64 v4 0 prod tgz 并直接按以下顺序安装 sudo cp include cudnn h
  • 如何使用Python distutils?

    我用 python 编写了一个快速程序 将 gtk GUI 添加到 cli 程序中 我想知道如何使用 distutils 创建安装程序 因为它只是命令行应用程序的 GUI 前端 所以它只能在 nix 中工作 所以我不担心它是跨平台的 我的主
  • 很好的 C 库集合? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个很好的 ANSI C 库集合 用于处理向量 哈希映射 二进制树 字符串处理等 Try g
  • OS X bash:目录名

    我想创建一个简单的 bash 脚本来在 OS X 上启动 Java 程序 文件名 文件路径和直接工作文件夹都包含空格 当我这样做时 bin sh cd dirname 0 I get usage dirname path 我也尝试过在各种不
  • 如何使用c在Linux中获取当前时间戳(以纳秒为单位)

    我知道我们可以使用clock gettime CLOCK MONOTONIC 我尝试问的问题是 如果我需要以纳秒为单位的时间 从时代来看 这将是一个巨大的数字 例如 自纪元以来的秒数是13438461673 so 13438461673 1
  • 为什么我不能用这个循环从 bash 历史记录中删除多个条目

    这个循环将显示我想要做的事情 但是如果我删除echo从中 它实际上不会删除任何内容 history grep 0 5 0 9 ls cut c1 5 while read id do echo history d id done 我添加了缩
  • Cmake 错误未定义对“pthread_create”的引用

    我对 cmake FindThreads 进行了测试 这是我的源代码test cpp和CMakeLists txt include
  • C++向量数组运算符计算成本高?

    我一直都知道 C 的丰富抽象会带来一定的计算开销 但我的印象是 一旦应用了正确的编译器优化 这种开销几乎可以忽略不计 我很好奇这种开销到底有多大 所以我编写了一个简单的测试来确定这一点 该测试是一个模板化函数 它接受一个容器变量 为容器中的
  • 使用vim,如何快速刷新正在处理的网页?

    我已经使用 VIM 几个星期了 同时处理各种网络语言 我真的很喜欢它 我发现必须点击或单击浏览器并刷新页面才能看到代码更改的效果 这很麻烦 更烦人的是 因为我使用的是 Virtual Box 而且我倾向于在主机系统上处理 PDF 文件 因此
  • 使用 sysfs 的 Linux 用户空间 GPIO 中断

    我想使用 sysfs 在用户空间上使用 GPIO 中断 我使用这些命令 root at91 gpio109 gt echo 109 gt export root at91 gpio109 gt cd gpio109 root at91 gp
  • 使用 Python for Linux 模拟按键事件

    我正在编写一个脚本来自动运行特定模型 当模型失败时 它会等待用户输入 Enter 键 我可以检测到模型何时失败 但我无法使用 python 在 Linux 上 来模拟按键事件 Windows 有 SendKeys 库来执行此操作 但我想知道
  • UNIX 域 STREAM 和 DATAGRAM 套接字之间的区别?

    这个问题是NOTSTREAM 类型和 DATAGRAM 类型 INTERNET 套接字之间的区别 我知道 STREAM 套接字使用 TCP 数据报套接字使用 UDP 以及所有 TCP UDP 内容 按顺序到达的数据包 ACK NACK 等
  • H.323,如何制作一个没有媒体的简单环。该脚本遵循 Q.931 设置,但仍然无法正常工作

    谁能帮我解决这个问题吗 当我发送此请求时 我在wireshark中看到数据包将发送到1720 tcp端口中的SJPhone 但 SJPhone 仍然没有响铃 我想让它响起 无论媒体 我非常感谢您的支持 我一定缺少消息协议细节来实现这个 请给
  • 使用环境变量将参数传递给命令

    我正在尝试编写一个 bash 脚本 该脚本采用环境变量并将其传递给命令 所以如果我有类似的东西 export OUT a arg1 b arg2 0 arg2 1 我想在我的 bash 脚本中执行以下操作
  • PS1 定义中的条件 pwd

    我想显示当前工作目录如果我处于symlink比没有 到目前为止我已经 pwd P pwd echo 1 31m pwd P echo 1 32m pwd 将返回所需的输出 但它不能替代 w在命令提示符下 我尝试用反引号括起来 但这只会导致p
  • 在Linux上如何找到当前目录的所有直接子目录?

    在Linux上如何找到当前目录的所有直接子目录 最简单的方法是通过编写来利用 shell 通配功能echo 如果你喜欢使用ls 例如要应用格式 排序选项 请使其ls d 解释 斜杠确保仅考虑目录 而不考虑文件 Option d 列出目录本身
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上

随机推荐

  • 【从零开始学c++】————模板初阶

    模板初阶 一 模板函数 1 模板函数的概念 2 模板的匹配原则 二 类模板 1 类模板的定义格式 2 类模板的实例化 一 模板函数 如何实现一个通用的的两个数相加的函数呢 我们可以通过函数重载把各个类型的两个数相加给写出来 如下 int A
  • python+requests+pytest 接口自动化框架(八)

    今日内容 接口自动化测试框架封装之数据类型处理以及DDT数据驱动封装 一 数据类型处理 read extract data tag id 替换成 110 json tag id read extract data tag id 二 DDT数
  • 解决 error: style attribute '@android:attr/windowEnterAnimation' not found.

    在Project gradle properties中添加 android enableAapt2 false
  • 5.3.4 因特网的路由协议(四)BGP协议

    5 3 4 因特网的路由协议 四 BGP协议 我们学习的RIP协议 5 3 2 因特网的路由协议 二 基于距离向量算法的RIP协议 和OSPF协议 5 3 3 因特网的路由协议 三 OSPF协议 都是内部网关协议 都是只能作用于一个自治系统
  • 【原创】xenomai UDD介绍与UDD用户态驱动示例

    xenomai UDD与用户态驱动示例 本文介绍xenomai UDD原理和相关代码 并给出一个基于UDD的用户态操作GPIO的示例 以及内核收发网络包与用户态操作网卡收发包的CPU耗时对比 版权声明 本文为本文为博主原创文章 转载请注明出
  • Web.xml配置详解

    1 定义头和根元素 部署描述符文件就像所有XML文件一样 必须以一个XML头开始 这个头声明可以使用的XML版本并给出文件的字符编码 DOCYTPE声明必须立即出现在此头之后 这个声明告诉服务器适用的servlet规范的版本 如2 2或2
  • 浏览器中地址框输入url地址会进行什么操作?

    一 http请求流程 http 超文本传输协议 是基于TCP协议之上的应用层协议 http的请求会进行以下操作 一 http请求流程 1 1 url域名解析成ip地址 dns解析 1 2 建立三次握手TCP连接 1 2 1 报文中SYN S
  • hashmap转红黑树的两个条件

    一个是链表长度到8 实际是要超过8 后面有补充说明 一个是数组长度到64 上图所示是判断链表长度到达8调用treeifyBin方法转换红黑树 TREEIFY THRESHOLD的值为8 TREEIFY THRESHOLD 1 7 所以bin
  • Pandas中对DataFrame列名进行重命名

    目录 1 重命名Pandas DataFrame Column 列 2 在创建Dataframe时指定列名 3 使用 list 设置全部列名 Pandas是一个用于数据分析和操作的Python库 在pandas中几乎所有的操作都围绕着Dat
  • 5款超级好用的命令行工具,提升你的开发效率!

    微信公众号公众号平凡而诗意 更多精彩内容第一时间推送 如果你是一个喜欢使用Linux系统 或者经常和Linux打交道的开发人员 那么 终端和命令行一定是接触最为频繁的工具之一 Linux不像Windows那样 有丰富的桌面应用 但是 却有很
  • JavaScript基础背诵点

    1 JavaScript是一种基于对象和事件驱动具有安全性能的脚本语言 HTML语言是网页设计中普遍采用的一种超文本标记语言 但HTML自身并不能为网页提供动态支持 也不能接受用户输入 更不能对用户请求做出反应 JavaScript可以嵌入
  • linux的crontab定时配置全过程

    今天因为业务需求 需要在服务器上配置定时任务执行数据库的sql语句 所以使用到了linux 的crontab 特此记录 分享一下自己的过程 首先呢 我们知道crontab是在linux中用于设定在某些时间可以自动执行某些命令的功能 在lin
  • Java实现定时任务

    文章目录 1 使用java util Timer 2 使用ScheduledExecutorService 3 使用Spring Task 1 使用java util Timer 这种方式的定时任务主要用到两个类 Timer 和 Timer
  • 什么样的人适合网络营销?

    最近码教授发现很多网友都在网上发问 什么样的适合做网络营销 网络营销难吗 说实话这行业来的太快 很多都没准备好就来了 说得夸张点但凡现在做这行业的基本都不缺客户都缺人 有一点经验就有可能今天4000明天去另外一公司给到8000 但真心好用的
  • 平衡二叉树平衡因子_数据结构:平衡二叉树

    1 基本概念 平衡二叉树 AVL树 或为空树 或为如下性质的二叉排序树 左右子树深度之差的绝对值不超过1 左右子树仍然为平衡二叉树 平衡因子BF 左子树深度 右子树深度 平衡二叉树每个结点的平衡因子只能是1 0 1 若其绝对值超过1 则该二
  • 计算机技能是啥,简历中的IT技能是什么意思?

    IT技能就是你会的计算机知识 从精通程度上可以分为精通 熟练 了解等 从所学内容上 把你学过的语言 用过的工具 掌握的技术都写上 按条理分类写 IT技能 比如 熟练操作计算机 熟练使用各类办公软件 如word excel等 能够使用fron
  • UniApp中如何实现APP页面横竖屏切换?

    前段时间做了一个驾考项目 该项目是使用UniApp搭建的 其中就遇到的一个需求就是横竖屏切换 用横屏来模拟驾照考试 通过查阅文档发现 在UniApp中 要实现横竖屏切换可以由以下步骤来实现 一 通过配置页面的 manifest json 文
  • 数据属性WEKA学习总结

    首先声明 我是一个菜鸟 一下文章中现出技术误导情况盖不负责 1 Weka理处的数据表格中 一个横行称为一个例实 Instance 竖行代表一个属性 Arrtibute 数据表格称为一个数据集 在weka看来 现呈了属性之间的一种关系 Rel
  • Postman发送post请求

    Postman发送post请求 在服务器开发过程中 要经常对get post接口进行测试 get请求 浏览器就可以完成 而post请求浏览器用起来有点麻烦 有的浏览器支持的不太好 个人用过火狐 还可以 今天介绍一下Postman发送post
  • Linux学习之shell bash

    一 硬件 内核 与shell 有操作系统就会离不开shell这个东西 操作系统实际上是一组软件 由于这组软件在控制整个硬件与管理系统的活动检测 如果能被随意操作那就乱套了 所以不能被非管理员用户所随意使用 但是对于用户来说也是需要体验的 用