`
eksliang
  • 浏览: 598938 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux复习笔记之bash shell(1)bash基础

阅读更多

1.系统合法的shell和/etc/shells的功能

1.1.查看当前系统有多少我们可以使用的合法的shell

linux可以使用的合法的shell可以查看/etc/shells这个文件

[root@bogon etc]# cat /etc/shells
/bin/sh   (已经被/bin/bash所替代)
/bin/bash(linux默认的shell)
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

 1.2.查看当前用户默认取得的shell,查看/etc/passwd这个文件,如下所示   

[root@bogon etc]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

 

   如上所示,在每一行的最后一个数据,就是你登录后可以取得的默认的shell.

 

2.bash shell 的内置命令:type

      为了方便shell的操作,其实bash已经”内置“了很多的命令,例如cd、umask等命令,都是内置在bash当中的。

      那我们怎么知道这个命令是来自外部命令(指的是其他非bash所提供的命令)还是内置在bash当中的呢?利用type这个命令来查看即可,使用如下:

type [-tpa] name
参数:
type:不加任何参数是,type会显示出name是外部命令还是bash内置命令
-t   :当加入-t时,type会将name以下面这些字眼显示出它的意义:
      file:表示为外部命令;
      alias:表示该命令为命令别名所设置的名称;
      builtin:表示该命令为bash的内置命令
-p   :如果后面接的name为外部命令是,才会显示完整文件名
-a   :会由PATH变量定义的路径中,将所有含name的命令都列出来,包含alias
实例一:查询ls这个命令是否为bash的内置命令
[root@bogon etc]# type ls
ls is aliased to `ls --color=auto' ==》可以看出ls是一个命令别名
[root@bogon etc]# type -t ls
alias        ==》精简方式列出
[root@bogon etc]# type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls            ==》列出这个命令所在是文件
[root@bogon etc]# type -t cd
builtin                 ==》cd 是bash的一个内置命令  

 

3.shell的变量功能

3.1.变量的显示与设置:echo,unset

变量的显示:echo

 

[root@bogon etc]# echo $JAVA_HOME
/usr/java/jdk1.7.0_55
[root@bogon etc]# echo ${JAVA_HOME}
/usr/java/jdk1.7.0_55

 3.2.设置变量或者修改变量

 

设置变量和修改变量是如此的简单,就是用等号(=)连接变量就ok了,例如:

 

[root@bogon etc]# myname=ickes
[root@bogon etc]# echo $myname
ickes

 变量的设置规则需要注意的地方

1.等号两边不能直接接空格,如下面就是错误的

