在目录Unix TCSH脚本中迭代文件时的权限
我正在编写一个脚本,它将打印主目录子目录中每个文件的文件名。我的代码是:在目录Unix TCSH脚本中迭代文件时的权限,unix,permissions,tcsh,Unix,Permissions,Tcsh,我正在编写一个脚本,它将打印主目录子目录中每个文件的文件名。我的代码是: foreach file (`~/.garbage`) echo "$file" end 当我尝试运行脚本时,出现以下错误: home/.garbage: Permission denied. 我已尝试将.garbage目录和脚本的权限设置为755,但无法克服此错误。我有没有做错什么?这是一个tcsh脚本。为什么不直接使用ls~/.garbage 或者,如果您想将每个文件放在单独的一行中,ls-1~/.gar
foreach file (`~/.garbage`)
echo "$file"
end
当我尝试运行脚本时,出现以下错误:
home/.garbage: Permission denied.
我已尝试将.garbage目录和脚本的权限设置为755,但无法克服此错误。我有没有做错什么?这是一个tcsh脚本。为什么不直接使用
ls~/.garbage
或者,如果您想将每个文件放在单独的一行中,
ls-1~/.garbage
backtic将尝试执行其中的任何内容。由于您在backtic中提供目录名,因此出现此错误
您可以像Mark提到的那样在backtics中使用
ls~/.garbage
,或者在引号中使用~/.garbage/*
,并依靠shell为您扩展glob。如果只想从完整路径中获取文件名;使用basename
命令或一些sed/awk magicbackticks试图调用程序~/.garbage
。你可能不想这么做,我去掉了虱子,它成功了。但是现在我有另一个问题。for循环只执行一次,但.garbage中有3个文件。我的目录格式是否仍然不正确?~/.garbage/*
可能就是您要查找的内容-没有对目录进行隐式搜索,因此它只使用路径名。您可能使用了一些以前使用过的带有反勾号的ls~/.garbage
,这实际上列出了目录的内容。星号用路径打印正确的文件。有没有办法只打印.garbage中每个文件的文件名?或者我需要对grep或sed做些什么?