技术标签: Linux shell bash linux kernel
什么是Shell?
shell是用户和Linux(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。
shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。
不论何时你键入一个命令,它都被Linux shell所解释。一些命令,比如打印当前工作目录命令(pwd),是包含在Linux bash内部的(就象DOS的内部命令)。其他命令,比如拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。而对用户来说,你不知道(或者可能不关心)一个命令是建立在shell内部还是一个单独的程序。
shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls rm,
然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。
Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。
为什么要用 bash 来代替 sh 呢?Bourne shell 最大的缺点在于它处理用户的输入方面。在 Bourne shell 里键入命令会很麻烦,尤其当你键入很多相似的命令时。而 bash 准备了几种特性使命令的输入变得更容易。
bash 命令概要
这是几个最有用的bash内部命令:
alias: 设置bash别名。
bg: 使一个被挂起的进程在后台继续执行。
cd: 改变当前工作目录。
exit: 终止shell。
export: 使变量的值对当前shell的所有子进程都可见 。
fc: 用来编辑历史命令列表里的命令。
fg: 使一个被挂起的进程在前台继续执行。
help: 显示bash内部命令的帮助信息。
kill: 终止某个进程。
pwd: 显示当前工作目录。
unalias: 删除已定义的别名。
bash 还有许多命令,但这些是最常用的,想了解更详细的情况,请参考bash的手册–在提示符下键入 man bash。
bash 变量
这里是几个最有用的bash变量,包括变量名和简单描述:
EDITOR, FCEDIT: bsah fc 命令的缺省编辑器。
HISTFILE: 用于贮存历史命令的文件。
HISTSIZE: 历史命令列表的大小。
HOME: 当前用户的用户目录。
OLDPWD: 前一个工作目录。
PATH: bash寻找可执行文件的搜索路径。
PS1: 命令行的一级提示符。
PS2: 命令行的二级提示符。
PWD: 当前工作目录。
SECONDS: 当前shell开始后所流逝的秒
主要是简单说明bootstrap-table的使用,涉及到前端分页,后端分页,后端分页搜索,行内编辑,嵌套表格等。文章中提供了bootstrap-table,bootstarp-edit的下载连接,可以直接引入使用,不必考虑兼容性问题
基本使用docker machine:能在虚机上安装docker engine的工具。win10可以通过docker-for-windows安装,在docker里就有docker machine了 docker-machine create demo:在visualbox中创建一个安装好docker的非常小的虚机 docker-machine ls:列出当前创建好的机器 docker-m...
一、Struct1.1 struct含义1.2 struct用法11.3 struct用法21.4 struct用法3二、typedef三、Struct与typedef一、Struct1.1 struct含义Struct是用来存放不同变量的集合1.2 struct用法1基本形式struct 结构体名{ 各种类型的变量}变量;案例定义结构体//定义结构体名字和内容struct people{ char *name; //姓名 int .
memcpy和memmove函数的实现,需要注意memmove的覆盖问题,还有指针类型需要考虑。下面的例子中,先给出了错误的例子,而后给出了正确的例子,引以为戒!区别:两个函数都是进行n字节内存内容的拷贝,入口参数和返回参数也都一样,可是这两个函数在内部实现上是有一定区别的,这主要是因为dest内存区域和src内存区域可能有一下四种不同的情况,注意count的影响:src的
URI 路由一般来说,URI字符串有着和它唯一对应的控制器(controller)类/方法。URI的各个部分是如下模式(pattern):example.com/class/function/id/然而在一些例子中,你也许想重定向这种关系来调用一个不同的类/方法(class/function),而不是与URL一一对应(的调用).例如,你可能想使你的URL采用这种原型(prototype):exam...
前面的博客中,有一篇通过按键玩中断的文章,不过那里的程序是裸机,也就是没有加系统下设计的程序,也就和在单片机中设计的程序一样比较简单。现在我们来看看按键的驱动程序在linux系统下是如何设计的。1 混杂设备驱动模型1 混杂设备驱动描述 首先我们先来了解一下什么是混杂设备驱动模型。混杂设备其实是字符设备中的一种,主设备号是10,次设备号不同的设备称为混杂设备,在linux中,用struct misc
-猜字游戏:我们需要计算机随机生成一个数值,然后我们才能开始猜字.计算机生成随机值:rand()函数(包含在stdlib的头文件里),可以随机生成一个值。值的范围是0——RAND_MAX。(这个值很大)但是这个随机值和种子有关,种子:在每次计算机开启时就会随机生成,所以一般计算机开启后,种子就被确定了。rand()函数的生成值和种子有关,可以理解成rand()=k*种子+b;(其实他们的关系服从二项分布,我这样只是便于理解)。所以如果想生成随机值,我们需要种子不断变化。srand
单元测试报java.lang.IllegalStateException: Failed to load ApplicationContext异常解决方法
Well, you won’t get one from me.Nah, I never let a lady treat.I try to ease away and create a larger space cushion, but he steps toward me again. I don’t feel threatened by him, however. He’s a big gu...
通过apt安装java的过程在Ubuntu 这个系统下通过apt来自动的下载软件是很方便的,通过查阅一些资料我成功完成了JDK8的下载。遇到的问题以及解决仅供参考。第一次安装使用命令sudo apt-get install openjdk-8-jdk输入密码后提示:openjdk-8-jdk : 依赖: openjdk-8-jre (= 8u265-b01-0ubuntu2~20.04) 但是它将不会被安装 依赖: openjdk-8-jdk-headless (=