当前位置: 首页 > 编程日记 > 正文

Linux学习笔记8——bash基本概念

一个操作系统的组成中,shell是与用户最接近的部分
shell:外壳,也是一种程序
GUI:Gnome,KDE,Xface
CLI:sh,csh,ksh,bash,tcsh,zsh
Linux中大多使用bash

  • 既然shell也是一种程序,那么shell在什么时候启动?
    当用户登陆时,shell就会被打开。

  • 如果有两个用户同时使用shell,那么需要几个可执行的shell程序?
    程序只有一个,但进程可以有多个。因此进程可以看作程序的副本。
    Linux允许一个用户登录多次,开启多个shell,每个进程互不相干。
    进程:在每个进程看来,当前主机上只存在内核和当前进程。
    进程是程序的副本,进程是程序执行实例

  • 我们可以在shell中打开shell
    shell是一个外部命令,但shell里面自身带有其它很多命令

用户的工作环境:
bash:

shell,子shell:用pstree可以看到
bash——bash
子shell和父shell之间没有任何关系,谁也不会影响谁

bash的特性:
1、支持命令历史
2、支持管道,重定向
3、支持命令别名
4、支持命令行编辑
5、支持命令行展开
6、支持文件名通配
7、支持使用变量
8、支持编程

命令行编辑:

  • 光标跳转:
    Ctrl+a:跳到命令行首
    Ctrl+e:跳到命令行尾
    Ctrl+d:删除
    Ctrl+u: 删除光标至命令行首的内容
    Ctrl+k: 删除光标至命令行尾的内容
    Ctrl+l: 清屏

  • 查看命令历史:history(显示在此执行过的所有命令)
    用户使用过的命令历史在运行时都在内存缓冲区里面!
    -c:清空整个命令历史
    -d n: 删除指定位置的命令(删除第n个命令)
    -d a b:删除第a个命令后的b个命令
    -w:保存命令历史至历史文件中 ls -a (显示隐藏文件)有个.bash_history

  • 环境变量
    PATH:命令查找路径
    HISTSIZE: 命令历史缓冲区大小,可以保存过去多少条命令。

  • 命令历史的使用技巧:
    !n:执行命令历史中的第n条命令;
    !-n:执行命令历史中的倒数第n条命令;
    !!: 执行上一条命令;
    !string:执行命令历史中最近一个以指定字符串开头的命令
    !$:引用前一个命令的最后一个参数;
    Esc, .
    Alt+.

  • 命令补全:【tab】或两下【tab】
  • 路径补全:【tab】或两下【tab】

  • 命令别名:比如Windows清屏为cls,Linux清屏为clear
    alias CMDALIAS=COMMAND [options] 如alias cls=clear
    同时也可以将cd /。。。一些经常用到的文件目录取一个别名!提高效率!!!
    单打一个命令 alias可以显示系统上的所有别名
    在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
    如果想永久有效,可以将这个命令写在bash的配置文件中。
    unalias可以撤销命令别名。
    有些命令的别名与命令本身同名,只不过在后面加了些选项,此时可以用"\COM"使用命令本身。

  • 命令替换:把命令中某个子命令替换为其执行结果的过程
    $(COMMAND) 或者反引号 COMMAND
    比如说:echo the current directory is $(pwd)
    就会打印出一行:the current directory is /root (/root就是所在的目录)
    比如:touch ./file-$(date +%F-%H-%M-%S).txt
    会在当前目录下创建 file-2018-4-15-12-34.txt (以当前时间为固定格式的一个文件)

    *bash支持的引号:
    ``: 命令替换
    " ": 弱引用,可以实现变量替换
    ' ': 强引用,不完成变量替换
  • 文件名通配:globbing
    星号 * : 可以匹配任意长度的任意字符
    ?:匹配任意单个个字符
    [ ] :匹配指定范围内的任意单个字符

    比如在当前目录下有这些文件:a abc a123 ab123 x12 xyz xyz123
    ls a*: a abc  a123 ab123
    ls a*3 : a123 ab123
    ls *b* : abc ab123
    。。。。。。(mkdir一个空目录 在空目录里面touch几个文件自己练一下)

