首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux模拟实现【简易版bash

bash),负责接收并执行用户输入的指令,本文模拟实现的就是一个 简易版命令行解释器 ---- ️正文 1、bash本质 在模拟实现前,先得了解 bash 的本质 bash 也是一个进程,并且是不断运行中的进程...bash 就是一个运行中的进程,因为进程间具有独立性,因此可以同时存在多个 bash,这也是多用户登录 Linux 可以同时使用 bash 的重要原因 系统自带的 bash 是一个庞然大物,我们只需根据其本质...,实现一个简易版 bash 就行了 图片源自知乎《Linux内核有多少行源代码?》...C语言 提供了字符串分割函数 strtok,可以直接使用 当然也可以手动实现分割 指令分割后呢?...模拟实现 的全部内容了,相信你在看完本文后,也能手搓出一个简易版 bash 如果你觉得本文写的还不错的话,期待留下一个小小的赞,你的支持是我分享的最大动力!

27420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux Bash基础(一)

    用来区别与核,相当于是一个命令解析器,Shell有很多中,这里列出其中几种 : Bourne SHell(sh) Bourne Again SHell(bash) C SHell(csh) KornSHell...(ksh) zsh 各个shell的功能都差不太多,在某些语法的下达下面有些区别,Linux预设就是bash。...简单点说,直接把shell和bash先理解为一个东西好了,就是Linux中的那个终端窗口(Terminal),也就是那个小黑框,下面的例子都是在Linux的终端窗口中运行的。...跨脚本调用 使用source命令可以实现函数的跨脚本调用。source命令的作用是在同一个进程中执行另一个文件中的bash脚本。 例如有my_info.sh(内容如上)和app.sh: #!.../bin/bash 值得注意的是: sh一般设成bash的软链 在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模 也就是说 /bin/sh 相当于

    10.1K20

    Linux Bash基础(二)

    助记 -e 文件存在 exist -r 文件存在&可读 readable -w 文件存在&可写 writable -x 文件存在&可执行 executable -f 文件存在&普通文件 file -c...文件存在&字符型特殊文件 char -b 文件存在&块型特殊文件 block -d 文件存在&为目录 directory 选择结构 if-else 类比C语言中的if else-if else结构,注意结尾是...are not root" fi case 类比C语言中的switch-case结构,注意,break被;;取代,结尾是esac,即case反过来写。...c) abc, axc, ... [] 范围内一个字符 [1-5] [b-d]) 2b, 3d, ... 循环结构 while 类比C语言中的while-do结构,注意以done结尾。...11月 11日 星期一 15:07:41 CST not yet 2019年 11月 11日 星期一 15:07:51 CST not yet now, deadline reached for 类比C语言中的

    2.6K20

    Linux私房菜:走进bash

    本文内容精简、整理、摘抄、有感于《鸟哥的Linux私房菜 - 基础篇第四版》第十章 • 认识与学习BASHBash功能 命令编辑修复能力:history。...用户bash指令使用记录文件:~/.bash_history 命令与文件补全:tab 命令别名设定:alias 工作控制、前景和背景控制 程序化脚本:shell scripts 通配符:wildcard...,执行上一个指令,相当于↑ + Enter ctrl + u 提示符命令输入下可快速删除整行 ctrl + s 暂停屏幕的输出 ctrl + q 恢复屏幕的输出 特殊符号 bash特殊符号 说明 #...文件转成text文件后再搜索 c计算出现次数 i忽略大小写 n输出行号 v反向选择未搜索匹配到的 排序命令 sort [-fbMnrtuk] [file or stdin] f忽略大小写...t指定分隔符 k按指定区间排序,cat /etc/passwd | sort -t ':' -k 3 wc [-lwm],数据统计 l统计行 w统计英文单字 m统计字符 uniq [-c]

    2.5K20

    Linux&bash闯关CTF

    命令 第一步:写一个bash脚本,循环连接 ? 第二步:查看成功后的结果 ? 将上面的私钥保存为cert.cer供下一关使用。...发现一个可写目录 /run/lock 第三步:在/run/lock下创建一个bash脚本bandit24pwd.sh ? 第四步:添加执行权限等待执行 ?...第二十五关 描述 这一关的任务是利用目录下的key文件登入服务器,但是在登入的时候由于返回的不是/bin/bash无法进行操作,所以要想办法突破他。 命令 第一步:尝试登入 ?...总结 这篇文章主要内容就是讲解了老外写的一片关于linux以及bash的命令使用的CTF,提供不同的场景使用不同的命令,这里肯定是不全的,不可能包含linux的所有命令以及所有情况,只能作为一个参看,能学多少学多少

    3K01

    Bash 读写文件 | Linux 中国

    安装 Bash 如果你在使用 Linux,你可能已经有了 Bash。如果没有,你可以在你的软件仓库里找到它。...在 Windows 上,有几种方法可以体验 Bash,包括微软官方支持的 Windows Subsystem for Linux(WSL)。 安装 Bash 后,打开你最喜欢的文本编辑器并准备开始。...使用 Bash 读取文件 除了是 shell 之外,Bash 还是一种脚本语言。有几种方法可以从 Bash 中读取数据。你可以创建一种数据流并解析输出, 或者你可以将数据加载到内存中。...在 Bash 中援引文件 当你在 Bash 中 “ 援引(source)” 一个文件时,你会让 Bash 读取文件的内容,期望它包含有效的数据,Bash 可以将这些数据放入它建立的数据模型中。.../bin/sh TZ=UTC date >> date.txt 运行脚本几次: $ bash ./date.sh $ bash ./date.sh $ bash .

    3.6K20

    C 链表 - linux 如何实现

    链表是基本数据结构, 一开始学习数据结构时, 我一般这么定义, 对应实现从头或尾插入的处理函数, struct int_node_old { int val; struct int_node_old...= NULL; list = list->next); list->next = new; new->next = NULL; } 但是发现, 如果这么定义的话,每次实现一个list的结构...查看linux的源码, 发现linux中也为我们提供了相似的实现(源码), 把一些共性统一起来。 类是 python 中for_each处理,有些意思。...linux 下的链表定义在文件 include/linux/types.h, 采用的是双向列表 struct list_head { struct list_head *next, *prev;...list 利用这个定义, 我定义了一个自己的list数据结构, 并copy了一些接口实现,感受下,linux 是如何管理链表的。

    2.7K30

    Linux Bash Shell入门教程

    BASH 这个程序一般是存放在 /bin 目录下,如果你的 Linux 系统比较特别,bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或...对于熟悉 C 语言的程序员,我们将解释 BASH 中的定义和用法与 C 语言中有何不同。 2.3.1....BASH 中的变量与 C 语言中变量的区别 这里我们为原来不熟悉 BASH 编程,但是非常熟悉 C 语言的程序员总结一下在 BASH 环境中使用变量需要注意的问题。...4.2     用 BASH 设计简单用户界面 BASH 中提供了一个小的语句格式,可以让程序快速的设计出一个字符界面的用户交互选择的菜单,该功能就是由 select 语句来实现的,select 语句的语法为...4.3     在 BASH 中读取用户输入 BASH 中通过 read 函数来实现读取用户输入的功能,如下面这段程序: #!

    2.8K40

    linux bash shell 特殊字符大全

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,...在双括号内表示C风格的三元操作符((condition?true-result:false-result)); 3. 参数替换表达式中用来测试一个变量是否设置了值; 4....例子:echo {a,b,c}-{\ d," e",' f'} {a..z} 在Bash version 3时添加了这种花括号扩展的扩展,可以使用{A..Z}表示A-Z的所有字符列表,这种方式的扩展Mitchell...在双括号内表示C风格的三元操作符((condition?true-result:false-result)); 3. 参数替换表达式中用来测试一个变量是否设置了值; 4....例子:echo {a,b,c}-{\ d," e",' f'} {a..z} 在Bash version 3时添加了这种花括号扩展的扩展,可以使用{A..Z}表示A-Z的所有字符列表,这种方式的扩展

    6.6K30
    领券