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以及如何删除带有空格的目录的更多相关文章

  1. 嵌入式 Linux下永久生效环境变量bashrc

    嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...

  2. linux命令 - export - 设置环境变量

    linux命令 - export - 设置环境变量 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供 ...

  3. Linux系统下修改环境变量PATH路径的三种方法

    这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...

  4. linux设置和查看环境变量的方法

    1.    显示环境变量HOME $ echo $HOME /home/redbooks 2.    设置一个新的环境变量hello $ export HELLO="Hello!" ...

  5. Linux下配置Node环境变量及问题详解

    这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...

  6. Linux下各种常见环境变量的配置

      Linux系统下各种环境变量都通过修改/etc/profile文件来实现.由于是系统文件,修改此文件需要root权限.因此实现以下功能都需要用户拥有root权限. 另:不要轻易修改profile文 ...

  7. linux添加、修改环境变量

    比如要把/etc/apache/bin目录添加到PATH中,方法有三: 1.In shell: setenv <path_to_append>: $ENVNAME setenv PATH ...

  8. 自学Linux Shell6.3-系统环境变量持久化

    点击返回 自学Linux命令行与Shell脚本之路 6.3-系统环境变量持久化 在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件:b ...

  9. Linux设置和查看环境变量的方法 详解

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

随机推荐

  1. Linux编程 6 (查看进程 ps 及输出风格)

    一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...

  2. Java集合类常见面试知识点总结

    微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java ...

  3. 从零开始学 Web 之 Vue.js(一)Vue.js概述,基本结构,指令,事件修饰符,样式

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. gbk转utf-8

    1.文件转码:使用脚本   gbk转u8的脚本文件: #!/bin/bash FILE_SUFFIX="java xml html vm js" # FILE_SUFFIX=&qu ...

  5. 通过 Ansible 创建 Jenkins Server

    创建 CI 流程的第一件事应该是安装 CI 工具,本文以最常见的 Jenkins 为例,介绍如何使用 Ansible 自动安装 Jenkins Server.说明:本文的演示环境为 ubuntu 16 ...

  6. Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

    Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...

  7. laravel C层接收数据的步骤

    use Illuminate\Http\Request; function fun(Request $request){ //获取修改的数据 $arr = $request->all(); // ...

  8. SpringMVC4返回json

    前言 目前前后端分离后,接口大多数返回给前端的都是json数据,那么我尝试用SpringMVC4的Controller返回json.demo过程中遇到了几个问题写出来和java初学者分享一下. 开发环 ...

  9. springboot:Java模板引擎Thymeleaf介绍

    Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...

  10. IBatisNet动态update以及DateTime类型字段处理

    在维护一个老项目中碰到的问题.SQL配置如下(只简单列出两个字段): <update id="ProjectInfo.Update" parameterClass=" ...