Linux中shell和子shell一点点理解】的更多相关文章

Linux执行脚本有两种方式,主要区别在于是否建立子shell   1.像sh,bash,./命令是用来执行shell脚本的,在bash/sh命令下,脚本文件可以无"执行权限",即没有rwx中的x权限.而对于./命令,脚本文件必须要有执行权限.       创建子shell,在当前bash环境下再新建一个子shell执行脚本中的命令子shell继承父shell的变量,但子shell不能使用父shell的变量,除非使用export声明为环境变量       子Shell从父Shell继承…
Blog:博客园 个人 目录 shell环境 什么是子shell 子shell的分类 shell环境 每个shell进程有一个自己的运行环境,不同的Shell进程有不同的Shell环境.Shell解析命令行.调用命令行的过程都在这个环境中完成. 调用shell程序时,会读取配置文件来初始化Shell环境. 读取配置文件情况分为两种: 用户登录启动的shell 非用户登录启动的shell 什么是子shell 所谓子shell,即从当前shell环境中新开了一个shell环境,这个新开的shell环…
1.变量和数值运算 Shell脚本的变量不需要声明的 对变量赋值有两种方式, 直接用“=” 或者用键盘输入值 #!/bin/bash name1="Jack" echo $name1 $name1abc当后面有其他字符 ,需要 echo ${name1}abc 键盘输入值 #!/bin/bash echo "请输入你的名字:" read name1 echo $name1 输出一些系统命令的值 echo date echo `date` 也等同于 echo $(da…
概述 主要介绍子shell历史操作记录的保存以及解析,比如python, scala等,用于(准)实时监控用户行为. 背景 一级shell的历史操作记录已由系统实现,当用户从开始登录shell(这里指父shell)到退出,期间所有的操作记录都将记录在 ~/.bash_history文件里, 但是当我从父shell新建一个子shell时(例如在当前shell执行scala),所有在scala命令行的 操作记录将不会被系统监控到, 那如果我想获取这里操作记录该怎么做, 别担心,办法总比问题多,这里的…
编写shell脚本,实现nginx日志每天自动备份到指定文件夹! 需要的命令mv , corntab -e(定时任务),shell脚本 这里先说一下corntab: https://www.cnblogs.com/longjshz/p/5779215.html  这里有一篇详细介绍corn的, 这里只简单说一下用法: corntab -e 就可以编写我们需要的定时任务,编辑之后保存即可,需要按指定格式: 比如: 0 6 * * * echo "Good morning." >&g…
http://blog.csdn.net/dreamcoding/article/details/8519689/ http://caoruntao.iteye.com/blog/1018656…
系统局部变量和全局变量  一.变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用的shell变量. 二.局部变量局部变量的作用域被限定在创建它们的shell中.local函数可以用来创建局部变量,但仅限于函数内使用.局部变量可以通过简单的赋予它一个值或一个变量名来设置,用declare内置函数来设置,或者省略也可.格式:变量名=值declare 变量名=值以下来示范一个局部变量…
一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你个人的用户ID配置,在etc/passwd文件中.如下图所示,root用户使用bash shell作为自己的默认shell程序. bash shell程序位于/bin目录下,使用长列表可以看出它是一个可执行程序: 像/bin/tcsh 或/bin/dash 或/bin/csh 这些都是shell程序…
调用有三种方法: 1.fork:不同的shell,调用后返回父shell,子shell从父shell中继承变量,但子shell的变量不会带回父shell,直接用path/to/file.sh调用: 2.exec:同一个shell,调用后不返回,用exec path/to/file.sh调用: 3.source:同一个shell,调用后返回,用source path/to/file.sh调用. 第一个脚本quote1.sh,代码如下: #!/bin/bash # A= echo "ID1=$$&q…
子shell的概念贯穿整个shell,写shell脚本时更是不可不知.所谓子shell,即从当前shell环境新开一个shell环境,这个新开的shell环境就称为子shell(subshell),而开启子shell的环境称为该子shell的父shell.子shell和父shell的关系其实就是子进程和父进程的关系,只不过子shell和父shell是关联的进程是bash进程. 子shell会从父shell中继承很多环境,如变量.命令全路径.文件描述符.当前工作目录.陷阱等等,但子shell有很多…
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 子shell的概念贯穿整个shell,写shell脚本时更是不可不知.所谓子shell,即从当前shell环境新开一个shell环境,这个新开的shell环境就称为子shell(subshell),而开启子shell的环境称为该子shell的父shell.子shell和父shell的关系其实就是子进程和父进程的关系,只不过子shell和父shell所关联的进程是bas…
http://bbs.csdn.net/topics/392292455 https://www.cnblogs.com/daniaoge/p/6161821.html http://blog.csdn.net/qq_20327293/article/details/50425737 1. 如果需要使用父Shell来执行此脚本,可以使用: 命令行:. ./test.sh 注意.与./之间有一个空格符 子Shell继续开启子Shell 与父Shell启动子Shell方式一样,继续调用下去,即子Sh…
shell基础 什么是 shell ? Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,用户输入一条命令, Shell 就解释执行一条. 这种从键盘一输入命令,就可以立即得到回应的对话方式,被称之为交互的方式. Shell存在于操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作, 系统的输出结果,输出到屏幕返回给用户,当我们输入系统用户名和密码,登录到 Linux 后的所有操作都是由Shell 解释并执行的. 什么是 shell 脚本?…
主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell. exec 在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了 source 在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行.   第一种:fork 特点:会生成子PID而且可重…
如下: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh source: source path/to/foo.sh 1.fork fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh.运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子…
Linux教程(13)- Linux中的通配符和正则表达式 2018-08-22 06:16:44 钱婷婷 阅读数 39更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42350428/article/details/81937277 Linux中的通配符 用于shell脚本 *:匹配任意多个字符 比如列出p开…
一.bash的简介 操作系统都是需要通过shell跟内核来交互的,常见的shell有GUI.KDE.sh.csh.bash.tsh.zsh等. 而linux中最常用的shell就是bash. 二.bash的特性 1.编辑快捷键 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:删除光标至命令行首的内容 Ctrl+k:删除光标至命令行尾的内容 Ctrl+l:清屏 Ctrl+c:终止取消命令 Ctrl+z:将当前命令送至后台(fg调回命令) 2.命令历史 查看命令历史:histo…
Linux——bash的简单使用 bash及其特性: 1.bash实质上是一个可执行的程序,一个用户的工作环境. 2.每一个shell下可以再打开一个shell,新打开的shell称为子shell,每一个shell之间相互独立. 3.可以使用pstree命令查看当前shell下的子shell个数 使用: 1.光标跳转: Crtl + a : 跳到命令行行首 Crtl + e : 跳到命令行行尾 Crtl + d : 删除光标所在字符 Crtl + u : 删除光标到命令行行首的字符 Crtl +…
01.学习shell编程需要的知识储备 1.vi.vim编辑器的命令,vimrc设置 2.命令基础,100多个命令 3.基础.高端的网络服务,nfs,rsync,inotify,lanmp,sersync,sshkey批量分发管理 02.shell脚本概念 1.什么是shell shell是一个命令解释器,在操作系统的最外层,负责直接与用户对话,将用户的输入解释给操作系统,并输出操作系统各种各样的处理结果,输出到屏幕返回给用户.这种对话方式可与是交互式的(键盘输入命令,可以立即得到shell的回…
1. 指定格式输出当前时间: echo `date +%Y%m%d`  # 注意使用反引号, +号后面不要有空格 反引号中的东西会被当做命令来执行, 并输出执行的结果 2. $uid用于判断当前是否是root用户登陆的, 是为0, 否则非零. 3. * 匹配任意多个字符, 注意不要带引号; ? 匹配任意一个字符 [a-Z] 匹配任意小写或大写字母; [0-9] 任意数字; [abc] abc中任意一个 [^abc] 取反的意思, 匹配任意非abc的一个字符; () 在子shell中执行括号中的命…
shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚本:方式1 :chmod 755 hello.sh ./hello.sh 方式2 :bash ./hello.sh(这种方式不需要给执行权限) 1 历史命令 history 直接回车就可以看到已经敲过得命令.-c清空缓存中和文件中的命令 -w将缓存中命令写入 家目录/.bash_history 这个命令可以帮…
关于子shell, subshell 参考:http://blog.csdn.net/sosodream/article/details/5683515 系统引导时的进程为 "原始进程" id=0, 然后时init 进程, 进程号=1, 后面所有的进程都是它派生出来的. 如果父进程终止导致留下 孤儿 (子进程) 也会被 init所收养. 子进程的创建过程: fork+exec: fork由父进程创建子进程的环境; 然后由exe加载子进程代码并执行. shell创建子进程有 四种情况:…
1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的作用. Shell在Linux系统上具有极其重要的地位 2.命令解释过程 Shell可以执行:内部命令.应用程序.shell脚本 3.Shell的种类 常见的各种版本的shell:  Bash(Bourne Again Shell) bash是大多数Linux系统的默认Shell.bash与bsh完…
shell脚本在linux中应用广泛,之前一直选用python写脚本来进行一些文件操作,但是最后发现shell脚本非常方便,所以特意来学习下皮毛,便于提高自己效率 定义变量 1 country="China" 2 Number=100 3 4 ##注意 5 ##变量名和等号之间不能有空格 6 7 ##若有调用变量,则加$即可,可perl一样 8 9 ## 输出 country, 用echo即可 10 echo $country 字符串 1 ## 单引号 2 # 单引号里的任何字符都会原…
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n"的形式输出所有参数. $@ 所有参数列表.如"$@"用「"」括起来的情况.以&quo…
shell的含义: 首先shell的英文含义是"壳": 它是相对于内核来说的,因为它是建议在核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核. Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息:shell在Linux中的存在形式: 由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面. 这样,在Linu…
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在…
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在…
linux中shell变量$#,$@,$0,$1,$2的含义解释 linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $?  最后运行的命令的结束代码(返回值)  $-  使用Set命令设定的Flag一览  $*  所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 … $n"的形式输出所有参数.  $…
运行一个shell脚本时会启动另一个命令解释器. 就好像你的命令是在命令行提示下被解释的一样, 类似于批处理文件里的一系列命令.每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.shell脚本也能启动他自已的子进程. 这些子shell(即子进程)使脚本并行地,有效率地地同时运行多个子任务.一般来说,脚本里的一个外部命令(external command)能生成(forks)出一个子…