<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[QiuSaMa的博客]]></title><description><![CDATA[Open Source Creates A New World!]]></description><link>https://blog.youkuaiyun.com/Qiu_SaMa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Qiu_SaMa]]></copyright><item><title><![CDATA[9.2 sed编辑器基础]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120643092</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120643092</guid><author>Qiu_SaMa</author><pubDate>Thu, 07 Oct 2021 22:40:38 +0800</pubDate><description><![CDATA[1.更多的替换选项

s命令的另外一些选项。



1.1 替换标记

替换命令在替换多行中的文本时能正常工作，但默认情况下它只替换每行中出现的第一处。

要让替换命令能够替换一行中不同地方出现的文本必须使用替换标记。替换标记会在替换命令字符串之后设置。

s/pattern/replacement/flags

有4种可用的替换标记：



			
			
			
			形式
			
			
			描述
			
		
			1
			
			
			数字
			
			
			表明新文本将替换第几处模式.]]></description><category></category></item><item><title><![CDATA[9.1 shell文本处理]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120631274</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120631274</guid><author>Qiu_SaMa</author><pubDate>Wed, 06 Oct 2021 23:33:43 +0800</pubDate><description><![CDATA[通常shell脚本最大的用途就在于解析和显示文本文件中的数据，比如日志文件和错误文件。

Linux环境包含了两个非常有用的工具：sed和gawk，两者都能够在shell脚本中处理文本数据。



1.sed编辑器

sed编辑器被称为流编辑器（stream editor），和普通的交互式文本编辑器恰好相反。

在交互式文本编辑器中（如vim），可以用键盘命令来交互式地插入、删除或替换数据中的文本。
	流编辑器则会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。


sed编辑器可以根据命令来处理数]]></description><category></category></item><item><title><![CDATA[8.2 shtool库的使用]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607394</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607394</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 20:02:42 +0800</pubDate><description><![CDATA[GNU shtool shell脚本函数库提供了一些简单的shell脚本函数，可以用来完成日常的shell功能，例如处理临时文件和目录或者格式化输出显示。



1.下载及安装shtool库

首先是将GNU shtool库下载并安装到系统中，如此才能在自己的shell脚本中使用这些库函数。

shtool库软件包的下载地址是：

ftp://ftp.gnu.org/gnu/shtool/shtool-2.0.8.tar.gz



下载后将文件复制到主目录中，再使用tar命令提取文件。



2.构建库
]]></description><category></category></item><item><title><![CDATA[8.1 shell函数的使用]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607293</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607293</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:57:07 +0800</pubDate><description><![CDATA[1.基本的脚本函数

1.1创建函数：

name(){

  Command;

}



在调用函数时，bash shell会按命令在函数中出现的顺序依次执行，就像在普通脚本中一样。



1.2使用函数：

在行中指定函数名就行了。

同样的，如果再函数被定义前使用，则是非法的。

如果重定义了函数，新定义会覆盖原来函数的定义。



1.3 返回值

Bash shell 会把函数当作一个小型脚本，运行结束时会返回一个退出状态码。

（1）默认退出状态码

默认情况下，函数的退出状态码是函数中...]]></description><category></category></item><item><title><![CDATA[7.6 控制shell脚本]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607263</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607263</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:52:37 +0800</pubDate><description><![CDATA[1.处理信号

Linux利用信号与运行在系统中的进程进行通信。

可以通过对脚本进行编程，使其在收到特定信号时执行某些命令，从而控制shell脚本的操作。



1.1 捕获信号

trap命令允许指定shell脚本要监看并从shell中拦截的Linux信号。

如果脚本收到了trap命令中列出的信号，该信号不再由shell处理，而是由本地处理。

格式：trap cmd signals



在trap命令行上，只要列出想要shell执行的命令，以及一组用空格分开的待捕获的信号。可以用数值或Linux信]]></description><category></category></item><item><title><![CDATA[7.5 shell处理数据输出]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607219</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607219</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:47:07 +0800</pubDate><description><![CDATA[1.标准文件描述符

Linux用文件表述符（file descriptor）来标识每个文件对象。

文件描述符是一个非负整数，可以唯一标识会话中打开的文件。

每个进程一次最多可以有9个文件描述符。

处于特殊目的，bash shell保留了前三个文件描述符（0,1,2）：



			文件描述符
			
			
			缩写
			
			
			描述
			
		
			0
			
			
			STDIN
			
			
			标准输入
			
		
			1
			
			
			STDOUT
		]]></description><category></category></item><item><title><![CDATA[7.4 shell处理用户输入]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607172</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607172</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:42:22 +0800</pubDate><description><![CDATA[1.命令行参数

命令行参数允许在运行脚本时向命令行添加数据。



1.1 读取参数

Bash shell会将一些称为位置参数的特殊变量分配给输入到命令行中的所有参数。

这也包括shell所执行的脚本名称。位置参数变量是标准的数字：

$0：程序名（脚本名）；
	$1：第一个参数；
	$2：第二个参数；
	依次类推，直到$9，第9个参数；


可以在shell脚本中像使用其他变量一样使用$1变量，shell脚本会自动将命令行参数的值分配给变量，不需要作任何处理。

如果需要输入更多的命令行参数，则每个]]></description><category></category></item><item><title><![CDATA[7.3 shell脚本中的循环命令]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607149</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607149</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:39:46 +0800</pubDate><description><![CDATA[1.for命令

格式：

for var in list

do

  commands

done



在list参数中，需要提供迭代中要用到的一系列值。

在每次迭代中，变量var会包含列表中的当前值。第一次迭代会使用list中的第一个值，第二次使用list中的第二个值，以此类推，直到列表中的所有值都过一遍。

在do和done语句之间输入的命令可以是一条或多条标准的bash shell命令。



1.1 读取列表中的值

for命令最基本的用法就是遍历for命令自身所定义的一系列值。

fo..]]></description><category></category></item><item><title><![CDATA[7.2 Shell脚本使用结构化命令]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607122</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607122</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:36:46 +0800</pubDate><description><![CDATA[1.if-then语句

最基本的结构化命令就是if-then语句：

格式：

if cmd

then

 cmds

fi



含义：

if 语句会运行 if 后面的那个命令，如果该命令的退出状态码为0，则 then 后面的命令就会被执行；

如果 if 后面的命令退出状态码为非0的值，则 then 后面的命令就不会被执行，bash shell会继续执行脚本中的下一个命令。

‘ fi ’表示if-then语句到此结束。



在 then 部分可以使用不止一条命令，可放置多条命令。

...]]></description><category></category></item><item><title><![CDATA[7.1 Linux shell基本脚本]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607081</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120607081</guid><author>Qiu_SaMa</author><pubDate>Mon, 04 Oct 2021 19:33:39 +0800</pubDate><description><![CDATA[1.使用多个变量

shell脚本的关键在于输入多个命令并处理每个命令的结果，甚至需要将一个命令的结果传给另一个命令。

shell可以将多个命令串起来，一次执行完成。

如果要两个命令一起运行，可以把它们放在同一行中，命令间用分号（；）隔开。

（注：shell脚本一行的最大字符数为255个字符。）



2.创建shell脚本文件

在创建shell脚本文件test1时，必须在文件的第一行指定要使用的shell，其格式为：

#！/bin/bash

# This script display th..]]></description><category></category></item><item><title><![CDATA[6.3 shell逻辑卷管理]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582442</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582442</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:14:52 +0800</pubDate><description><![CDATA[逻辑卷管理器（Logical volume manager，LVM）：

通过将另外一个硬盘上的分区加入已有的文件系统，动态地添加存储空间。

它可以让你在无需重建整个文件系统的情况下，轻松地管理磁盘空间。



1.Linux中的LVM

1.1 快照

最初的Linux LVM允许在逻辑卷在线的状态下将其复制到另一个设备，这一功能叫作快照。



1.2 条带化

LVM2提过了条带化的功能，它可以跨多个物理硬盘创建逻辑卷。



1.3 镜像

LVM镜像，是一个实时更新的逻辑卷的完整副本。



2]]></description><category></category></item><item><title><![CDATA[6.2 shell操作文件系统]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582412</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582412</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:12:38 +0800</pubDate><description><![CDATA[1.创建分区

首先，必须在存储设备上创建分区来容纳文件系统。分区可以是整个硬盘，也可以是部分硬盘，以容纳虚拟目录的一部分。

fdisk工具用来帮助管理安装在系统上的任何存储设备的分区。它是一个交互式程序，允许输入命令来逐步完成硬盘分区操作。

要启动fdisk命令，必须指定要分区的存储设备的设备名，另外还得有超级用户权限。



2.创建文件系统

要想知道某个文件系统工具是否可用，可以使用‘type’命令：

type mkfs.ext4



每个文件系统都有自己的创建命令，可以通过man命令查看.]]></description><category></category></item><item><title><![CDATA[6.1 Linux文件系统]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582397</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582397</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:11:13 +0800</pubDate><description><![CDATA[1.基本的文件系统

1.1 ext文件系统

扩展文件系统（extended filesystem），它为Linux提供了一个基本的类Unix文件系统：使用虚拟目录来操作硬件设备，在物理设备上按定长的块来存储数据。

ext文件系统采用名为‘索引节点’的系统来存储虚拟目录中所存储文件的信息。



索引节点系统在每个物理设备中创建一个单独的表（称为索引节点表）来存储这些文件的信息。存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。

1.2 ext2文件系统



2.日志文件系统

日志文件系统为]]></description><category></category></item><item><title><![CDATA[5.2 shell处理文件权限]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582378</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582378</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:09:42 +0800</pubDate><description><![CDATA[1.使用文件权限符

1.1 权限符号含义：



			
			
			
			1
			
			
			2
			
			
			3
			
			
			4
			
			
			5
			
			
			6
			
			
			7
			
			
			8
			
			
			9
			
			
			10
			
		
			
			
			
			-
			
			
			r
			
			
			w
			
			
			x
			
			
			r
			
			
			w
			
	.]]></description><category></category></item><item><title><![CDATA[5.1 shell用户管理]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582366</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582366</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:07:43 +0800</pubDate><description><![CDATA[1.添加新用户

命令：useradd



2.删除用户

命令：userdel

默认情况下该命令只会删除/etc/passwd文件中的用户信息，而不会删除系统中属于该账户的任何文件。



3.修改用户

Linux提供了一些不同的工具来修改已有用户账户的信息：



			
			
			
			命令
			
			
			描述
			
		
			1
			
			
			usermod
			
			
			修改用户账户的字段，还可以指定主要组以及附加组的所属关系
			
		
			2
			]]></description><category></category></item><item><title><![CDATA[4.shell中环境变量]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582343</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582343</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:06:14 +0800</pubDate><description><![CDATA[bash shell 用环境变量的特性来存储有关shell会话和工作环境信息。这也是存储持久数据的一种简便方法。



1.全局环境变量

全局环境变量对于shell会话和所有生成的子shell都是可见的。

查看全局环境变量的命令：

env
	printenv


也可以使用echo命令显示变量的值，使用时注意必须在变量前面加上一个‘$’符号。

如：echo $HOME



（在变量名前加上'$'符号，可不仅仅是要显示变量的当前值，它能够让变量作为命令行参数。

 如：ls $HOME 等...]]></description><category></category></item><item><title><![CDATA[3.4 理解shell的内建命令]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582313</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120582313</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:02:54 +0800</pubDate><description><![CDATA[1.外部命令：

也被称为文件系统命令，是存在于bash shell之外的程序。

它们并不是shell程序的一部分。

外部命令程序通常位于/bin，/usr/bin，/sbin或/usr/sbin中。



当外部命令执行时，会创建出一个子进程。这种操作被称为衍生（forking），外部命令就在衍生的子进程中被执行。



2.内建命令：

内建命令不要子进程来执行。它是作为shell工具的组成部分存在。

如：cd 和 exit命令都内建在bash shell中。



好用的内建命令：

（1）hi]]></description><category></category></item><item><title><![CDATA[3.3 shell处理数据文件]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578963</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578963</guid><author>Qiu_SaMa</author><pubDate>Sat, 02 Oct 2021 00:00:35 +0800</pubDate><description><![CDATA[1.排序数据

命令：sort

常用参数：



			-n
			
			
			把数字识别成数字而不是字符，并按值的大小排序
			
		
			-M
			
			
			按月排序
			
		
			-r
			
			
			反序排序，升序变降序
			
		



2.搜索数据

命令：grep

格式：

grep [options] pattern [file]



如：搜索文件中指定字符的行：（在file1中搜索字符t的行）

grep -n t file1



grep命令还可..]]></description><category></category></item><item><title><![CDATA[3.2 shell监测磁盘空间]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578953</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578953</guid><author>Qiu_SaMa</author><pubDate>Fri, 01 Oct 2021 16:54:31 +0800</pubDate><description><![CDATA[1.挂载存储媒体

命令：mount

要手动在虚拟目录中挂载设备，需要以root用户身份登录，或是以root用户身份运行sudo命令。



媒体设备挂载到虚拟目录后，root用户就有了对该设备的所有访问权限，而其他用户的访问则会被限制。

可以通过目录权限指定用户对设备的访问权限。

使用mount的高级权限，可查看该命令的参数。



2.卸载设备

从Linux系统上移除一个可移动设备时，不能直接从系统上删除，而应该先将设备‘卸载’。

命令：umount

格式：umount [directory]]></description><category></category></item><item><title><![CDATA[3.1 shell监测程序]]></title><link>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578930</link><guid>https://blog.youkuaiyun.com/Qiu_SaMa/article/details/120578930</guid><author>Qiu_SaMa</author><pubDate>Fri, 01 Oct 2021 16:53:45 +0800</pubDate><description><![CDATA[1.进程监测：

命令：ps



查看系统上运行的所有进程：

ps -ef



‘-e’参数：表示显示所有运行在系统上的进程；

‘-f’参数：表示扩展输出，显示更多的进程信息；



命令：top

显示进程实时信息。



2.结束进程：

在Linux中进程之间通过信号来通信。

进程的信号就是预定义好的一个消息，进程能识别它并决定是忽略还是作出反应。

进程如何处理信号是由开发人员通过编程来决定的。

Linux进程信号：



			信号
			
			
			名称
			
			
...]]></description><category></category></item></channel></rss>