[abc],[a-m],[a-z],[A-Z],[a-zA-Z],[0-9],[0-9a-zA-Z]
[^] : 匹配指定范围之外的任意单个字符
[^0-9]:非数字

  • 空格也可以作为文件名touch 'a b'就可以创建一个有空白字符的文件
    [[:space:]]:空白字符
    [[:punct:]]:标点符号
    [[:lower:]]:小写字母
    [[:digit:]] : 数字
    [[:alnum:]] : 数字和大小写字母
    同时字符集也可以去反比如:[^[alpha]]表非大小写字母集
  • man 7 glob有说明

转载于:https://blog.51cto.com/13691207/2103469

相关文章:

UIScrollView offset in UINavigationController

转:UIScrollView offset in UINavigationController 通过设置viewCtronller的 self.automaticallyAdjustsScrollViewInsets NO; 禁用苹果scrollview提供的自适应功能。 延伸阅读:https://developer.apple.com/library/ios/documentation/UserExperience…

AI 通过眼睛的反光度,来识别是否 Deepfake 换脸

编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) Deepfake 是一种 AI换脸工具,现被滥用,从虚假宣传活动到插入一些违法内容,并且篡改后的图像是难以被检测到的。 一种新的 AI 工具提供了一项令人惊讶的简单方法来发现…

[异常笔记] spring boot 启动-2018040201

异常 1、编码引发异常 00:59:49.311 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : [] 00:59:49.318 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for re…

maven基础概念学习1

2019独角兽企业重金招聘Python工程师标准>>> 1.maven是什么? 百度百科: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 2.maven的作用? 构建、文档…

php session 二位数组

最普通的用法:一个变量名 $_SESSION[user] 0;echo $_SESSION[user]; 使用数组: $_SESSION[user][a] 1;$_SESSION[user][b] 2;echo $_SESSION[user][a];echo $_SESSION[user][b]; 这样的好处是可以分组可以 $_SESSION[admin][a] 11;$_SESSION[admin][…

「屋漏偏逢连夜雨」,Log4j 漏洞还没忙完,新的又来了

整理 | 郑丽媛、禾木木 出品 | CSDN 这几天,Apache Log4j 2 绝对是众多 Java 程序员提到的高频词之一:由于 Apache Log4j 2 引发的严重安全漏洞,令一大批安全人员深夜修 Bug、打补丁。此次漏洞更是因为其触发简单、攻击难度低、影响人群广泛等…

利用gevent实现异步执行任务

import gevent def task(pid):gevent.sleep(2)print ("task %s done"%pid)def asynchronous():threads [gevent.spawn(task,i) for i in xrange(5)]gevent.joinall(threads)if __name__ __main__:print ("asynchronous")asynchronous()执行结果&#xff…

清理SQL多余登录信息

服务器列表、登陆帐户、密码等信息都记录在 %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin (2008)%AppData%\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat(2005)直接删除后重新启动 SSMS …

AI 真的能够理解人类语言吗?

作者 | Melanie Mitchell 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 2011年,IBM 的人工智能系统沃森参加综艺节目《危险边缘》,并获得了冠军,当时他们宣称:“沃森能够理解自然语言的所有歧义和复杂…

【贪心】Google Code Jam Round 1A 2018 Waffle Choppers

题意:给你一个矩阵,有些点是黑的,让你横切h刀,纵切v刀,问你是否能让切出的所有子矩阵的黑点数量相等。 设黑点总数为sum,sum必须能整除(h1),进而sum/(h1)必须能整除(v1)。 先考虑横行&#xff0…

友盟数据—值得手游创业者关注的玩家数据

友盟数据—值得手游创业者关注的玩家数据 你知道“辣妈”是什么游戏的忠诚玩家吗?你知道“大龄玩家”都喜好怎样的游戏?你知道哪类玩家最“多金”?2015年,不仅宅男、宅女们爱玩游戏,辣妈和奶爸们也成了手游行业的主力军…

这个 AI 模型火上 GitHub 热榜第一,在线修复照片

编译 | 禾木木出品 | AI科技大本营(ID:rgznai100)AI 正在对照片编辑产生重大的影响,但结果是还存在很大分歧。支持者说,人工智能释放了新的艺术历年,减少了创作者花在单调工作上的时间。然而,批评者认为这些…

【我的Android进阶之旅】解决SDK升级到27.0.3遇到的GLIBC_2.14 not found、no acceptable C compiler found in $PATH等问题...

一、问题一:Failed to find Build Tools revision 27.0.3 1.1、问题描述 最近公司的Android项目都要进行SDK升级,目前在本地编译的时候将SDK升级到了27.0.3,本地运行正常,然后在jenkins服务器上跑的时候就会出现异常。异常如下所示…

解析大型.NET ERP系统 设计异常处理模块

异常处理模块是大型系统必备的一个组件,精心设计的异常处理模块可提高系统的健壮性。下面从我理解的角度,谈谈异常处理的方方面面。我的设计仅仅限定于Windows Forms,供参考。 1 定义异常类型 .NET 框架定义很多异常类型,ERP系统中…

内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地,越来越多框架、中间件等开源项目相继涌现,帮助开发者和企业有效解决业务问题。2022年1月8日,CSDN携手字节跳动基础架构,将在北京举办第四场云原生线下Meetup。在这里,您可以与众多开源技术…

用Thymeleaf在前台下拉列表取值

转自:https://blog.csdn.net/u013600907/article/details/76165748转载于:https://www.cnblogs.com/sharpest/p/8875698.html

PHP使用JSON

JSON 基础 简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看…

(原创)Python文件与文件系统系列(5)——stat模块

stat模块中定义了许多的常量和函数,可以帮助解释 os.stat()、os.fstat()、os.lstat()等函数返回的 st_result 类型的对象。 通常使用 os.path.is*() 这类函数来测试一个文件的类型,这些方法对同一个文件进行多次测试时,stat()系统调用都是不可…

Azure Neural TTS能让AI语音自然逼真到什么程度?

摘要:微软Azure Neural TTS让AI语音像真人一样富有感情,自然逼真。 Neural TTS(神经网络文本转语音)是微软Azure认知服务的强大语音合成功能,自推出以来,已被广泛应用于从语音助手、新闻阅读到有声读物创作…

ReentrantLock与synchronized

1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如…

EXT按钮事件

在EXT中,当我们要为按钮点击添加处理function的时候,可以看到一般人的实现分成2类:1.使用onClick: function xx()2.使用handler: function xx()完成后,我们会发现,无论用哪一种实现,再点击按钮时都能触发xx…

浅谈HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而H…

达摩院年终预测重磅出炉:AI for Science 高居榜首,2022 十大科技趋势!

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)作为“一所探索科技未知的研究院”,阿里巴巴达摩院成立至今已经四年了。这四年来,达摩院秉持着“探索科技位置,以人类愿景为驱动力,开展基础科学和颠覆式…

