如何在没有'的情况下使用bash文件。'?

时间:2018-06-17 14:02:20

标签: linux bash shell

如果我想使用bash文件,我必须写这个。

。 name.bash

enter image description here

但是,使用'运行时,下面的bash文件不起作用。'连接。 如果我使用此命令,则立即删除该文件。 (不要搬垃圾) ex)。 trash.bash del.txt

当我问起时,他们说"。"应该删除。 但是,如果我删除'。',我会看到"命令未找到"。

我最近才学习Linux。 所以,我不知道下面的bash代码是错误的,还是不适用于'。'。

#! /bin/bash

FCnt=0
LFlag=0
PFlag=0
IFlag=0
FFlag=0
trash=~/.trash

error ()
{
cat << END
echo How to use the Recycle Bin management program :
echo   trash -p : "Empty the trash"
echo   trash -i : "Empty Trash (OK or No)"
echo   trash -l : "Recycle bin check"
echo   trash file* : "Throw in trash"
END
exit 1
}

for list in $*
do
  case $list in
    "-p")
        PFlag=1
        ;;
    "-i")
    IFlag=1
    ;;
    "-l")
        LFlag=1
        ;;
    "-*")
        echo $list : wrong
    error
        ;;
    *)
        FFlag=1
        fileList[$FCnt]=$list
        let FCnt=FCnt+1
        ;;
    esac
done

let total=$LFlag+$PFlag+$FFlag+$IFlag
if (( total != 1 ))
then
   error
fi

if [ ! -d $trash ]
then
    'mkdir' $trash
fi

if (( LFlag == 1 ))
then
   'ls' -lgF $trash
   exit 0
fi

if (( PFlag == 1 ))
then
   'rm' $trash/*
   exit 0
fi

if (( IFlag == 1 ))
then
   'rm' -i $trash/*
   exit 0
fi


if ((FFlag == 1 ))
then
   'mv' ${fileList[*]} $trash
   exit 0
fi
exit 0

2 个答案:

答案 0 :(得分:1)

将文件作为. name source脚本执行,该脚本在shell的上下文中运行,而不是作为自己的进程。这意味着它可以修改您的环境。有时这就是你想要的,有时却不是。

如果您不想要它,可以使用chmod +x name或类似内容使脚本可执行。然后,您可以通过指定脚本的路径来执行该脚本。您始终可以提供完整的绝对路径,也可以使用相对路径,.是当前目录,因此./name将在当前目录中查找并运行它。或者,如果将其放在PATH变量的其中一个目录中,shell将只按名称找到它,而不需要路径。

如果您不想使脚本可执行,您可以始终显式运行shell并告诉它处理文件,如bash namename可以在当前目录或任何路径中你要运行的文件。

答案 1 :(得分:0)

#!/bin/bash

首先注意#!之间没有空格

如果您想在没有.的情况下执行shell脚本,则需要将脚本所在的目录添加到PATH

  • sudo vim /etc/profile
  • 在文档末尾添加export PATH="/home/xxxx/bin:$PATH",将/home/xxxx/bin替换为您想要的目录。
  • 保存并退出
  • source /etc/profile

然后,如果没有错误,你可以在每个目录中执行它。