shell 十三问】的更多相关文章

Shell十三问 转载于网络,稍加整理. (一) 为何叫做Shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管,事实上, 我们每天所谈的linux , 严格来说只是一个操作系统, 我们称之为"核心(kernel)".然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,而是透过 kernel 的"外壳"程序,也就是所谓的…
1) 为何叫做 shell ?在介绍 shell 是甚幺东西之前,不妨让我们重新检视使用者与计算机系统的关系:图(FIXME)我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管,事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(kernel)".然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,而是透过 kernel…
转自shell十三问:  http://bbs.chinaunix.net/thread-218853-1-1.html …… 假設我們定義了一個變量為:file=/dir1/dir2/dir3/my.file.txt我們可以用 ${ } 分別替換獲得不同的值:${file#*/}:拿掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最後一條 / 及其左邊的字串:my.file.txt${file#*.}:拿掉第一個 .  及其左邊的字…
  原文链接:http://blog.csdn.net/freexploit/article/details/626660 我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学习到不少技巧之外,也常看到不少朋友的问题.然而,在众多问题中,我发现许多瓶颈都源于 shell 的基础而已.每次要解说,却总有千言万语不知从何起之感... 这次,我不是来回答,而是准备了关于 shell 基础的十三个问题要问大家﹗希望 shell 学习者们能够透过寻找答案的过程,好好的将 shell…