TensorFlow——入门基础

TensorFlow原理: TensorFlow使用Graph来描述计算任务,图中的节点被称之为op.一个op可以接受0或多个tensor作为输入,也可产生0或多个tensor作为输出.任何一个Graph要想运行,都必须借助上下文Session.通过Session启动Graph,并将Graph中的op分发到CPU或GPU上,借助Sessi…

EXT iconCls说明

今天学习ext 看examples中的事例,其中有一个地方是这样写的: new ButtonPanel( Icon Only, [{ iconCls: add16 },{ iconCls: add24, scale: medium },{ …

25个好用到爆的一行 Python 代码,建议收藏

作者 | 欣一来源 | Pyhton爱好集中营在学习Python的过程当中,有很多复杂的任务其实只需要一行代码就可以解决,那么今天小编我就来给大家介绍实用的一行Python代码,希望对大家能够有所帮助。1.两个字典的合并x {a: 1, b: 2} y {c: 3, d: 4}将…

【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动

SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务、数据请求服务、4-20mA服务、短信服务、LED服务以及OPC服务等。保障数…

usermod命令,用户密码管理和mkpasswd命令

2019独角兽企业重金招聘Python工程师标准>>> usermod 设置扩展组 概念:更改用户属性的一个命令。 用法:usermod [选项] 后面跟你需要操作的内容 [用户名] 选项:-c, --comment 注释 GECOS 字段的新值-d, --home HO…

extjs关于jsonreader

在JavaScript中,JSON是一种非常重要的数据格式,key:value的形式比XML那种复杂的标签结构更容易理解,代码量也更小,很多人倾向于使用它作为EXT的数据交换格式。JsonReader支持分页,与JSON数据对应格式如下:t…

求逆元 - HNU 13412 Cookie Counter

Cookie Counter Problems Link: http://acm.hnu.cn/online/?actionproblem&typeshow&id13412&courseid0 Mean: 将N分为D份,每份不超过X,有多少种分法? analyse: 首先我们想到的是迭代,但是数据太大,…