Linux之特殊的环境变量IFS以及如何删除带有空格的目录
1、IFS是什么?
Linux下有一个特殊的环境变量叫做IFS,叫做内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用户字段分隔符的一系列字符。默认情况下,bash shell会将空格当做字段分隔符。我这里的系统是Centos7系统。
但是往往我们不能仅仅以空格符来作为字段分隔符,有些情况下我们需要将分割符设置为换行符来满足我们的业务需求。
演示如下:
现在我创建了四个目录,其中一个目录带有空格。现在我想把一下子他们统统都删除掉。
[root@ELK-chaofeng test]# ls
chao chao feng chen feng
[root@ELK-chaofeng test]# ll
total
drwxr-xr-x root root Feb : chao
drwxr-xr-x root root Feb : chao feng
drwxr-xr-x root root Feb : chen
drwxr-xr-x root root Feb : feng
如何直接删除的话,会出现下面的情况:
[root@ELK-chaofeng test]# find . -type d
.
./chao feng
./chen
./feng
./chao
[root@ELK-chaofeng test]# for dir in `find . -type d`; do echo ${dir} ;done
.
./chao
feng
./chen
./feng
./chao
上面红色背景的本来是一个目录,结果这里却显示成了两个目录,所以使用rm删除的话肯定是删除不掉的。(我这里使用echo来做演示而已,echo显示正确,那么rm也能顺利删除带有空格的目录)
此时我们就需要使用IFS来解决这个问题了。
[root@ELK-chaofeng test]# IFS=$'\n' && for dir in `find . -type d`; do echo ${dir} ;done
.
./chao feng
./chen
./feng
./chao
这个时候我们发现带有空格的目录可以完整显示了。这是正确的。那么现在我们就可以删除了。
[root@ELK-chaofeng test]# ll
total
drwxr-xr-x root root Feb : chao
drwxr-xr-x root root Feb : chao feng
drwxr-xr-x root root Feb : chen
drwxr-xr-x root root Feb : feng
[root@ELK-chaofeng test]# IFS=$'\n' && for dir in `find . -type d`; do rm -rf ${dir} ;done
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
[root@ELK-chaofeng test]# ls
此时rm报错可以忽略。现在看来我们已经成功的结果了这个问题。
Linux之特殊的环境变量IFS以及如何删除带有空格的目录的更多相关文章
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- linux命令 - export - 设置环境变量
linux命令 - export - 设置环境变量 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供 ...
- Linux系统下修改环境变量PATH路径的三种方法
这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...
- linux设置和查看环境变量的方法
1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" ...
- Linux下配置Node环境变量及问题详解
这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...
- Linux下各种常见环境变量的配置
Linux系统下各种环境变量都通过修改/etc/profile文件来实现.由于是系统文件,修改此文件需要root权限.因此实现以下功能都需要用户拥有root权限. 另:不要轻易修改profile文 ...
- linux添加、修改环境变量
比如要把/etc/apache/bin目录添加到PATH中,方法有三: 1.In shell: setenv <path_to_append>: $ENVNAME setenv PATH ...
- 自学Linux Shell6.3-系统环境变量持久化
点击返回 自学Linux命令行与Shell脚本之路 6.3-系统环境变量持久化 在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件:b ...
- Linux设置和查看环境变量的方法 详解
1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...
随机推荐
- 原创python:windows解决genymotion appium adb 的问题。
首先请安装好genymotion 与并用其下载好要用的安卓版本. (其中Oracle VM VirtualBox可以自己单独安装也可以在下载genymotion时选择包含vbox的) 参考https: ...
- eclipse导入Tomcat8源码
最近这段时间在学习how tomcat works这本书,需要结合书上的例子对照tomcat源码来看,需要导入tomcat的源码,所以在网上找了很多教程,结合自己遇到的问题,记录如下: 1.前期准备 ...
- 获取多个checkbox的选中值
我在这个div中添加了多个input. 拼接一下呢.最老的方法. jquery获取值: var strSel=""; $("[name='jbbm']:checked&q ...
- Configure Many-to-Many relationship:
Configure Many-to-Many relationship: Here, we will learn how to configure Many-to-Many relationship ...
- fiddler对Iphone6s进行抓包教程
1.下载fiddler_4.6,点击下一步直接安装. 2.打开fiddler,选择tools-options,在https中勾选decrypt https traffic和ignore server ...
- 学习实践之DEMO《nodejs模拟POST登陆》
一个简单的PHP接收参数页面 <?php header("content-type:text/html;charset=utf-8"); if($_POST[username ...
- JS下计算当前日期(当天)后N天出现NAN或者undefined的情况
前言: 帮客户做一个订单系统,需要一个日期1,一个日期2,默认情况下日期1为当天,日期2为明天,只是当时有些疑惑的是日期2偶尔会出现NAN的情况,今天在segmentfault.com看到了同样的问题 ...
- js串口通信 调用MSCOMM32控件 链接电子秤(完整版实现方案)
硬件环境:RS232转USB串口线*1 电子秤*1(本人采用G&G E600Y-C型号称重仪) 电子秤原装RS232数据线*1 计算机*1 软件环境:RS232转USB串口线驱动(这个可以在串 ...
- FTP 150 Opening BINARY mode data connection for MLSD 读取目录列表失败
这完全是因为防火墙的问题,把服务器的防火墙关闭之后,在连接,一切ok
- java-两个整数变量的交换-不需要定义第三方变量
代码如下: class Example { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次 ...