Linux shell 程序设计5——shell中一些特殊符号的用法总结
1、{} 大括号: eg: ls my_{finger,toe}s 这条命令相当于如下两个命令的组合: ls my_fingers ; ls my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin, userB-data, userC-home, userC-bin, userC-data,这几个目录 大括号也可用于语句块的构造,命令之间可用回车隔开 2、[] 中括号:允许匹配方括号中任何一个单个字符 eg: ls /[eh][to][cm]* 相当于执行 ls /etc 和 ls /home。 常出现在流程控制中,其作用是括住判断式。注意:[、] 与表达式之间有空格。 eg: if [ "$?" != 0 ] then echo "Executes error" fi 3、command 反引号:反引号中的 ...
Linux shell 程序设计4——shell变量
1、shell变量没有类型,所有变量都被当作字符串来处理。 2、shell变量的命名和c语言相同。 3、shell变量赋值和c语言略有不同,shell赋值要求等号的两边不能出现空格,而在linux C 中,一般为了增强代码的可读性,等号的两边都加一个空格。如果shell变量的赋值为字符串,而且字符串中含有空格,则必须给该字符串加单引号或双引号。 4、shell变量不同于c语言,无需定义可直接赋值使用。例如: #!/bin/bash #This is an example to show how to use variables version="2.6.24" name="linux-headers-2.6.24" echo -e "name:$name\nversion:$version" 执行结果: name:linux-headers-2.6.24 version:2.6.24 5、shell变量的作用范围是本shell环境。例如: 我们编写如下脚本: #!/bin/bash #script name: exam ...
Linux shell 程序设计3——命令行程序
1、date:显示、设置系统的日期和时间。 $date 2011年 01月 30日 星期日 14:43:35 CST $date 012309232011 执行结果:设置主机的时间日期为:2011/01/23 09:23 $date +'%d %H %M' 以一定的格式显示时间或日期信息,常见有如下的格式: %d :显示日 $date +'%d' 30 %D :显示日期 $date +'%D' 01/30/11 %e :不足二位数的部分不用0补而是用空格补 %m :显示月份 %Y :显示公元年 $date +'%Y' 2011 %m :显示月 %M :显示分钟 %S :显示秒 %s :显示自1970年1月1日 00:00:00开始到现在的秒数 $date +'%s' 1296371799 $date -R :产生与RFC-2822兼容的时间字符串 $date -R Sun, 30 Jan 2011 15:20:17 +0800 2、cat:连接文件并显示 cat file1 显 ...
Linux shell 程序设计2——bash的内置命令
常用的内置命令忽略,来看看shell编程中其他一些重要的内置命令: 1、help:显示所有内置命令列表,或显示一个具体命令的用法。 -s: 表示列出命令的语法格式 例子: help -s help help: help [-dms] [pattern …] 2、echo:用来显示一行文字。默认自动换行。 -n:取消自动换行。 -e:让字符串中的特殊字符起作用,即使字符串在单引号中。 例子: echo hello world 或 echo ‘hello world’ 或 echo “hello world” 输出结果为:hello world $echo -e “hello \n world” hello world $ echo -e ‘hello \n world’ hello world 3、printf:显示格式字符串,类似于c中的printf函数 格式:printf “格式字符串” 参数 -v :不显示到标准输出,而是赋值给-v选项后面的变量 例子: str= "hello world" printf "%s\n" "$st ...
Linux shell 程序设计1——安装及入门
1、什么是shell? shell是linux内核的“壳”,是用户和内核的桥梁。它类似于windows下的命令提示符,将用户输入的命令解释给内核执行,并返回给用户结果。与windows命令提示符不同的是,shell还是一种脚本语言,可以按一定的流程将命令组合在一起使用,方便了用户。 2、shell的安装: 在ftp.gnu.org/gnu/bash可下载到bash的源码包: bash-4.1.tar.gz 用 tar xzvf bash-4.1.tar.gz 解压,生成bash-4.1目录 使用cd 命令进入该目录,在该目录下执行./configure命令生成配置文件,再使用make命令编译,使用make install命令安装。 在/etc/shells文件中列出的shell才是合法的shell,所以要使用安装的shell必须把它加到该文件中。加入之后就可以通过chsh命令来切换shell。 3、shell中的特殊符号: http://blogold.chinaunix.net/u2/75431/showart_1110962.html 4、shell的程序结构: 以#!开头,指名要 ...
Shell常用命令小结
1、ls:这是linux里最常用的命令,像数学里的1一样,简单但很重要。类似于dos里的dir命令,该命令的功能是列出目录下的文件或子目录。 -a:显示所有文件和目录,包括以.开头的隐藏文件 -l:以长格式的形式显示 例如: kelvin@kelvin-laptop:~$ ls examples.desktop 公共的 模板 视频 图片 文档 下载 音乐 桌面 kelvin@kelvin-laptop:~$ ls -a . .gconfd .pulse-cookie .. .gksu.lock .recently-used.xbel .bash_history .gnash .sudo_as_admin_successful .bash_logout .gnome2 .themes .bashrc .gnome2_private .thumbnails .bogofilter .gstr ...
插入法排序
何谓算法?算法就是计算机解决问题的方法和步骤。之所以强调计算机三个字,是因为计算机处理问题的方式和我们人类解决问题的方式有所不同。比如,在电视剧《宫》里看到一个智力题:把一头大象放进骄子里需要哪几个步骤?答案是:第一步,掀开轿帘;第二步,把大象放进去;第三步,放下轿帘。当然,可行性我们暂时不去考虑。然而,对于计算机来说,它没法去掀开轿帘,或者把大象放进轿子里。它只能通过计算机系统特有的指令去处理数据,以此来解决问题。 知道了什么是算法,那么如何去描述问题和算法呢? 以排序问题为例,描述一个问题可以用以下的方式: 输入:n个整数,存放于一个数组a之中。 输出:这n个数在数组a之中按从小到大的顺序存放。 给出了一个问题的输入和要求的输出,这个问题就确定了。描述一种算法,可以用伪代码或者是计算机语言。 对于排序问题,有多种算法。下面谈谈Insertion sort——插入法排序: 插入法排序的大概思想和摸扑克牌类似:当然,我们要求只有一个人摸牌,初始的数组就是放在桌上的一堆牌,而拿到手上的牌是排好序的。当我们摸起一张牌时,会按大小插入到已排好序的手牌之中。下面是基于linux系统,用C语言对 ...
Kobject浅析
面向对象的思想的确在应用软件的开发中颇具优势,它让一个个纯逻辑的函数和数据变成了一个个有生命的个体。鉴于性能的考虑,系统软件的实现(例如linux kernel)并没有采用面向对象的语言(如C++、Java)。但这丝毫没有影响到用小c找对象。 简单来说,一个对象包含数据以及对这些数据的操作。如果把银行比作一个对象的话,银行里的RMB就是数据、而银行的工作人员就相当于对象中方法(即操作数据的结构)。如果,我们想打劫银行的话,我们只需要拿着枪指着工作人员说,“亲,给我拿500万出来”。当然,如果你是一个比较牛逼的劫匪你可能要1000万,或者更多。这没有关系,因为无论你要多少钱,你都不必亲自动手去取,工作人员会帮你办好这一切。当你拎着一袋子钱溜走的时候,你可能会想说,“自从有了面向对象,腰不酸了、腿不疼了,打劫也更有效率了”。 这个例子只是想说明面向对象的一个显而易见的优点——给劫匪,哦不,给用户提供了可直接使用的接口。当然,面向对象的优点可不只这一点。 kobject是Linux设备驱动模型的核心部分,它的作用是简单点说就是嵌入到设备和驱动相关的结构体之中。既可以将这些设备和驱动组织成树形 ...
为虚拟机vCPU绑定物理CPU
为了提高缓存命中率,提高虚拟机性能,可以将vCPU绑定到指定的物理CPU去执行。具体设置步骤如下: 在宿主机操作系统启动时将用于虚拟机的CPU独立出来,使其上只运行vCPU线程,QEMU进程和少数的管理进程。设置方法即是在内核启动参数中加入: isolcpus=0,1 例如在grub.cfg下面的配置如下: menuentry 'Fedora (3.13.6-200.fc20.x86_64) 20 (Heisenbug)' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.4-200.fc20.x86_64-advanced-5bcef32f-430b-4d74-beaa-4fcfccc438f9' { ...... linux /vmlinuz-3.13.6-200.fc20.x86_64 root=UUID=5bcef32f-430b-4d74-beaa-4fcfccc438f9 ...
bash配置文件的执行顺序
Linux用户在登陆系统之后会启动shell,并按照一定顺序读取shell的配置文件。以bash为例,配置文件的读取顺序如下: /etc/profile 如果是图形界面登陆系统,读取~/.profile,bash配置完毕。 如果是命令行或者ssh登陆系统,读取~/.bash_profile,bash配置完毕。 如果是命令行或者ssh登陆系统,且/.bash_profile不存在,读取/.bash_login,bash配置完毕。 如果是命令行或者ssh登陆系统,且/.bash_profile,/.bash_login不存在,读取~/.profile,bash配置完毕。 图形界面启动后,用户可能会再启动一个shell,该shell的配置文件是~/.bashrc,用户自定义的配置一般会放到这里。






