了解什么是shell吗?

知道如何查询当前系统支持的shell版本吗?

了解如何判断某个指令是否是bash的内置指令吗?

了解Linux的变量吗,知道如何定义与删除变量吗,知道如何赋值吗,知道如何获取变量的内容吗?

知道如何为变量设置类型吗,了解宣告与阵列等概念吗?

知道如何通过键盘输入为变量赋值吗?

了解如何查询环境变量吗?

知道如何将自定义的变量转换为环境变量吗?

了解变量的有效范围吗?

知道如何设置别名以及取消别名吗?

1.shell基础

Linux一般默认的shell为bash

我们知道,管理整个计算机硬件的其实是操作系统的核心(kernel),这个核心是需要被保护的!所以我们一般使用者只能通过shell来跟核心沟通,以让核心来执行我们想要执行的工作。

Linux有多少shell呢,为什么我们要使用bash?下面来了解以下

1.硬件、核心与shell

总结一下:只要能够操作用户程序的接口都能够称为壳程序。狭隘的壳程序指的是命令行方面的软件,包括本章介绍的bash。广义的壳程序包括图形接口的软件!因为图形接口其实也能够操作各种应用程序来调用核心工作啊!

2.系统的合法shell与/etc/shells功能

1.查看当前Linux中的包含的shell

/etc/shells文件包含了当前Linux系统可以使用的shell(一般有多个版本)。

根据结果可知:当前系统包含2种shell。

虽然各家的shell功能差不多,但是语法还是有一定的区别的,这里推荐使用bash。

了解了shell的版本,接下来了解一下用户何时会获得shell呢,以及获得的shell是哪种版本的呢?

2.shell获得的时机与版本

当用户登录的时候,系统就会分配一个shell给用户,而这个登录取得的shell就记录在/etc/passwd这个文件内!这个文件内容是啥?看下图:

如上图所示:在每一行的最后一个数据,就是你登录后可以取得的默认的shell。root与自己注册的用户(zxp_user等)都是bash。

3.bash  shell的功能

1.bash优点

《1》指令偏修能力

bash能记录下用户使用过的指令,只要在命令行上按“上下键”就能够找到前/后一个输入的指令。默认的指令记忆功能可达到1000个。

那么这些指令被记录在哪里呢?在你的主目录(执行 cd ~进入你的主目录)中的.bash_history文件内。

注意:.bash_history文件记录的是前一次登录以前执行过的指令,而现在登录所执行的指令都暂存于内存中,当你登出系统后,该次操作的诸多指令才会记录到.bash_history文件中。

《2》指令与文件补全

《3》指令别名设置功能

设置别名指令:alias

上图中讲述了如何设置别名,下面了解一下如何取消别名,指令如下:

指令:unalias  lm  //取消别名lm

《4》程序化脚本

《5》万用字符

* 就是万用字符,* 代表0或多个字符。

下面介绍常用的万用字符:

2.查询指令是否为bash的内置指令

指令:type

当我需要知道使用的指令来自哪里(非bash提供的与bash提供的)时,就可以使用type指令查看。

4.shell变量功能

1.变量的可变性与方便性

举例说明变量的可变性与方便性:

2.影响bash环境操作的变量

其实就是环境变量,比如PATH、HOME、MAIL、SHELL等。

3.变量的取值与创建

注意:echo的功能不仅仅只是定义变量与获取变量的内容;echo还有很多其他的功能。

1.获取变量内容

指令:echo $variable  //使用echo获取变量内容,变量名前必须加上美元符号$。

实例如下

2.创建变量以及设置内容

指令:echo $myname  //如果这个变量不存在,那么就创建一个变量(内容为空);存在就显示变量内容

指令:myname=zxp  //将字符串“zxp”赋值给变量myname

3.删除变量

指令:unset  //删除变量或函数

4.变量键盘读取、阵列与宣告

《1》键盘读取

指令:read  //变量键盘读取

该指令可以读取来自键盘输入的变量。

read之后不加任何参数,直接加上变量名,那么下面就会出现一个空白行等待你的输入。

《2》宣告

就是声明变量类型。

declare与typeset是一样的功能,就是在“宣告变量类型”。如果使用declare后面没有接任何参数,那么bash就会将所有变量名与内容统统显示出来,就像是set一样。下面看一下declare指令语法:

因此,当你需要非字符串类型的变量是,你就得进行宣告了,即声明变量的类型。

《3》阵列

阵列就是数组。

如何创建一个数组呢?首先使用echo指令创建一个变量,使用declare指令声明变量的类型,之后为数组变量的元素赋值,最后使用declare指令查询变量类型和内容。

指令如下:

echo $myArray    //创建变量myArray
declare -a myArray //声明变量的类型为数组(即阵列)
myArray[]=zhangsan //为数组第一个元素赋值
myArray[]=lisi //为第二个元素赋值
declare -p myArray //显示变量myArray的类型与内容

5.变量内容的删除、取代与替换

注意是内容的删除、取代与替换,注意不是变量的删除。

