【求助】重定向【已解】

sh/bash/dash/ksh/zsh等Shell脚本
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

【求助】重定向【已解】

#1

帖子 halfwolf » 2014-09-09 14:08

最近公司的工作环境切换为redhat,在使用重定向的过程中经常报错

echo “” > aa.log

返回
aa.log : File exits.

只有手动把 aa.log 删除后才能进行重定向。而本人习惯的方式是直接覆盖,而不是询问

故,求助各位大侠,看有没有解决方案,谢谢!
上次由 halfwolf 在 2014-09-12 15:13,总共编辑 1 次。
头像
cikekid
帖子: 628
注册时间: 2008-11-28 13:57
系统: OSX/CentOS

Re: 【求助】重定向

#2

帖子 cikekid » 2014-09-09 14:10

echo $PATH
看一下是不是用的默认的echo

代码: 全选

sudo mount /dev/sda* /mnt/
sudo mount -t proc none /mnt/proc
sudo mount -o bind /dev /mnt/dev
sudo chroot /mnt/ /bin/bash
sudo apt-get install grub
sudo grub-install --no-floppy /dev/sda
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 【求助】重定向

#3

帖子 poloshiao » 2014-09-09 17:12

先看看權限
sudo ls -al ./aa.log
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#4

帖子 halfwolf » 2014-09-10 11:05

cikekid 写了:echo $PATH
看一下是不是用的默认的echo
跟echo无关,跟重定向有关,ls >aa.log, cat otherfile.txt>aa.log均不行。
echo为shell built-in command.
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#5

帖子 halfwolf » 2014-09-10 11:05

cikekid 写了:echo $PATH
看一下是不是用的默认的echo
跟echo无关,跟重定向有关,ls >aa.log, cat otherfile.txt>aa.log均不行。
echo为shell built-in command.
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#6

帖子 halfwolf » 2014-09-10 11:09

poloshiao 写了:先看看權限
sudo ls -al ./aa.log
权限正常,
-rw--r--r--

用 echo |tee aa.log 操作正常,但 echo > aa.log 报“File exits”错误
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 【求助】重定向

#7

帖子 poloshiao » 2014-09-10 11:31

echo “” > aa.log
試試
echo 'Line1' > ./aa.log
cat ./aa.log
echo 'Line2' > ./aa.log
cat ./aa.log
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#8

帖子 halfwolf » 2014-09-10 11:43

poloshiao 写了:
echo “” > aa.log
試試
echo 'Line1' > ./aa.log
cat ./aa.log
echo 'Line2' > ./aa.log
cat ./aa.log
试过了,不行。这跟我原来的做法没区别嘛!是重定向的问题,不是echo问题。即,不能重定向信息到现存文件。可能修改某些配置项才行
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 【求助】重定向

#9

帖子 astolia » 2014-09-10 11:55

首先看看你用的是什么shell。
bash有个noclobber选项可以防止重定向时覆盖已有文件。详情自己去看man bash
用set +o noclobber可以关闭这个功能,检查一下相关的配置文件,看看是不是哪里设置了
或者用>|也可以无视noclobber选项
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 【求助】重定向

#10

帖子 poloshiao » 2014-09-10 11:57

我在 Ubuntu 測試是可以的
echo "Line1" > ./aa.log # 不行
echo 'Line1' > ./aa.log # 可以
也許 你的 shell 不同

echo $SHELL
/bin/bash
我的是 bash shell
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#11

帖子 halfwolf » 2014-09-10 13:17

poloshiao 写了:我在 Ubuntu 測試是可以的
echo "Line1" > ./aa.log # 不行
echo 'Line1' > ./aa.log # 可以
也許 你的 shell 不同

echo $SHELL
/bin/bash
我的是 bash shell
我的工作环境切换为redhat,重定向存在问题才过来求助的,谢谢你!
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 【求助】重定向

#12

帖子 poloshiao » 2014-09-10 14:33

echo $SHELL
先看看 你的 shell 是哪一種
头像
cikekid
帖子: 628
注册时间: 2008-11-28 13:57
系统: OSX/CentOS

Re: 【求助】重定向

#13

帖子 cikekid » 2014-09-11 14:04

大概和noclobber有关,试试 >| 强制重定向管用不

代码: 全选

sudo mount /dev/sda* /mnt/
sudo mount -t proc none /mnt/proc
sudo mount -o bind /dev /mnt/dev
sudo chroot /mnt/ /bin/bash
sudo apt-get install grub
sudo grub-install --no-floppy /dev/sda
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 【求助】重定向

#14

帖子 halfwolf » 2014-09-12 15:11

cikekid 写了:大概和noclobber有关,试试 >| 强制重定向管用不
谢谢你!是你说的问题!

1) 用强制重定向 >! 可以解决问题。

2)在配置文件.cshrc中添加
unset noclobber
可以取消重定向限制。
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: 【求助】重定向【已解】

#15

帖子 susbarbatus » 2014-09-12 18:08

... 结果用的 csh,从头到尾都不说
沉迷将棋中……
回复