最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell中處理包含空格的文件名實(shí)例

 更新時(shí)間:2014年05月06日 11:57:37   作者:  
這篇文章主要介紹了Shell中處理包含空格的文件名實(shí)例,需要的朋友可以參考下

今天在處理文件時(shí)遇到個(gè)問(wèn)題,當(dāng)文件名包含空格時(shí),for循環(huán)就出問(wèn)題了。

例如,我在當(dāng)前文件夾下建立3個(gè)文件名包含空格的文件:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ touch "test 1"
keakons-MacBook-Pro:test keakon$ touch "test 2"
keakons-MacBook-Pro:test keakon$ touch "test 3"
keakons-MacBook-Pro:test keakon$ ls
test 1 test 2 test 3

然后for循環(huán)輸出文件名:
復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ for file in `ls`;
> do echo $file;
> done
test
1
test
2
test
3

可以看到,文件名被分開(kāi)了。

復(fù)制操作也不行:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ mkdir ../bak
keakons-MacBook-Pro:test keakon$ for file in `ls`; do cp "$file" ../bak; done
cp: bak is a directory (not copied).
cp: test: No such file or directory
cp: 1: No such file or directory
cp: test: No such file or directory
cp: 2: No such file or directory
cp: test: No such file or directory
cp: 3: No such file or directory

要解決這個(gè)問(wèn)題,當(dāng)然就要從單詞分隔符著手。而bash中使用的是$IFS(Internal Field Separator)這個(gè)變量,內(nèi)容為" \n\t":

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ echo $IFS

keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  09  0a  0a                                               
0000004
keakons-MacBook-Pro:test keakon$ echo "" | od -t x1
0000000    0a                                                           
0000001

然后把它改成"\n\b",記得修改前先保存一下:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ SAVEIFS=$IFS
keakons-MacBook-Pro:test keakon$ IFS=$(echo -en "\n\b")

現(xiàn)在再執(zhí)行上述命令就正常了:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ for file in `ls`; do echo $file; done
test 1
test 2
test 3
keakons-MacBook-Pro:test keakon$ for file in `ls`; do cp "$file" ../bak; done
keakons-MacBook-Pro:test keakon$ ls ../bak
test 1 test 2 test 3

最后,別忘了恢復(fù)$IFS:

復(fù)制代碼 代碼如下:
keakons-MacBook-Pro:test keakon$ IFS=$SAVEIFS
keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  09  0a  0a                                               
0000004
keakons-MacBook-Pro:test keakon$ IFS=$(echo -en " \n\t")
keakons-MacBook-Pro:test keakon$ echo "$IFS" | od -t x1
0000000    20  0a  09  0a                                               
0000004

相關(guān)文章

最新評(píng)論

甘洛县| 巴马| 绍兴市| 二手房| 剑阁县| 涞源县| 华亭县| 贵阳市| 上思县| 江西省| 马关县| 泾阳县| 广安市| 繁昌县| 河北区| 荔波县| 滕州市| 湖口县| 荆州市| 合阳县| 信丰县| 汉源县| 平安县| 南丹县| 历史| 健康| 个旧市| 吴旗县| 班玛县| 兴义市| 榆林市| 清丰县| 浏阳市| 萍乡市| 本溪| 禄丰县| 新密市| 监利县| 光泽县| 涞源县| 利川市|