脚本定制

. 或者 source:
读取文本文件并执行(在当前shell解释并执行) source ./ld
总用量 8
-rw-------. 1 root root 1223 10月 2 21:14 anaconda-ks.cfg
-rw-r--r-- 1 root root 18 10月 4 19:21 ld /bin/bash file
新建子shell并执行 1. #!/bin/bash
2. chmod +x file
3. ./file
新建子shell并直接执行

重定向

输出重定向

1:标准输出流:
ls -l 1>ld1:将输出写到ld文件中
ls -l 1>>ld1:将输出追加到ld文件中 2:错误输出流:
ls -l /god 2>ld2:没有god文件,将错误输出写到ld文件中 输出到同一文件中
ls -l 1>ld 2>&1
简写:ls -l >& ld ls -l &> ld 输入重定向 cat 0<file cat 0<<头部
>a
>b
>头部
遇到头部就结束 cat 0<<<字符串

exec命令

exec [命令 [参数 ...]] [重定向 ...]

exec与source的区别:
shell的内建命令exec并不启动新的shell,而是用要被执行的命令替换当前的shell进程,
并且将旧进程的环境清理掉,而且exec命令执行后,其它命令不再执行,自动退出shell。
为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,
当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。 -exec 后面跟的是linux的 command 命令,exec命令以分号(;)结束,该分号前面要放反斜杠(\)转义 。
find / -name ld -exec cat {} \;
{} 花括号代表前面的命令执行的结果。 exec <file
将file中的内容作为exec的标准输入 exec >file
将file中的内容作为标准写出 exec 3<file
将file读入到fd3中 sort <&3
fd3中读入的内容被分类 exec 4>file
将写入fd4中的内容写入file中 ls >&4
ls将不会有显示,直接写入fd4中了,即上面的file中 exec 5<&4
创建fd4的拷贝fd5 exec 3<&-
关闭fd3

子进程

管道(|)会触发子进程。

fork()是linux的系统调用,用来创建子进程(child process):
子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。 环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程:
不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 写时复制:
父进程和子进程共享页面(无法修改)而不是复制页面。
父进程和子进程何时试图写一个共享的页面时,内核就把这个页复制到一个新的页面中并标记为可写。
原来的页面仍然是写保护的。
当其它进程试图写入时,内核检查写进程是否是这个页面的唯一属主。如果是,它把这个页面标记为对这个进程是可写的。 fork()函数用于创建子进程,调用完成以后父进程的虚拟存储空间被拷贝给了子进程的虚拟存储空间,因此也就实现了共享文件等操作:
虚拟的存储空间映射到物理存储空间的过程中采用了写时拷贝技术,
该技术主要是将多进程中同样的对象(数据)在物理存储其中只有一个物理存储空间,
而当其中的某一个进程试图对该区域进行写操作时,
内核就会在物理存储器中开辟一个新的物理页面,将需要写的区域内容复制到新的物理页面中,然后对新的物理页面进行写操作。
这时就是实现了对不同进程的操作而不会产生影响其他的进程,同时也节省了很多的物理存储器。

shell 脚本定制与重定向的更多相关文章

  1. 学习笔记之Shell脚本的输出重定向

    shell http://baike.baidu.com/link?url=qN3THt5ZJhQtwRJJkakWdz5-vZp4V9H3OmNP97XNhaoL-dqU-6rrFrYfHXmYv6 ...

  2. shell脚本基础及重定向!

    重定向: 补充:/dev/null(名叫黑洞)就是把输出的文件混合重定向到黑洞从而不显示在屏幕 yum -y install http &> /dev/null 重定向输入: 重定向输出 ...

  3. SHELL脚本--管道和重定向基础

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.8.1 匿名管道"|" 管道符号意如其 ...

  4. shell脚本书写总结

    1.shell脚本,如果重定向到文件中,则在脚本中不可以sed -i,如果用了sed -i ,则自打用了sed -i之后的打印都不能再重定向到输出文件了. 2.shell脚本中,如果将命令写在字符串里 ...

  5. 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记

    第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...

  6. Linux Shell脚本入门--(linux空设备文件和重定向)>/dev/null 2>&1

    linux空设备文件和重定向 输出/输入重导向 >      >>   <   <<   :>   &>   2&>   2< ...

  7. linux shell 脚本实现tcp/upd协议通讯(重定向应用)

    linux shell 脚本实现tcp/upd协议通讯(重定向应用) http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html

  8. 使用Shell脚本编译运行C++源码 输入输出重定向

    在写C++控制台程序的时,如果使用Xcode或者Visual Studio之类的IDE,需要创建许多工程,会造成很多不便.有时,采用Vim或者Sublime text等编辑器编写简单的控制台程序能节省 ...

  9. Shell脚本之九 输入输出重定向和文件包含

    输出重定向:是指不使用系统提供的标准输入端口来输出,而是重新指定其他来进行输出.例如在终端输入的字符串本来是要输出到终端屏幕上的,但可以将输出指定为其他文件,将输入字符串输出到该文件中,而不再是屏幕上 ...

随机推荐

  1. Sed的查,删,增,改

    sed的查,删,增,改 1.sed的查找 2.sed的删除 3.sed的上下左右增加文件内容 4.sed的改

  2. windows 之间远程大文件传输问题解决

    今天我在远程登录另一台windows的时候,需要传输一个大约3GB的文件,但是每每经过了一会儿,就会提示我未知错误问题. 我在网上找了一下,本问题的解决方法如下. 1.打开远程登录的对话窗口 2.选择 ...

  3. 【Javascript DOM读书笔记】chapter8 充实文档内容

    本章目的 作者举出了第一个实例,为一篇 web 页面动态创建缩略语(abbreviation)的列表.大家知道,我们可以使用 <abbr>...</abbr> 来指示一个缩略语 ...

  4. 前端学习(十二)js数据类型(笔记)

    选项卡:        for循环 for(初始值,条件,自增){}    for(var i=0; i<9;i++){} 几个按钮对应相同个内容!!! -------------------- ...

  5. Qt 【遍历文件夹文件,为listwidgetItem设置图标】

    效果图如上,通过qt本身的api去获取文件夹中文件的信息并且将其显示到listwidget上.只遍历当前文件夹的文件, 若文件夹中的子文件夹含有符合筛选器的文件那么并不会一同筛选出来 参考百度:htt ...

  6. 一键对centos7.6安装python3环境已经pip3

    1 yum -y install "Development tools" 2 yum -y install zlib-devel bzip2-devel openssl-devel ...

  7. Mysql学习笔记(001)-常见命令

    常见命令 SHOW DATABASES; /* use test; create database myemployees; use myemployees; create table employe ...

  8. getElementsBy 系列方法相比querySelector系列的区别

    最近在做的项目中,使用querySelectorAll获取了同class名的元素后,绑定onmouseover事件和onmouseout后,多次在几个元素上移入移出操作时,控制台出现了报错的问题,最后 ...

  9. leetcood学习笔记-14*-最长公共前缀

    笔记: python if not   判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...

  10. obj.offsetHeight与obj.style.height $(obj).height()与$(obj).css('height')

    相同:都可以获取obj的高度区别:(1)obj.offsetHeight可以获取外部.内嵌和内联中定义的高,而obj.style.height只能获取内联中定义的高:(2)obj.offsetHeig ...