交换两个文件的脚本

交换两个文件的脚本

有一件事总是让我抓狂,那就是需要做

 mv file1 tmp
 mv file2 file1
 mv tmp file2

为了交换两个文件名。

你们用什么来交换两个文件?有没有标准的交换脚本?类似这样的脚本sw file1 file2就好了

答案1

建议添加bash一个交换两个文件的功能:

nano .bashrc

粘贴至文件底部:

function swap()         
{
  if [ $# -ne 2 ]; then
    echo "Usage: swap file1 file2"
  else
    local TMPFILE=$(mktemp)
    mv "$1" $TMPFILE
    mv "$2" "$1"
    mv $TMPFILE "$2"
  fi
}

注销/登录或运行:

source .bashrc

要交换两个文件,请运行:

swap x y

其中 x 和 y 是你的文件名

来源

答案2

我建议使用 bash 脚本,而不是使用 bash.conf。

如果您要进入 Unix 系统,那么您将需要在某个时候学习 shell 脚本。

答案3

这个脚本做了两件事:

  • 检查你是否错误地使用了错误数量的参数
  • 检查两个参数是否都是文件(不要输入错误并使用目录或其他东西)。

如果这两项检查中的任何一项失败,它会告诉您如何运行脚本,否则您的文件将被交换。

#! /bin/sh

if [ ! $# = 2 -o ! -f $1 -o ! -f $2 ]
then
    echo "Usage: `basename $0` file1 file2."
    exit
fi

mv $1 cop_$1
mv $2 $1
mv cop_$1 $2

将其保存在您的家中,使用chmod +x <scriptname>.sh使其可执行,/usr/bin/使用命令将其移动到您的sudo cp <scriptname>.sh /usr/bin/

现在您可以用来<nameofthescrip> file1 file2交换文件。

答案4

我同意 Bruno 的观点,shell 脚本更适合添加命令类型功能。我提供一些其他建议:

1- 对于用法,不要在消息末尾添加句点。您试图显示语法,而消息“用法:交换文件 1 文件 2。”可能具有误导性,它不是一个句子,应该只是说:“用法:交换文件 1 文件 2”

2- 将文件放在 /use/bin 中使其成为系统命令。虽然您的个人 Ubuntu 安装可能会容忍这种情况,但当您决定从头开始重新安装时,您会捕获主目录,而不是 /usr/bin。我建议您创建 $HOME/bin,将其添加到您的搜索路径,并将所有脚本放在该目录中。您的 bin 目录是您个人的附加命令宝库。

3-如果您将函数放在 bashrc 中,那么它仅在 bash shell 中可用,如果您希望无论使用哪个 shell 都可以使用 swap,那么 bin 目录中的 shell 脚本更加通用和标准。

4- 在脚本中,我建议将 Usage 输出后的退出改为“exit 1”,并在最后一行(第三个 mv 命令)后添加“exit 0”。退出代码表示成功或失败。如果您曾经编写过其他使用 swap 的脚本,他们可以检查退出代码以查看是成功还是失败。

5- 我建议使用 mktemp 函数,而不是 cop_$1(它假设文件 cop_ 不存在),使用 --tmpdir 选项它会在当前目录中创建临时文件。这样可以保证文件名不会冲突。

综上所述,我提出以下几点:

#!/bin/sh 
if [ ! $# = 2 ] ; then
    echo "Usage: `basename $0` file1 file2"
    echo "Two file names are required."
    exit 1
fi
if [ ! -f $1 -o ! -f $2 ] ; then
    echo "Usage: `basename $0` file1 file2"
    echo "Only file names are allowed."
    exit 1
fi

TEMP=`mktemp --tmpdir=.`

mv $1 ${TEMP}
mv $2 $1
mv ${TEMP} $2
exit 0

现在将其放入主目录下的 bin 目录中。确保您的 PATH 变量选择此主目录echo $PATH。如果没有,则 PATH 在您的 shell 初始化资源(.bashrc 或 .cshrc 或 ???)中设置。

cd
mkdir bin
nano swap
< now paste the above script into the file, save, and exit>
chmod 755 swap
nano $HOME/.bashrc
< now add the following 2 lines at the end of the file, save, and exit>
# user specific pathing
PATH="$HOME/bin:$PATH"

现在您可以启动一个新的 bash shell,或者重新处理 .bashrc 文件:

source .bashrc

新的登录或 shell 应该是自动的。

就是这样。仅使用 swap 命令进行测试,您就会看到使用文本。

相关内容