[root@bogon etc]# myname= ickes
bash: ickes: command not found

 2.变量名称只能为字母和数字,但是开头不能为数字

 

 3.变量内容若有空格可以使用双引号(")或者单引号(')将变量内容结合起来,但是注意了

    双引号里面的特殊字符如$等,可以保有原本的特性,如下所示   

 

[root@bogon etc]# test="lang is $LANG"
[root@bogon etc]# echo $test
lang is en_US.UTF-8

 

   单引号内的特殊字符则为一般字符(纯文本),如下所示

 

[root@bogon etc]# test='lang is $LANG'
[root@bogon etc]# echo $test
lang is $LANG

 4、可以用转义字符(\)将特殊字符$等转变为一般字符

 

 5、在一串命令当中,如果需要其他的命令提供信息,可以使用反单引号(`命令`)或者$(命令)。反单         引号是1键左边的那个键例如要取得当前操作系统内核的版本,如下所示:

[root@bogon etc]# version=`uname -r`
[root@bogon etc]# echo $version
2.6.32-358.el6.i686
[root@bogon etc]# version1=$(uname -r)
[root@bogon etc]# echo $version1
2.6.32-358.el6.i686 

 

   在命令执行过程中反单引号(``)和$()这两个符号代表的含义如何?

   答:在一串命令当中,在`之内的命令将会被先执行,这个命令返回的结果将会作为外部的输入信息`

  

6、行业规矩全部大写的变量为环境变量,自行设置的变量为小写字母,方便判断。

3.3、取消变量:unset

[root@bogon etc]# myname=ickes
[root@bogon etc]# echo $myname
ickes
[root@bogon etc]# unset myname
[root@bogon etc]# echo $myname

[root@bogon etc]# 

3.4、子进程

什么是子进程呢?就是说在我目前这个shell的情况下,去打开另一个新的shell,新的那个shell就是子进程。在一般的状态下,父进程的自定义变量是无法再子进程内使用的。但是通过export将变量变成环境变量后,就能够在子进程下面应用了

例如:

[root@bogon ~]# name=ickes
[root@bogon ~]# bash  进入子进程
[root@bogon ~]# echo $name 在子进程中显示变量
			   当然没有东西,因为子进程无法引用父进程的变量
[root@bogon ~]# exit       离开子进程
exit
[root@bogon ~]# export name 将name这个变量设置为环境变量
[root@bogon ~]# bash        再次进入子进程
[root@bogon ~]# echo $name  显示变量
ickes			    打印出来,格叽格叽!
[root@bogon ~]# exit
exit

 

4、环境变量的功能、与查看

4.1.用evn查看环境变量,与常见环境变量的说明

env命令可以列出了当前所有的环境变量

HOME:代表当前用户的主文件夹

SHELL:他告知我们目前这个环境变量使用的shell是那个程序?linux默认使用/bin/bash

HISTSIZE:这个与”历史命令“有关,就是我们曾经执行过的命令可以被系统记录下来,而记录下来的条数,就是有这个变量来指定

MAIL:当我们使用mail这个命令在收信时系统回去读取的邮件信箱文件

PATH:执行文件的路径变量

LANG:这个重要,就是语系数据,很多信息都会用到它。

RANDOM:这是”随机数“的变量,例如如下

 

[root@bogon ~]# echo $RANDOM
20801
 系统会随机生成一个0~32767的随机数

 

4.2.用set查看所有变量(包含环境变量和自定义变量)

查出一堆的东西,我也没有具体用到过,用到时,在补充,博客就是好,可以随时改

4.3.export:自定义变量转成环境变量

谈了env与set现在知道有所谓的环境变量与自定义变量,两种直接有什么差异呢?

答:两者直接的差异在于,该变量是否会被子进程所继续使用

父进程跟子进程的解释

答:当你登录linux并取得一个bash之后,你的bash就是一个独立的线程,接下来你在这个bash下面所执行的任何命令都是由你这个bash所衍生出来的,那些被执行的命令就被称为子进程了。

如图所示



 如上图所示,我们在原本的bash下面执行另一个bash,结果操作的环境接口会跑到第二个bash中去(这就是子进程),那原本的bash就会处于暂停的情况(sleep).若想回到原本的bash中去,就只能结束当前的子进程(exit或者logout).

这个程序概念与变量有什么关系呢?

答:关系可大了,因为子进程仅会继承父进程的环境变量,子进程不会继承父进程的自定义变量,所以你原本bash中的自定义变量在进入子进程后就会消失不见,直到退出子进程回到父进程才能引用。

如果将自定义变量换成环境变量后,在子进程中就可以继续访问上面已经介绍过了,这里就不啰嗦了!

 


待续!

 

 

  • 大小: 10.2 KB
分享到:
评论

相关推荐

    Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

    Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!

    Bash shell 学习笔记

    ### Bash Shell 学习笔记知识点概览 #### 1. 引言 - **Shell**:作为用户与操作系统之间的桥梁,Shell提供了一种与系统进行交互的方式,支持用户执行命令和编写脚本来自动化任务。 - **Bash**:是Bourne-Again ...

    bash_shell笔记_1_脚本基础知识

    ### bash_shell笔记_1_脚本基础知识 #### 一、Shell基本概念与使用 Shell是Linux操作系统中的一个重要组成部分,它充当用户与系统内核之间的接口。通过Shell,用户可以执行命令、运行程序以及进行各种系统管理操作...

    Bash_Shell 小笔记

    **Bash Shell 小笔记** Bash Shell是Unix/Linux操作系统中最常用的一种命令行解释器,全称为Bourne-Again SHell,它是GNU项目的一部分,是Linux系统默认的Shell环境。Bash Shell提供了丰富的命令行交互功能,允许...

    《Linux命令行与Shell脚本编程大全》随书的一些源码、笔记_Linux_Shell-Bash-.zip

    《Linux命令行与Shell脚本编程大全》随书的一些源码、笔记_Linux_Shell-Bash-

    Bash_shell学习笔记

    根据给定的"Bash shell学习笔记"文件信息,我们可以从中提炼出多个重要的IT知识点,具体如下: ### 1. 引言 - **Shell的角色**:Shell作为一个命令解释器和编程语言,在用户与UNIX/Linux系统内核之间提供了一个桥梁...

    bash shell学习笔记

    bash快捷键、Linux有关网络配置的命令 一、创建shell脚本、重定向输入与输出、执行数学运算、退出脚本 二、shell脚本中的各种结构化命令的格式与用法(for、while、until、break等) 三、处理用户的输入:命令行参数...

    linux运维学习笔记:Shell脚本书写规范.pdf

    Linux运维学习笔记:Shell脚本书写规范 Shell脚本是Linux系统中一种极为重要的工具,它能够帮助用户执行批量的命令操作,自动化日常运维任务。编写规范、易于理解的Shell脚本不仅有助于提高工作效率,而且方便日后...

    linux shell 笔记 (未整理)

    Linux Shell笔记(未整理) Shell,作为Linux操作系统中的命令行解释器,是用户与系统交互的重要接口。它接收用户输入的指令,将其转化为系统可执行的命令,同时也提供了编写脚本的能力,使得复杂的任务自动化变得...

    bash学习笔记:Bash_是_Unix_系统和_Linux_系统的一种_Shell(命令行环境

    bash学习笔记:Bash_是_Unix_系统和_Linux_系统的一种_Shell(命令行环境),_Bourne-Again-SHell

    马哥的linux学习笔记

    最后,笔记还涉及了一些高级话题,如脚本编程(bash shell script)、系统监控(如top、htop、iotop等)、性能调优和故障排查方法。这些内容有助于提升读者解决实际问题的能力。 综上所述,《马哥的Linux学习笔记》...

    linux shell语言基础笔记 xmind

    这份“Linux Shell语言基础笔记xmind”显然是一个整理了Shell基础知识的思维导图文件,对于初学者或者需要复习Shell语法的人来说,是一个极好的学习资源。 首先,让我们来探讨一下Shell的基础知识。在Linux中,最...

    Linux bash基本语法笔记

    Linux Bash是Unix和类Unix操作系统(如Linux)中默认的Shell,它是一个命令行解释器,用户通过它来与系统交互。Bash shell提供了一系列的命令行工具和语法,使得用户能够高效地管理文件、执行程序、自动化任务。这篇...

    linux常用命令之bash入门指南.zip

    在Linux操作系统中,Bash(Bourne-Again SHell)是默认的命令行解释器,也是用户与系统交互的主要工具。这篇文档“linux常用命令之bash入门指南”旨在帮助初学者掌握Bash的基本用法和常用命令,从而更有效地在Linux...

    马哥linux手写笔记

    1. **Linux基础知识**:笔记可能从Linux的历史、发展和核心概念开始,讲解操作系统的基本原理,如进程管理、内存管理、文件系统等。 2. **命令行操作**:Linux的强大在于其命令行工具,笔记可能会详细介绍各种常用...

    linux与unix shell编程指南读书笔记.rar

    Linux与Unix Shell编程指南读书笔记提供了深入理解和熟练掌握Shell脚本编写技巧的宝贵资源。Shell是Linux和Unix操作系统中的命令解释器,它不仅用于交互式地执行命令,还能编写自动化任务的脚本,极大地提高了系统...

    linux运维学习笔记:Shell变量.pdf

    Linux Shell变量知识点: 1. 变量概念: 在Linux Shell编程中,变量是存储数据的基本单元。变量可以看作是一个容器,用于临时存储字符串、数字等数据类型,包括但不限于路径、命令结果等。变量通过赋值操作符“=”...

    入门到熟练 高效 Bash Shell 学习笔记材料书籍 BashNotesForProfessionals

    一本特别实在的 Bash 笔记教程,学习效率很高。是一份不可多得的高效 Bash 学习材料。如果你想学习 Bash Shell、Bash 脚本编程,看它绝对没错。免费分享!不用积分,更不用付费! 或者从此处直接下载: ...

    linux笔记笔记笔记笔记

    3. **Shell脚本**:Shell脚本是Linux系统中的批处理程序,使用Bash或其他Shell解释器执行。编写Shell脚本可以自动化日常任务,提高工作效率。基础元素包括变量、条件语句、循环、函数等。 4. **DDNS**:动态域名...

Global site tag (gtag.js) - Google Analytics