小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

2014年9月30日

Linux Shell编程(30)——别名

摘要: Bash别名本质上是一个简称, 缩写, 这可避免键入过长的命令序列. 例如,如果我们添加 alias lm="ls -l | more" 这一行到文件~/.bashrc file里, 然后每次在命令行键入lm 将会自动被替换成ls -l | more. 这使用户在命令行不必键冗长的命令序列也避免了... 阅读全文

posted @ 2014-09-30 08:22 牛栏山1 阅读(120) 评论(0) 推荐(0)

Linux Shell编程(29)——函数

摘要: 和"真正的"编程语言一样, Bash也有函数,虽然在某些实现方面稍有些限制. 一个函数是一个子程序,用于实现一串操作的代码块,它是完成特定任务的"黑盒子". 当有重复代码, 当一个任务只需要很少的修改就被重复几次执行时, 这时你应考虑使用函数.function function_name { co... 阅读全文

posted @ 2014-09-30 08:20 牛栏山1 阅读(76) 评论(0) 推荐(0)

Linux Shell编程(28)——进程替换

摘要: 进程替换与命令替换很相似. 命令替换把一个命令的结果赋给一个变量,例如 dir_contents=`ls -al`或xref=$. 进程替换则是把一个进程的输出回馈给另一个进程 (换句话说,它把一个命令的结果发送给另一个命令).命令替换的一般形式由圆括号括起的命令>(command)文件把在圆括号... 阅读全文

posted @ 2014-09-30 08:18 牛栏山1 阅读(111) 评论(0) 推荐(0)

Linux Shell编程(27)——子shell

摘要: 运行一个shell脚本时会启动另一个命令解释器. 就好像你的命令是在命令行提示下被解释的一样, 类似于批处理文件里的一系列命令.每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.sh... 阅读全文

posted @ 2014-09-30 08:17 牛栏山1 阅读(137) 评论(0) 推荐(0)

Linux Shell编程(25)——I/O 重定向

摘要: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其他打开的文件都可以被重定向. 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块(参见 Example... 阅读全文

posted @ 2014-09-30 08:13 牛栏山1 阅读(105) 评论(0) 推荐(0)

Linux Shell编程(26)——代码块重定向

摘要: 像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 。所有的这些依靠代码块结尾的 < 操作符来做到.例子:while 循环的重定向#!/bin/bash# redir2.shif [ -z ... 阅读全文

posted @ 2014-09-30 08:13 牛栏山1 阅读(105) 评论(0) 推荐(0)

Linux Shell编程(24)——命令替换

摘要: 命令替换 将会重新分配一个命令[1]甚至是多个命令的输出; 它会将命令的输出如实地添加到另一个上下文中. [2]使用命令替换的典型形式是使用后置引用(`...`). 后置引用形式的命令(就是被反引号括起来)将会产生命令行文本. 1 script_name=`basename $0` 2 e... 阅读全文

posted @ 2014-09-30 08:10 牛栏山1 阅读(154) 评论(0) 推荐(0)

Linux Shell编程(23)——文本处理命令

摘要: 处理文本和文本文件的命令sort文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用 -m 选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的 info 页. 见 Example 10-9, Example... 阅读全文

posted @ 2014-09-30 08:08 牛栏山1 阅读(104) 评论(0) 推荐(0)

Linux Shell编程(22)——时间/日期 命令

摘要: date直接调用, date 就会打印日期和时间到 stdout 上. 这个命令有趣的地方在于它的格式化和分析选项上.time输出统计出来的命令执行的时间.touch这是一个用来更新文件被存取或修改的时间的工具,这个时间可以是当前系统的时间,也可以是指定的时间, 这个命令也用来产生一个新文件.Ex... 阅读全文

posted @ 2014-09-30 08:04 牛栏山1 阅读(191) 评论(0) 推荐(0)

Linux Shell编程(21)——复杂命令

摘要: 更高级的用户命令find-exec COMMAND \;在每一个find 匹配到的文件执行 COMMAND 命令. 命令序列以 ; 结束( ";" 是 转义符 以保证 shell 传递到find命令中的字符不会被解释为其他的特殊字符).xargs这是给命令传递参数的一个过滤器, 也是组合多个命令的... 阅读全文

posted @ 2014-09-30 08:02 牛栏山1 阅读(135) 评论(0) 推荐(0)

Linux Shell编程(20)——基本命令

摘要: 新手必须要掌握的初级命令ls基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, 另一个很有用的选项是 -S ,将会按照文件尺寸列出所有文件, -t, 将会按照修改时间来列出文件,-i 选项会显示文... 阅读全文

posted @ 2014-09-30 08:01 牛栏山1 阅读(147) 评论(0) 推荐(0)

Linux Shell编程(19)——测试与分支

摘要: case和select结构在技术上说不是循环,因为它们并不对可执行的代码块进行迭代.但是和循环相似的是,它们也依靠在代码块的顶部或底部的条件判断来决定程序的分支.在代码块中控制程序分支case (in) / esac在shell中的case同C/C++中的switch结构是相同的.它允许通过判断来... 阅读全文

posted @ 2014-09-30 07:57 牛栏山1 阅读(94) 评论(0) 推荐(0)

Linux Shell编程(17)——嵌套循环

摘要: 嵌套循环就是在一个循环中还有一个循环,内部循环在外部循环体中.在外部循环的每次执行过程中都会触发内部循环,直到内部循环执行结束.外部循环执行了多少次,内部循环就完成多少次.当然,不论是外部循环或内部循环的break语句都会打断处理过程.例子:嵌套循环#!/bin/bash# nested-loop... 阅读全文

posted @ 2014-09-30 07:55 牛栏山1 阅读(110) 评论(0) 推荐(0)

Linux Shell编程(18)—— 循环控制

摘要: 影响循环行为的命令break, continuebreak和continue这两个循环控制命令[1]与其它语言的类似命令的行为是相同的. break命令将会跳出循环,continue命令将会跳过本次循环下边的语句,直接进入下次循环..例子:break和continue命令在循环中的效果#!/bin... 阅读全文

posted @ 2014-09-30 07:55 牛栏山1 阅读(103) 评论(0) 推荐(0)

Linux Shell编程(16)——循环

摘要: 循环就是重复一些命令的代码块,如果条件不满足就退出循环.for loopsfor arg in [list]这是一个基本的循环结构.它与C的for结构有很大不同.for arg in [list]do command(s)... done 在循环的每次执行中,arg将顺序的存取list中列出... 阅读全文

posted @ 2014-09-30 07:52 牛栏山1 阅读(123) 评论(0) 推荐(0)

Linux Shell编程(15)——操作字符串

摘要: Bash已经支持了令人惊讶的字符串操作的数量。不幸地,这些工具缺乏统一的标准。一些是参数替换的子集,其它受到UNIX的expr命令的功能的影响。这导致不一致的命令语法和冗余的功能,但这些并没有引起混乱。字符串长度${#string}expr length $stringexpr "$string"... 阅读全文

posted @ 2014-09-30 07:51 牛栏山1 阅读(130) 评论(0) 推荐(0)

Linux Shell编程(14)——内部变量

摘要: 内建变量影响Bash脚本行为的变量。$BASHBash二进制程序文件的路径 bash$ echo $BASH /bin/bash$BASH_ENV该环境变量保存一个Bash启动文件路径,当启动一个脚本程序时会去读该环境变量指定的文件。$BASH_SUBSHELL一个指示子shell(subshel... 阅读全文

posted @ 2014-09-30 07:49 牛栏山1 阅读(190) 评论(0) 推荐(0)

Linux Shell编程(12)——操作符

摘要: 赋值变量赋值初始化或改变一个变量的值=通用的变量赋值操作符,可以用于数值和字符串的赋值 1 var=27 2 category=minerals # "="字符后面不能加空白字符. 不要把"="赋值操作符和=测试操作符搞混了。 # = 用于测试操作符 if [ "$string1"... 阅读全文

posted @ 2014-09-30 07:35 牛栏山1 阅读(145) 评论(0) 推荐(0)

Linux Shell编程(13)——数字常量

摘要: 除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数。一个前缀为0的数字是八进制数。一个前缀为0x的数字是十六进制数。一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限制)例子:数字常量的表示法#!/bin/bash# numbers.sh: 不同基数的数字表示法.... 阅读全文

posted @ 2014-09-30 07:34 牛栏山1 阅读(215) 评论(0) 推荐(0)

Linux Shell编程(11)——退出和退出状态

摘要: exit命令一般用于结束一个脚本,就像C语言的exit一样。它也能返回一个值给父进程。每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释成一个对应的错误值。除了一些例外的情况,一个行为端庄的UNIX命令,程序或是软... 阅读全文

posted @ 2014-09-30 07:30 牛栏山1 阅读(593) 评论(0) 推荐(0)

Linux Shell编程(10)——引用变量

摘要: 当要引用一个变量的值时,一般推荐使用双引号。使用双引号除了变量名前缀($)、后引符(`)和转义符(\)外,会使shell不再解释引号中其它所有的特殊字符。用双引号时$仍被当成特殊字符,允许引用一个被双引号引起的变量("$variable"), 那也是说$variable会被它的值所代替。用双引号还... 阅读全文

posted @ 2014-09-30 07:28 牛栏山1 阅读(210) 评论(0) 推荐(0)

Linux Shell编程(9)——特殊变量类型

摘要: 局部变量局部变量只在代码块或一个函数里有效 (参考函数里的局部变量)环境变量这种变量会影响Shell的行为和用户接口 在大多数情况下,每个进程都会有一个"环境表", 它由一组由进程使用的环境变量组成。这样看来,Shell看起来和其他的进程一样。每次一个Shell启动时,它都会创建新的合适的环境变量... 阅读全文

posted @ 2014-09-30 07:26 牛栏山1 阅读(92) 评论(0) 推荐(0)

Linux Shell编程(8)——变量详解

摘要: 不同与许多其他的编程语言,Bash不以"类型"来区分变量。本质上来说,Bash变量是字符串,但是根据环境的不同,Bash允许变量有整数计算和比较。其中的决定因素是变量的值是不是只含有数字.变量没有类型既是幸运的也是悲惨的。它使脚本编程时有更多的弹性(但也可能把你弄晕)并能很容易地写出代码。但是,这... 阅读全文

posted @ 2014-09-30 07:24 牛栏山1 阅读(139) 评论(0) 推荐(0)

Linux Shell编程(6)——变量替换

摘要: 变量的名字是它的值保存的地方。引用它的值称为变量替换。$让我们仔细地区别变量和变量的值。如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据。如果只有变量名出现(即指没有前缀$),那就可能是在1)声明一个变量或是在给这个变量赋值。2)声明废... 阅读全文

posted @ 2014-09-30 07:21 牛栏山1 阅读(139) 评论(0) 推荐(0)

Linux Shell编程(7)——变量赋值

摘要: =赋值操作符(它的左右两边不能有空白符) 不要搞混了=和-eq,-eq是比赋值操作更高级的测试。注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符。例子:简单的变量赋值#!/bin/bash# 裸变量echo# 什么时候变量是“裸”的?比如说,变量名前面没有$?#当变量被赋值... 阅读全文

posted @ 2014-09-30 07:21 牛栏山1 阅读(283) 评论(0) 推荐(0)

Linux Shell编程(5)——shell特殊字符(下)

摘要: {}代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数。然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问。 bash$ { local a; a=123; } bash: local: can only be used in afunction ... 阅读全文

posted @ 2014-09-30 07:18 牛栏山1 阅读(145) 评论(0) 推荐(0)

Linux Shell编程(4)——shell特殊字符(上)

摘要: 在脚本或其他别的地方出现的特殊字符#注释. 以一个#开头的行 (#!是例外) 是注释行.# 这是一行注释.注释也可以出现在一个命令语句的后面。echo "A comment will follow." # 这里可以添加注释.# ^ 注意在#前面... 阅读全文

posted @ 2014-09-30 07:18 牛栏山1 阅读(191) 评论(0) 推荐(0)

Linux Shell编程(3)——运行shell脚本

摘要: 写完一个脚本,你能够运行它用命令:sh scriptname, [5] 另外也也可以用bash scriptname. 来执行(不推荐使用:sh <scriptname, 因为这样会禁止脚本从标准输入里读数据)。更为方便的是你可以使用chmod命令来使脚本自身变为可执行的.你可以:chmod 55... 阅读全文

posted @ 2014-09-30 07:13 牛栏山1 阅读(128) 评论(0) 推荐(0)

Linux Shell编程(2)——第一个shell程序

摘要: 在最简单的情况下,脚本程序不过是存储在一个文件里的系统命令列表。这至少让你执行它 时不必重新按顺序键入相同功能的命令序列。一个清空/var/log目录下的日志文件的脚本# Cleanup# 必须以root用户运行. cd /var/logcat /dev/null > messagescat /d... 阅读全文

posted @ 2014-09-30 07:10 牛栏山1 阅读(114) 评论(0) 推荐(0)

Linux Shell编程(1)——shell编程简介

摘要: Shell是一个命令解释器。它不仅是操作系统内核与用户之间的绝缘层,同时也是一种功能相当强大的编程语言。一个Shell程序,通常称为脚本,它是一个由系统调用,命令工具,软件包和已编译的二进制包"粘合" 起来的极易使用的工具。事实上,整个UNIX系统命令,软件包和工具都能由一个shell脚本调用。如... 阅读全文

posted @ 2014-09-30 07:07 牛栏山1 阅读(178) 评论(0) 推荐(0)

Qt入门(20)——Qt模块简介

摘要: 当你安装Qt时,这些模块会被构建到库中。在Qt企业版、Qt评估版和Qt自由版中,包含所有的模块。对于Qt专业版,提供基本的模块——工具、核心、窗口部件、对话框、图标视图和工作区模块。画布模块画布模块提供了一个名为QCanvas的高度优化的二维绘图区。 画布可以有任意数量的QCanvasItems。... 阅读全文

posted @ 2014-09-30 06:59 牛栏山1 阅读(172) 评论(0) 推荐(0)

Qt入门(19)——自定义窗口部件

摘要: 我们介绍可以画自己的第一个自定义窗口部件。我们也加入了一个有用的键盘接口。我们添加了一个槽:setRange()。 void setRange( int minVal, int maxVal );现在我们添加了设置LCDRange范围的可能性。直到现在,它就可以被设置为0~99。在构... 阅读全文

posted @ 2014-09-30 06:54 牛栏山1 阅读(143) 评论(0) 推荐(0)

Qt入门(18)——使用信号和槽连接控件

摘要: 下面显示了如何使用信号和槽来创建自定义窗口部件,和如何使用更加复杂的方式把它们连接起来。首先,源文件被我们分成几部分并放在放在t7目录下。t7/lcdrange.h包含LCDRange类定义。t7/lcdrange.cpp包含LCDRange类实现。t7/main.cpp包含MyWidget和ma... 阅读全文

posted @ 2014-09-30 06:51 牛栏山1 阅读(148) 评论(0) 推荐(0)

Qt入门(17)——组装复杂的控件

摘要: 下面是如何把两个窗口部件封装成一个新的组件。首先,我们使用一个自定义的窗口部件作为一个子窗口部件。#include #include #include #include #include #include #include class LCDRange : public QVBox{public:... 阅读全文

posted @ 2014-09-30 06:47 牛栏山1 阅读(117) 评论(0) 推荐(0)

Qt入门(16)——组装窗口部件

摘要: 这个例子显示了创建几个窗口部件并用信号和槽把它们连接起来,和如何处理重新定义大小事件。 #include #include #include #include #include #include 这里显示的是三个新的被包含的头文件。qslider.h和... 阅读全文

posted @ 2014-09-30 06:45 牛栏山1 阅读(102) 评论(0) 推荐(0)

Qt入门(15)——使用窗口部件

摘要: 下面是如何创建一个你自己的窗口部件,描述如何控制一个窗口部件的最小大小和最大大小,并且介绍了窗口部件的名称。 class MyWidget : public QWidget { public: MyWidget( QWidget *parent=0, const char... 阅读全文

posted @ 2014-09-30 06:43 牛栏山1 阅读(168) 评论(0) 推荐(0)

Qt入门(14)——父窗口部件和子窗口部件

摘要: 这个例子演示了如何创建一个父窗口部件和子窗口部件。我们下面使用一个单一的父窗口部件和一个独立的子窗口部件编写界面。 #include 我们添加了一个头文件qvbox.h用来获得我们要使用的布局类。 QVBox box;这里我们简单地创建了一个垂直的盒子容器。QVBox把它的子窗... 阅读全文

posted @ 2014-09-30 06:40 牛栏山1 阅读(325) 评论(0) 推荐(0)

Qt入门(13)——Qt的调用退出

摘要: 如果我们创建了一个窗口,接下来使这个应用程序在用户让它退出的时候退出。 #include 因为这个程序使用了QFont,所以它需要包含qfont.h。Qt的字体提取和X中提供的可怕的字体提取大为不同,字体的载入和使用都已经被高度优化了。 QPushButton quit( "Q... 阅读全文

posted @ 2014-09-30 06:38 牛栏山1 阅读(234) 评论(0) 推荐(0)

Qt入门(12)——Qt国际化

摘要: 应用的国际化就是使应用成为能被非本国的人使用的过程。有的情况下,国际化很简单,例如,使一个US应用可被Australian或者British用户理解,工作可能少于几个拼写修正。但是使一个US应用可以被Japanese用户使用,或者一个Korean应用可被German用户使用,就会需要软件不仅工作于... 阅读全文

posted @ 2014-09-30 06:34 牛栏山1 阅读(215) 评论(0) 推荐(0)

Qt入门(11)——Qt插件

摘要: Qt提供了一个简单地插件接口,可以轻松地生成作为独立组件的定制数据库驱动、图象格式、文本编解码器(text codec)、风格(style)和部件。警告:Qt 3.0.5对插件的一些方面做了改变,具体涉及到装载、路径操作和库版本。这些变化的结果是,Qt 3.0.4及以前版本编译的插件都不能用于Qt... 阅读全文

posted @ 2014-09-30 06:30 牛栏山1 阅读(245) 评论(0) 推荐(0)

Qt入门(10)——调试技术

摘要: 命令行参数当你运行Qt程序时,你可以指定几个命令行参数来帮助你调试。-nograb 应用程序不再捕获鼠标或者键盘。当程序在Linux下运行在gdb调试器中时这个选项是默认的。-dograb 忽略任何隐含的或明显得-nograb。即使-nograb出现在命令行的最后,-dograb也会超过-nogr... 阅读全文

posted @ 2014-09-30 06:28 牛栏山1 阅读(301) 评论(0) 推荐(0)

Qt入门(9)——Qt中的线程支持

摘要: Qt对线程提供了支持,基本形式有独立于平台的线程类、线程安全方式的事件传递和一个全局Qt库互斥量允许你可以从不同的线程调用Qt方法。警告:所有的GUI类(比如,QWidget和它的子类),操作系统核心类(比如,QProcess)和网络类都不是线程安全的。QRegExp使用一个静态缓存并且也不是线程... 阅读全文

posted @ 2014-09-30 06:28 牛栏山1 阅读(130) 评论(0) 推荐(0)

Qt入门(8)——事件和事件过滤器

摘要: 在Qt里,一个事件是继承自QEvent的对象。事件通过调用QObject::event(),被发送到继承自 QObject 的对象。事件发送就是一个事件已经产生,由 QEvent正好去表达,且QObject 需要去回应。多数事件针对 QWidget和他的子类的,此外还有些不和图形相关的重要事件,比... 阅读全文

posted @ 2014-09-30 06:25 牛栏山1 阅读(223) 评论(0) 推荐(0)

Qt入门(7)——窗口几何结构

摘要: QWidget提供了几个处理窗口几何结构的函数。这些函数中的几个操作纯客户区域(例如不包含窗口框架的窗口),其它一些包括窗口框架。它们之间的区别在某种意义上被完成覆盖明显地最普通的方法。包括窗口的框架:x(), y(), frameGeometry(), pos() and move()不包括窗口... 阅读全文

posted @ 2014-09-30 06:21 牛栏山1 阅读(182) 评论(0) 推荐(0)

导航