
shell
文章平均质量分 57
hmoon729
这个作者很懒,什么都没留下…
展开
-
shell注意点(二)
stty命令: stty -g以stty可读方式打印当前设置 stty -a以易读方式打印当前设置 stty -echo取消回显,这点在设置用户输入密码不回显时可用。不过在脚本中运行stty时,最好先存好之前的stty -g,修改一系列的设置后方便恢复成默认stty设置。abc=abc=""unset abc区别变量会在脚本真正执行前替换成其原创 2014-05-20 10:02:47 · 646 阅读 · 0 评论 -
《Unix/linux编程实践教程》第二章部分习题相关知识整理
open和fopen的区别(2.3)1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操原创 2015-04-27 19:00:08 · 788 阅读 · 0 评论 -
信号浅析(二)
之前简要地学了一些信号的基础知识,我们知道,没有前后冲突等bug的话,信号的作用非常棒,通过信号处理函数,可以实现许多异步操作。然而当有多个信号或同步或异步进入的时候,如果默认操作,则会有很多问题出现。要解决多个信号如何处理,必须要了解信号的处理机制。有哪些信号处理机制? 假设内核正在做某件事,这时信号A过来了,内核立刻将这件事挂起并赶忙去处理信号A;然而这时,当内核正在处理信号A的时候,信号B又原创 2015-04-27 18:48:07 · 414 阅读 · 0 评论 -
时钟编程: alarm和setitimer
alarm 我们知道,sleep(n)函数可将进程挂起n秒,而其在实现上主要依靠alarm系统调用,sleep的工作原理有3部分组成: 1、为SIGALRM设置一个处理函数; —->SIGALRM为alarm计时n秒后发出的信号 2、调用alarm(n); —->设定一个计时器 3、调用pause. —->进程一直阻塞在pa原创 2015-04-27 18:50:05 · 2214 阅读 · 0 评论 -
Unix文件系统(二)
之前简要介绍了一下文件系统,要真正弄清楚一些内核系统还是要回到内核,以ext2文件系统为例。 一块磁盘可以格式化出多个分区,一个分区对应一种文件系统。ext2将整块分区划分为两大部分:一个默认的启动块和若干块组,启动块(Boot Block)用于存储分区的描述信息和启动信息,大小固定为1K。而启动块之后的块组才是ext2真正开始的地方。 块组(Block Group)由六部分组成:1、超级块(S原创 2015-04-27 18:58:07 · 761 阅读 · 0 评论 -
目录及文件属性
通过ls命令熟悉目录与文件的基础属性很有帮助,先通过如何获取ls的信息,再到理解ls所表示的信息的含义,深入浅出。现在自己的学习心态也不一样,复习之前知识之后,理解深入了很多。ls的整体实现逻辑很简单,主要就是通过DIR, dirent, stat三个结构体,层层解析,获取到由简入深的文件及目录信息。但三个结构体的关系与含义却比较复杂,下面详解:结构体DIR,是最开始的步骤,由目录路径获取原创 2015-04-27 18:22:46 · 480 阅读 · 0 评论 -
《Unix/linux编程实践教程》第六章部分习题
这一章的习题比较简单,主要都是让读者熟悉终端控制与信号的属性,如非规范属性,不回显等。 这里主要通过最后一题(6.12)来熟悉一下本章知识。 程序需要读取终端行数与列数,将A字母打印row*col次,若窗口大小改变,则打印B并以此顺延。当按下‘Q’,则清屏并退出。获取终端的行列需要winsize结构体: struct winsize { unsigned short ws_r原创 2015-04-27 18:52:09 · 976 阅读 · 0 评论 -
设备控制小结
Unix系统中一切都是文件的概念深入人心,设备同普通文件及目录一样,同样是一种文件,但与普通文件存在许多区别。 首先体现在文件属性上:如图所示。除了权限最开头的字符变为”c”,在原本应该显示SIZE的地方显示了16,1这样的数字。 这里就引出了设备文件的一个重要的特点,普通的文件是一个存储数据的容器,size记录文件容纳的数据量;而设备文件是链接,而非容器。对于设备文件来说,i-节点存储的是原创 2015-04-27 18:52:19 · 437 阅读 · 0 评论 -
《Unix/linux编程实践教程》第四章部分习题
4.4 Inode Bitmap和Block Bitmap4.7 目录链接数指有多少个目录指向此目录。如/a/b/,假设b为空,对于b目录来说有”.”和”..”两个目录,其中”.”指向自身,同时在a目录中有指向b目录的链接。因此,一个目录的目录链接数至少为2.4.9 mount时如果挂载点不存在则无法mount,如果挂载点存在且包含文件和子目录,则原有文件将不可见。4.11 柱面组与之前所说的块组(原创 2015-04-27 18:52:56 · 883 阅读 · 0 评论 -
《Unix/linux编程实践教程》第三章部分习题
3.10(控制ls分栏输出) ls的分栏输出如图所示,有两个特点:1、每一栏(列)的宽度有这一栏最长的文件名决定2、显示的栏数受终端显示器的宽度影响。所以,如何确定输出行与列的总数成为关键。 显然,有两种方法供选择:先确定行数再确定列数,与先确定列数再确定行数。 我们已知的可确定的条件只有2个:1、终端的宽度2、所有的文件名。文件名分栏显示是二维的,而终端宽度是一维的,x轴方向的。所以如果原创 2015-04-27 18:59:10 · 1218 阅读 · 0 评论 -
tar命令
-c: 建立压缩档案 -x:解压 -t:查看内容 压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的原创 2015-04-27 19:02:53 · 648 阅读 · 0 评论 -
Unix文件系统(一)
此文着重介绍系统是如何表示目录的以及pwd命令的编写。我们都知道Unix将磁盘分为三部分:超级块(superblock),节点表(inode table)以及数据区。超级块中记录文件系统本身的结构信息。节点表中记录文件的属性,文件系统中每个文件在表中都至少有一个i-节点,表中每个节点的大小相同。数据区就是文件数据真实的存储位置。简要介绍磁盘知识后,我们来谈谈目录。在Unix中,目录是包含了文件名字列原创 2015-04-27 18:55:50 · 982 阅读 · 0 评论 -
文件和目录操作的系统函数(整理)
我们平时常用cp,mv,chmod,mkdir等命令,却不太清楚他们的系统调用。在《Linux C一站式学习中》的ext2文件系统中详细介绍了文件和目录操作的系统函数,理解了这些系统函数的实现原理之后,对于文件及目录操作命令也会有更深的理解,整理如下:stat(2)函数读取文件的inode,然后把inode中的各种文件属性填入struct stat结构体传出给调用者。stat(1)命令是基于stat原创 2015-04-27 18:53:44 · 1011 阅读 · 0 评论 -
终端控制与信号浅析
终端控制程序在终端显示时会与程序本身有一些出入,比如在运行下面这段代码时运行时直接按回车,则两次的输出结果都是10,即\n的ASCII码。在printf输出\n时,终端显示\r\n,在getchar读入的时候ENTER,又被处理成\n。又比如我们都知道程序的I/O有缓冲区,能够暂存程序输入输出的信息等特点。#include "stdio.h"int main(int argc, char const原创 2015-04-27 18:51:40 · 894 阅读 · 0 评论 -
shell注意点(一)
#整理最近shell的想法,以免想过之后又忘记。。.#首先还是讲讲引号。单引号强引用,双引号弱引用很好理解。不过这两个引号的使用还是很值得细究的。#双引号仅能够解释`(反单号),$(美元符号)和\(转义符号),应用也与这三者有关。#双引号与反单号使用较频繁,由于反单号用于提示shell需要处理一个命令,结果超过一个字符串,通常都需要用双引号阔住以避免歧义,比如应用在判断式中。原创 2014-05-14 22:00:33 · 637 阅读 · 0 评论 -
C语言FILE结构体以及缓冲区深入探讨(unix/linux编程实现2.4)
在C语言中,用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。定义文件指针的一般形式为: FILE *fp;这里的FILE,实际上是在stdio.h中定义的一个结构体,该结构体中含有文件名、文件状态和文件当前位置等信息。我们通过fopen返回一个文件指针(指向FILE结构体的指针)来进行文件操作。原创 2015-04-27 18:21:46 · 1925 阅读 · 1 评论 -
I/O重定向和管道
学习I/O重定向之前需要知道什么是文件描述符,文件描述符是一个数组的索引号。每个进程都有其打开的一系列文件,这些打开的文件被保持在一个数组中,文件描述符就是某文件在此数组中的索引。一个文件描述符对应于一个文件。unix中大多数程序从stdin中读入数据,输出到stdout。stdin和stdout分别对应于文件描述符0和1。要实现I/O重定向,主要的任务就是让程序原本从stdin中读入和输出到原创 2015-04-27 18:27:21 · 564 阅读 · 0 评论 -
编写命令解释器sh(一)
之前由于终于了结了一段心事,荒废了半个月没写博客,浑浑噩噩。果然代码是有这种魔性,长久不写手痒痒。之后还是得坚持更新,也把这几天粗粗学的python整理一下补上,下面言归正传。shell我们都很熟悉,我们输入一些命令(如ls、cat、touch等),得到结果。ls等命令实际上都对应于磁盘上的某个程序。shell运行这些程序,得到运行结果。Unix将运行中的程序定义为进程,它对于于计算机内实际的实体:原创 2015-04-27 18:36:37 · 660 阅读 · 0 评论 -
编写命令解释器(二)
我们在之前的sh的基础上再添加进一些shell的功能。 先让sh可以一次性接收一整串的命令(程序名及参数),而不是一次一个的按照提示输入。这就需要一个函数将输入作为一个大数组储存起来,再打散存入arglist中。char **splitline(char *line){ //line即为输入所存入的大数组 char *cp = line; int a原创 2015-04-27 18:45:28 · 642 阅读 · 0 评论 -
带简易验证码网站自动注册及登录(勿转)
目标网站:www.k780.com 语言:python 任务:自动注册并登录网站爬取用户信息1、分析post包 http://www.k780.com/?q=account&type=register。由于此网站注册时不需要验证邮箱,所以只需要伪造post包骗过服务器即可完成注册。 抓取浏览器注册时的post内容,header部分用于模拟浏览器请求,body部分用于填写表单。header:原创 2015-04-27 19:06:01 · 10166 阅读 · 1 评论 -
more指令的实现及文件操作函数
Unix中的more指令是用作分页显示大量信息,并能够进一步接收用户的指令来进行后续显示的命令。使用其可以直接more也可以用管道重定向。可接收的指令有q(退出),空格(新一页)及回车(新一行)。同时还有阅读百分比等信息。以下用c将其简单实现:在其中使用了文件读取函数fgetc,fputc等,此类函数通过文件指针直接对文件的内容进行读写,感觉挺有用的,简单介绍一下。char原创 2015-04-27 16:44:10 · 1033 阅读 · 0 评论 -
open和fopen的区别(unix/linux编程实现2.3)
1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行原创 2015-04-27 18:18:12 · 622 阅读 · 1 评论 -
文件及目录特殊属性
檔案的特殊屬性 SUID/SGID/SBITSet UID (SUID);設置使文件在執行階段具有文件所有者的權限。SUID 典型的的例子為 /etc/passwd。帳號與密碼存放於 /etc/passwd 與 /etc/shadow。而 /etc/shadow 的權限為 『-r--------』,且擁有者為 root。一般身份使用者要更新自己的密碼,執行 /usr/bin原创 2015-04-27 18:22:12 · 412 阅读 · 0 评论 -
mac os 10.9及unix/linux 64位编译curses函数失败
错误提示Undefined symbols for architecture x86_64: "_cbreak", referenced from: _main in bounceld-Pf86fR.o "_endwin", referenced from: _main in bounceld-Pf86fR.o "_initscr", referenced fro原创 2015-04-27 18:50:21 · 1343 阅读 · 2 评论 -
ppc64 安装jdk
无gcc,有python2.6,linux6.4,ppc64架构配置yumwget 121.40.123.189/yum-metadata-parser-1.1.0-2.fc7.ppc64.rpmibm ppc64 jdk https://iwm.dhe.ibm.com/sdfdl/1v2/regs2/linuxjavasdks/java/java7v1/7.1.2.0/linuxppc64/Xa.原创 2015-04-27 19:02:11 · 2492 阅读 · 0 评论