变量除了可以直接she设置来修改原来的内容之外,还可以通过其他方式进行修改。如下所示:

1.变量内容的删除与取代

6.与文件系统及程序的显示关系

指令:ulimit

该指令的作用究竟是干嘛呢?我们想象一下:

接下来了解一下ulimit指令的用法:

已将了解了该指令的用法,那么现在实践一下:

总结一下:你如果想让使用者创建的文件不要太大时,可以使用ulimit指令限制使用者创建文件的大小,利用 ulimit -f 指令就可以设置。

6.bash语法总结

4.环境变量

查询环境变量:env

查询环境变量与自定义变量:set

5.bash shell的操作环境

1.路径与指令搜索顺序

2.bash的环境配置文件

在介绍bash的环境配置文件之前,必须先了解login shellnon-login shell

我们经常会使用non-login shell的情况:在终端使用“su 用户名”切换用户。

如果你想要使用su命令以login shell的方式切换用户那么该怎么办:使用命令“su - 用户名”。

这两种登录方式下取得bash读取的配置文件不尽相同,接下来了解login shell与non-login shell读取的配置文件:

《1》login shell读取的配置文件

会读取两个配置文件

那么下面聊一下profile这个配置文件,通过cat查看文件内容发现会设置以下变量:

3.终端机的环境设置

Linux系列(10):入门之bash基础与bash环境设置的更多相关文章

  1. BeagleBone Black Linux驱动程序开发入门(0): 开发环境

    搭建arm-linux交叉编译环境的教程有很多,这里只作简要说明.Host宿主机是Ubuntu10.04,我把它装在Windows XP的VirtualBox虚拟机中,这样相当于一台主机有两个操作系统 ...

  2. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

  3. Netsharp快速入门(之8) 基础档案(工作区2 设置商品主列表、规格细列表、商品表单、查询)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 3.5.1.1 列表设置 1.选择第一行主列表,点工具-列表方案 2.打开列表方案界面后,在列表项目填入需要用到实体Demo.Arc ...

  4. C语言基础知识【环境设置】

    直接使用绿色版的VC++6.0就ok,后期我会写一个具体的使用教程

  5. cmd 与 bash 基础命令入门

    身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>∀<) cmd 与 bash 基础命令入门       简介       CMD 基础命令          ...

  6. Linux Capabilities 入门教程:基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilit ...

  7. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  8. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  9. linux基础之bash特性

    linux基础之bash特性 1.命令历史 命令历史包含的环境变量 $HISTSIZE:命令历史记录的条数 $HISTFILE:命令历史文件~/.bash_history $HISTFILESIZE: ...

随机推荐

  1. Cocos Creator中按钮组件数组的使用

    Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...

  2. 利用Python构建时间序列模型解决实际问题的正确姿势

    要本着应用到实际工作中目的去学时间序列分析,才能深入浅出的学会,不要纠结于理论,只听我的,我有信心说明白. 本章内容 趋势分析 序列分解 序列预测 序列分解 统计学基础铺垫 划分 时间序列按照季节性划 ...

  3. 在浏览器上打开、预览Excel xlsx表格文件

    现在的HTML5,有了FileReader文件读写API, 真是让javascript的能力大幅提升. 解析zip压缩文件.解析Excel xlsx 表格文档各种文件预览,实现起来也有了可能性,以前的 ...

  4. HDFS CheckPoint && SavePoint

    HDFS CheckPoint && SavePoint 标签(空格分隔): Hadoop HDFS CheckPoint HDFS 将文件系统的元数据信息存放在 fsimage 和一 ...

  5. [CSP-S模拟测试]:B(期望DP)

    题目传送门(内部题151) 输入格式 第一行一个整数$N$. 第二行$N$个整数,第$i$个为$a_i$. 输出格式 一行一个整数,表示答案.为避免精度误差,答案对$323232323$取模. 即设答 ...

  6. QTableWidget界面有数据之后鼠标点击无响应界面无响应

    1.问题:QTableWidget上出现数据之后,界面无响应,鼠标点击没有响应,但是还是可以正常接收数据,连关闭按钮都无法关闭,必须通过杀死进程来关闭程序.有的电脑是无响应,有的电脑又可以. 2.分析 ...

  7. laravel 链式组合查询数据

    laravel 链式组合查询数据 一.总结 一句话总结: - 就是链式操作的基本操作,因为返回的都是一直可以进行链式操作的对象,所以我们接收返回的对象即可 - $result = DB::table( ...

  8. HearthBuddy 日志模块

    // Triton.Common.LogUtilities.CustomLogger // Token: 0x04000BD8 RID: 3032 private Level level_0 = Le ...

  9. You don't have permission to access / on this server. wampserver3.1.0配置外网访问的问题

    参考各种wamp教程后外网仍然不能访问服务器,很是头疼 网上好多wampserver配置都比较久远,最新版本3.1.0的很少,首先打开httpd.conf文件(这部分较简略,详细可以参考其他wamp配 ...

  10. Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...