скрипт для обмена двумя файлами

Одна вещь, которая всегда сводила меня с ума, это необходимость сделать

 mv file1 tmp
 mv file2 file1
 mv tmp file2

в одере, чтобы поменять 2 имени файла.

Что вы, ребята, используете для обмена 2 файлами? Есть ли какой-нибудь стандартный скрипт для подкачки? что-то вроде sw file1 file2 было бы неплохо

6
задан 21 October 2011 в 05:42

4 ответа

Я бы предложил использовать скрипт bash вместо того, чтобы играть с bash.conf.

Если вы попадаете в системы Unix, вам нужно будет научиться писать сценарии оболочки.

0
ответ дан 21 October 2011 в 05:42

Было бы предложено добавить в 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 - ваши имена файлов

источник

0
ответ дан 21 October 2011 в 05:42

Я соглашаюсь с Bruno, сценарий оболочки является больше нормой для добавления функциональности типа команды. Я предлагаю дополнительные предложения:

1-для Использования, не включайте период в конце сообщения. Вы пытаетесь показать синтаксис и сообщение "Использование: file1 file2 подкачки". возможно вводит в заблуждение, это не предложение и должно просто сказать: "Использование: file1 file2 подкачки"

2-Размещений файла в/use/bin делают это системной командой. В то время как Ваша персональная установка Ubuntu может терпеть это, когда Вы решили переустановить с нуля, Вы получаете свой корневой каталог, не/usr/bin. Я предлагаю, чтобы Вы создали $HOME/bin, добавили, что к Вашему пути поиска, и помещают все Ваши сценарии в тот каталог. Ваш каталог bin является Вашей персональной находкой дополнительных команд.

3-при размещении функции в bashrc затем, это только доступно в оболочке удара, если Вы хотите подкачку, доступную независимо от оболочки, затем сценарий оболочки в каталоге bin является более универсальным и стандартным.

4-В сценарии я предполагаю, что выход после Использования произвел быть измененным для "выхода 1" и после того, как последняя строка (третья команда мВ) добавляет "выход 0". Код выхода указывает на успешность или неуспешность. Если Вы когда-нибудь пишете другие сценарии, которые используют подкачку, они могут проверить код выхода, чтобы видеть, была ли успешность или неуспешность.

5-Вместо cop_ 1$, который принимает файл, cop_ не существует, я предлагаю функцию mktemp, с помощью - 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 в соответствии с Вашим корневым каталогом. Удостоверьтесь, что Ваша переменная ПУТИ забирает этот корневой каталог echo $PATH. Если это не делает, ПУТЬ установлен в Ваших ресурсах инициализации оболочки (.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"

Теперь Вы или запускаете новую оболочку удара или повторно обрабатываете .bashrc файл:

source .bashrc

Новый вход в систему или оболочки должны быть автоматическими.

Вот именно. Тест только с командой подкачки и необходимо видеть текст использования.

1
ответ дан 21 October 2011 в 05:42

Этот сценарий делает 2 вещи:

  • проверки, если Вы по ошибке не использовали неправильное количество аргументов
  • проверки, если обоими аргументами являются файлы (не вводят с опечаткой и используют каталог или что-то).

Если это приведет какую-либо к сбою из тех 2 проверок, то это скажет Вам, как запустить скрипт, еще Вам подкачают Ваши файлы.

#! /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 к файлам подкачки.

1
ответ дан 21 October 2011 в 05:42

Другие вопросы по тегам:

Похожие вопросы: