Одна вещь, которая всегда сводила меня с ума, это необходимость сделать
mv file1 tmp
mv file2 file1
mv tmp file2
в одере, чтобы поменять 2 имени файла.
Что вы, ребята, используете для обмена 2 файлами? Есть ли какой-нибудь стандартный скрипт для подкачки? что-то вроде sw file1 file2
было бы неплохо
Я бы предложил использовать скрипт bash вместо того, чтобы играть с bash.conf.
Если вы попадаете в системы Unix, вам нужно будет научиться писать сценарии оболочки.
Было бы предложено добавить в 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 - ваши имена файлов
Я соглашаюсь с 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
Новый вход в систему или оболочки должны быть автоматическими.
Вот именно. Тест только с командой подкачки и необходимо видеть текст использования.
Этот сценарий делает 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
к файлам подкачки.