继续开始shell十三问中11-13问和后续补充的笔记,加油! (14)输入重定向与输出重定向 “>”是标准输出重定向,可以把输出结果送入文件 “<”是标准输入重定向,可以重新指定文件的内容作为输入 “2>”是标准错误重定向,可以把命名执行出现的错误提示送入文件 如果你想把标准输出和标准错误输出到一个文件中,可以使用如下的方法 $ ls my.file no.such.file 1>file.both 2>&1 (错误到输出) $ ls my.file no.such…
<shell十三问>是网中人前辈首发在CU论坛上对SHELL的一些整理,非常值得一读 注:笔记的标号非问题标号,而是知识点的标号.本篇笔记记录的是1-10问的知识点 (1)IFS:Shell预设使用的栏位分隔符号,可以由一个几多个“空白键(White Space).表格键(Tab).回车键(Enter)”组成 (2)echo命令支持的常用选项和反斜线控制字符 -e:启用反斜线控制字符的转换(参考下表) -E:关闭反斜线控制字符的转换(预设如此) -n:取消行末之换行符号(与-e选项下的\c字符…
shell 十三问: 1) 为何叫做 shell ?  2) shell prompt(PS1) 与 Carriage Return(CR) 的关系?  3) 别人 echo.你也 echo ,是问 echo 知多少?  4) " "(双引号) 与 ' '(单引号)差在哪?   5) var=value?export 前后差在哪? 6) exec 跟 source 差在哪?  7) ( ) 与 { } 差在哪? 8) $(( )) 与 $( ) 还有${ } 差在哪?  9) $@ 与…
经典的Shell十三问 摘选整理自:http://bbs.chinaunix.net/thread-218853-1-1.htmlhttps://github.com/wzb56/13_questions_of_shell/blob/master/README.md 1. 为何叫做shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为“操作系统(OS,Opertating System)的软件来管控.linux严格来说只是一个操作系统(OS),我们…
[^ ] 跟 [! ] 差在哪?-- Shell十三问<第十四问> 这道题目说穿了, 就是要探讨 Wildcard(通配符)与 Regular Expression(正则表达式)的差别的.这也是许多初学 shell 的朋友很容易混乱的地方. 首先, 让我们回到十三问之第 2 问, 再一次将我们提到的 command line format 温习一次: [code]command_name options arguments[/code] 同时, 也再来理解一下我在第 5 问所提到的变量替换的特…
for what? while 与 until 差在哪?-- Shell十三问<第十三问> 最后要介绍的是 shell script 设计中常见的"循环"(loop). 所谓的 loop 就是 script 中的一段在一定条件下反复执行的代码. bash shell 中常用的 loop 有如下三种: for while until for loop 是从一个清单列表中读进变量值,并"依次"的循环执行 do 到 done 之间的命令行. 例: for va…
你要 if 还是 case 呢?-- Shell十三问<第十二问> 还记得我们在第 10 章所介绍的 return value 吗? 是的,接下来介绍的内容与之有关,若你的记忆也被假期的欢乐时光所抵消掉的话,那,建议您还是先回去温习温习再回来... 若你记得 return value ,我想你也应该记得了 && 与 || 是甚么意思吧? 用这两个符号再配搭 command group 的话,我们可让 shell script 变得更加聪明哦. 比方说: comd1 &&…
> 与 < 差在哪?-- Shell十三问<第十一问> 谈到 I/O redirection ,不妨先让我们认识一下 File Descriptor (FD) .程序的运算,在大部份情况下都是进行数据(data)的处理,这些数据从哪读进?又,送出到哪里呢?这就是 file descriptor (FD) 的功用了. 在 shell 程序中,最常使用的 FD 大概有三个,分别为: 0: Standard Input (STDIN) 1: Standard Output (STDOUT…
&& 与 || 差在哪?-- Shell十三问<第十问> 好不容易,进入两位数的章节了... 一路走来,很辛苦吧?也很快乐吧? 在解答本章题目之前,先让我们了解一个概念:return value !我们在 shell 下跑的每一个 command 或 function ,在结束的时候都会传回父进程一个值,称为 return value . 在 shell command line 中可用 $? 这个变量得到最"新"的一个 return value ,也就是刚…
$@ 与 $* 差在哪?-- Shell十三问<第九问> 要说 $@ 与 $* 之前,需得先从 shell script 的 positional parameter 谈起.我们都已经知道变量(variable)是如何定义及替换的,这个不用再多讲了. 但是,我们还需要知道有些变量是 shell 内定的,且其名称是我们不能随意修改的,其中就有 positional parameter 在内. 在 shell script 中,我们可用 $0, $1, $2, $3 ... 这样的变量分别提取命令…
$(( )) 与 \(( ) 还有\){ } 差在哪?-- Shell十三问<第八问> 我们上一章介绍了 ( ) 与 { } 的不同,这次让我们扩展一下,看看更多的变化:$( ) 与 \({ }又是啥玩意儿呢? 在 bash shell 中,\)( ) 与 (反引号) 都是用来做命令替换用(command substitution)的. 所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行: 完成引号里的命令行,然后将其结果替换出来,再重组命令行. 例如: [code]$ ech…
( ) 与 { } 差在哪?-- Shell十三问<第七问> 先说一下,为何要用 ( ) 或 { } 好了. 许多时候,我们在 shell 操作上,需要在一定条件下一次执行多个命令,也就是说,要么不执行,要么就全执行,而不是每次依序的判断是否要执行下一个命令.或是,需要从一些命令执行优先次顺中得到豁免,如算术的 2*(3+4) 那样...这时候,我们就可引入"命令群组"(command group)的概念:将多个命令集中处理. 在 shell command line 中,…
exec 跟 source 差在哪?-- Shell十三问<第六问> 这次先让我们从 CU Shell 版的一个实例贴子来谈起吧: 例中的提问是: cd /etc/aa/bb/cc 可以执行 但是把这条命令写入 shell 时 shell 不执行!这是什么原因呀! 我当时如何回答暂时别去深究,先让我们了解一下进程(process)的观念好了.首先,我们所执行的任何程序,都是由父进程(parent process)所产生出来的一个子进程(child process),子进程在结束后,将返回到父进…
var=value?export前后差在哪?-- Shell十三问<第五问> 这次让我们暂时丢开 command line ,先来了解一下 bash 变量(variable)吧.所谓的 变量,就是就是利用一个特定的"名称"(name)来存取一段可以变化的"值"(value). 在 bash 中,你可以用 "=" 来设定或重新定义变量的内容: name=value 在设定变量的时侯,得遵守如下 规则: 等号左右两边不能使用区隔符号(IF…
" "( 双引号) 与 ' '( 单引号) 差在哪?-- Shell十三问<第四问> 经过前面两章的学习,应该很清楚当你在 shell prompt 后面敲打键盘.直到按下Enter 的时候,你输入的文字就是 command line 了,然后 shell 才会以进程的方式执行你所交给它的命令.但是,你又可知道: 你在 command line 输入的每一个文字,对 shell来说,是有类别之分的呢? 简单而言(我不敢说这是精确的定义),command line 的每一个…
别人 echo .你也 echo ,是问 echo 知多少?-- Shell十三问<第三问> 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明. 温习---标准的 command line 包含三个部件: command_name option argument echo 是一个非常简单.直接的 Linux 命令:将 argument 送出至标准输出(STDOUT),通常就是在监视器(monitor)上输出. 为了更好理解,不如先让我们先跑一下 ec…
Shell prompt(PS1) 与 Carriage Return(CR) 的关系?-- Shell十三问<第二问> 当你成功登录进一个文字界面之后,大部份情形下,你会在荧幕上看到一个不断闪烁的方块或底线(视不同版本而别),我们称之为游标(coursor).游标的作用就是告诉你接下来你从键盘输入的按键所插入的位置,且每输如一键游标便向右边移动一个格子,若连续输入太多的话,则自动接在下一行输入. 假如你刚完成登录还没输入任何按键之前,你所看到的游标所在位置的同一行的左边部份,我们称之为提示符…
Shell十三问更新总结版 简介 ChinaUnix 论坛 Shell 版名为網中人的前辈于 2004 年发布的精华贴,最近回炉这块内容,觉得很多东西讲的实在透彻,非常感谢前辈網中人,同时我个人也对这个系列做了一些总结和备注,写于下面章节,虽然这篇文件写于2004年,但是Shell这个东西变化很少,这个系列希望能够帮助到大家提供给大家,有心学习的同学不要读一遍练习一遍就算完了,第一遍和第二遍和第十遍读这个系列,感受绝对不一样,疏漏处请见谅. 網中人原贴:http://bbs.chinaunix.…
(注:关于变量概念,我们留到下两章才跟大家说明.) 好了,更多的关于 command line 的格式,以及 echo 命令的选项,就请您自行多加练习.运用了... -------------------------------------------------------------------------------------------------------------4) " "(双引号) 与 ' '(单引号)差在哪? 还是回到我们的 command line 来吧...…
原文地址:http://bbs.chinaunix.net/thread-218853-1-1.html 一.为什么称作shell? http://bbs.chinaunix.net/viewthr ... p;page=2#pid1454336 二.shell prompt(PS1)与Carriage Return(CR)的关系? http://bbs.chinaunix.net/viewthr ... p;page=2#pid1467910 三.别人echo.你也echo.是问echo知多少…
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix上,还有个wingger大神整理的Shell基础二十篇.这份文档涉及的内容比较多,我没记错的话应该有很多命令的用法,而且配备实际使用的例子,对初学者帮助甚大. <Shell脚本专家指南>(文中提到的书和资料下面都有下载的链接)也是一本不可多得的好书.书中都是作者实际工作中的经验总结,你可以从中学到…
Shell的字符串处理   1 得到长度   %x="abcd"  #方法一      %expr length $x      4  # 方法二      %echo ${#x}      4  # 方法三      %expr "$x" : ".*"      4  # expr 的帮助  # STRING : REGEXP   anchored pattern match of REGEXP in STRING 2 查找子串     %ex…
参考了shell十三问 以及http://hi.baidu.com/leejun_2005/blog/item/ebfee11a4177ddc1ac6e751d.html 提炼下记忆方式: {% capture text %} ${变量名#(##)分隔符}剔除首个(或最末个即最右端)分隔符左侧字串 ${变量名%(%%)分隔符}剔除首个(或最末个即最左端)分隔符右侧字串 ${变量名/被替换字串/替换字串} 替换首个匹配 ${变量名//被替换字串/替换字串} 替换所有匹配 {% endcapture…
(本文将持续更新)从2015年9月25日开始正式学习linux类的东西. 书籍入门:UNIX.Shell编程24学时教程(中文版).Linux与UNIX Shell编程指南.shell十三问.LINUX SHELL脚本攻略.Shell脚本专家指南. 对于变量替换来说,就有点让人总是搞混掉.当符合下面标准则进行替换,否则结果如同${parameter}主要有8个: 变量名称 语法 解释 例子 :? ${parameter:?var} parameter为空或者未定义,则输出var到stderr,p…
字符串: 简称“串”.有限字符的序列.数据元素为字符的线性表,是一种数据的逻辑结构.在计算机中可有不同的存储结构.在串上可进行求子串.插入字符.删除字符.置换字符等运算. 字符: 计算机程序设计及操作时使用的符号.包括字母.数字.空格符.提示符及各种专用字符等. 一般字符的运算包括: 第一.找出字符或者字符串的类型,是数字.字母还是其他特定字符,是可打印字符,还是不可打印字符(一些控制字符). 第二.找出组成字符串的字符个数和字符串的存储结构(比如数组). 第三.对串的常规操作:求子串.插入字符…
本文分成入门篇和基础篇.基础篇包括变量.字符串处理.数学运算三部分.基础篇包括流控制.函数和函数库三部分.主要是基于例子进行讲解,其中有 4 个复杂一点的脚本,看懂了也就入门了. 我们先来聊一聊 shell 和 shell script 的概念.计算机的运行离不开硬件,我们通过操作系统(OS,Operating System)操作硬件,而我们所说的 linux 严格来说是操作系统(OS)的核心部分--内核(Kernel).我们无法直接操作 kernel,需要借助于 kernel 外的一层壳 sh…