
初学Linux
文章平均质量分 85
主要讲解一些Linux的基本概念、shell、命令的用法和一些基本的简单Linux C语言编程,比较适合Linux初学者学习和交流。
ljianhui
热爱编程,热爱学习IT技术
展开
-
Linux shell 之 提取文件名和目录名的一些方法
很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。 下面介绍两种常用的方法来进行相关的操作。 一、使用${} 1、${var##*/} 该命令的作用是去掉变原创 2015-01-26 00:03:00 · 215664 阅读 · 17 评论 -
CentOS升级Git
Git现在的版本(我在写下本文时)已经是1.7.12了,然而CentOS的Git的版本却是1.7.1,而且用yum安装的Git的最高版本也只是去1.7.1,当然,如果你在工作使用中没有遇到问题,使用这个版本当然没有什么问题,但是如果你在工作中遇到只有高版本的Git才能支持的任务时,如何升级我们的Git呢?事实上,GitHub和许多Git服务依赖的Git版本不低于1.7.2。下面就以CentOS-6原创 2014-04-17 00:06:33 · 33886 阅读 · 6 评论 -
初窥Linux 之 我最常用的20条命令
玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。因为不想在使用是总是东查西找,所以在此总原创 2013-09-05 00:27:11 · 758655 阅读 · 104 评论 -
Linux多线程——使用互斥量同步线程
前文再续,书接上一回,在上一篇文章:Linux多线程——使用信号量同步线程中,我们留下了一个如何使用互斥量来进行线程同步的问题,本文将会给出互斥量的详细解说,并用一个互斥量解决上一篇文章中,要使用两个信号量才能解决的只有子线程结束了对输入的处理和统计后,主线程才能继续执行的问题。一、什么是互斥量互斥量是另一种用于多线程中的同步访问方法,它允许程序锁住某个对象,使得每次只能有原创 2013-09-02 00:10:29 · 35728 阅读 · 18 评论 -
Linux多线程——使用信号量同步线程
信号量、同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已。但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆。相似地,线程同步是控制线程执行和访问临界区域的方法。一、什么是信号量线程的信号量与进程间通信中使用的信号量的概念是一样,它是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作。如果一原创 2013-09-01 00:09:38 · 64420 阅读 · 10 评论 -
Linux进程间通信——使用数据报套接字
前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用。一、简单回顾——什么是数据报套接字。socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算原创 2013-08-31 00:14:24 · 11671 阅读 · 1 评论 -
Linux进程间通信——使用流套接字
前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程。通常我们使用socket进行网络编程,这里将会简单地讲述如何使用socket进行简单的网络编程。一、什么是socketsocket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作原创 2013-08-29 00:18:48 · 33159 阅读 · 13 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏原创 2013-08-25 00:09:57 · 150341 阅读 · 26 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一原创 2013-08-24 10:26:39 · 242501 阅读 · 55 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供原创 2013-08-24 00:12:54 · 189661 阅读 · 43 评论 -
Linux进程间通信——使用命名管道
在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系原创 2013-08-23 00:10:31 · 84837 阅读 · 14 评论 -
Linux进程间通信——使用匿名管道
在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这个名词你一定不会感觉到陌生,因为我们通常通过符号“|"来使用管道,但是管理的真正定义是什么呢?管道是一个进程连接数据流到另一个进程的通原创 2013-08-22 03:29:28 · 28208 阅读 · 2 评论 -
Linux进程间通信——信号集函数
我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号呢?信号集函数就是帮助我们解决这些问题的。有关Linux进程间使用信号通信的更多内容,可以参阅我的另一篇文章——Linux进程间通信——使用信号例如,Linux有一个健壮的信号原创 2013-08-21 02:32:56 · 12979 阅读 · 0 评论 -
Linux进程间通信——使用信号
一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们原创 2013-08-21 00:24:54 · 61778 阅读 · 20 评论 -
Linux启动新进程的几种方法及比较
有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些方法及它们之间的区别。一、system函数调用system函数的原型为:#include int system (const char *string);它的作用原创 2013-08-20 00:15:31 · 59186 阅读 · 1 评论 -
Linux数据管理——文件锁定
一、什么是文件锁定对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主之外的人进入这个房子,你进入不到这个房子,也就不能使用房子里面的东西。而因为程序经常需要共享数据,而这通常又是通过文件来实现的,试想一个情况,A进程正在对一个文件进行写操作,而另一个程序原创 2013-08-19 16:23:20 · 6149 阅读 · 0 评论 -
Linux 文件操作——系统调用和标准I/O库
一、什么是文件在讲述文件操作之前,我们首先要知道什么是文件。看到这个问题你可能会感觉到可笑,因为对于用过计算机的人来说,文件是最简单不过的概念了,例如一个文本是一个文件,一个work文档是一个文件等。但是在Linux中,文件的概念还远不止于这些,在Linux中,一切(或几乎一切)都是文件。文件包括很多的内容,例如:大家知道的普通文件是文件,目录也是一个文件,设备也是一个文件,管道也是一原创 2013-08-19 00:18:13 · 13635 阅读 · 7 评论 -
Linux Shell 之 制作录制回放功能脚本
不久前在书上看到两个很有趣的命令——script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还只是一般的文本文件,文件的大小非常小,真是非常有意思。下面是本人写的两个shell程序,来方便进行这个有趣并有意义的操作。一、实现代码文件:Record.sh#! /原创 2013-07-19 10:57:06 · 4407 阅读 · 2 评论 -
linux 中特殊符号用法详解
# 井号 (comments)#管理员 $普通用户脚本中#!/bin/bash #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行转载 2013-07-17 21:47:14 · 40055 阅读 · 2 评论 -
Linux Shell 之 对文件中的行、单词、字符进行迭代
在进行文本文件进行处理时,对文件件中的行、单词、字符进行迭代和遍历是非常常用的操作。而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行、单词、和字符进行迭代的基本方法。废话不多说,马上来看看怎么样实现吧。1、迭代文中的每一行使用while循环从标准输入中读取,因为要在标准输入中读取,就要对文件进行重定向,使它重定向到stdin中,代码如下原创 2013-07-16 16:55:20 · 10220 阅读 · 1 评论 -
Linux Shell 之 Shell中的函数调用
说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法。一、Shell中函数的定义为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西。而Shell中函数的定义有两种方法,如下:functi原创 2013-07-15 16:16:38 · 106168 阅读 · 0 评论 -
Linux Shell 之 我的第一个Shell程序
这里我首先会介绍一个Shell是什么,再介绍我的第一个Shell程序和从中总结的经验。一、Shell是什么在说我的这个Shell程序之前,还是先跟大家说说什么是Shell吧,相信Shell这个词大家一定听过很多了,但是它其实是什么东西呢?其实Shell是一个程序,我们在shell中输入一些命令,它就告诉操作系统内核我们想做什么,好让内核可以控制硬件来正确无误地工作。简单点来说就原创 2013-07-14 16:42:15 · 9153 阅读 · 4 评论 -
初窥Linux 之 区分硬连接和软连接
一、Linux下的两种连接文件及创建方式在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别。一种是类似于Windows的快捷方式功能的文件(或目录),这种连接称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接。创建连接文件的方法非常简单,就是使用ln命令,ln file1 file2,则创建硬连原创 2013-07-14 13:52:03 · 7642 阅读 · 0 评论 -
初窥Linux 之 简述软件安装
对于Windows的用户来说,软件安装的确是没有什么学问,一直Next或者改一下路径,软件就会装好了。但是在Linux下可没这么简单了。Linux下的软件安装主要有三种方式,分别是rpm(RedHat系列)或DPKG(Debian系列)、yum(RedHat系列)或APT(Debian系列)和Tarball。由于rpm、yum等的安装方式都非常简单,在这里就不再详述了,就举原创 2013-07-13 22:21:48 · 2938 阅读 · 0 评论 -
初窥Linux 之 构建你的Linux“任务管理器”
在Windows下,大家肯定有用过任务管理器,特别是我们想看看我们的CPU的使用率、内存还剩下多少,又或者某个程序出现了异常还关闭不了时,大家肯定会使用任务管理器来强制结束这个程序。那么在Linux下有没有这样的工具呢?答案是肯定的,作为一个强大的操作系统,Linux怎么可能没有“任务管理器”呢?我们可以通过一系列的工具和命令来出色地实现我们在Windows中任务管理中所做的一切工作,构建一个Li原创 2013-07-10 14:42:26 · 9350 阅读 · 1 评论 -
初窥Linux 之 文件权限
一、用户与用户组为了更好地理解文件权限,我们需要先有用户和用户组的概念。因为在Linux里面,任何一个文件都具有“User(用户)、Group(用户组)及Others(其他用户)”3种身份的个别权限。1、用户和文件所有者的概念你用来登陆Linux主机的那个用户名就是一个用户,例如,root就是一个用户,而Linux上存在很多的用户。如果你在Linux上创建了一个文件,那么默认情原创 2013-07-08 10:14:42 · 3452 阅读 · 2 评论 -
初窥Linux 之 数据流重定向
一、什么是数据流重定向在说数据流重定向之前,先来说说数据流的概念吧。数据流分为三种:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。简单来说,标准输出指的是命令执行所回传的正确信息,而标准错误输出指的是命令执行失败后,所回传的错误信息。这些信息默认是打印在屏幕上的。那么什么时数据流重定向呢?从字面上理解就是改变数据流的流向,使之流原创 2013-07-07 12:15:55 · 14079 阅读 · 6 评论 -
初窥Linux 之 ext2/ext3文件系统
Linux最传统的磁盘文件系统(filesystem)使用的是ext2,所以要了解文件系统就得要由ext2开始。一、文件系统特性磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统的应用中,一个分区誻只能够原创 2013-02-22 21:38:33 · 27666 阅读 · 2 评论