Я должен переместить файлы от одной папки до другого, но они находятся в полностью различных путях. Целевой путь является таким длинным и усложнил это, я не могу помнить это. Есть ли любой способ перейти сначала к целевому каталогу, затем хранят путь в некоторой переменной, позволяет, предполагают X и затем идут, чтобы получить каталог и записать команду как этот:
mv * $X
Попытка:
cd /your/long/path
X=$(pwd)
Команда pwd
печатает текущий каталог; с командой X=$(pwd)
Вы храните вывод команды в переменной (1) X
(никакие пробелы вокруг =
!)
cd /the/other/dir/
mv * "$X"
Теперь Вы используете значение переменной X
, использование $X
(считайте $ как "значение"). "
это вокруг $X
необходимы, если имя каталога содержит пробелы или другие специальные символы.
Если Вы не уверены в том, что находится в X, можно проверить его содержание с
echo "$X"
(1) в bash
(и другой), окружает, их называют параметрами. Посмотрите, например, здесь для простого учебного руководства, или здесь.
Принятие Вашей оболочки является ударом, можно использовать
pushd /your/long/directory
popd
mv ./* "$OLDPWD"
, $OLDPWD установлен ударом при изменении каталогов.
Предположим, что Вы находитесь теперь в каталоге с файлами, которые Вы хотите переместить, использовать
cd target_dir
cd -
, чтобы сохранить Ваш target_dir в $OLDPWD
переменная и попятиться к Вашему исходному каталогу.
Теперь, можно использовать
mv * "$OLDPWD"
для перемещения файлов в целевой каталог.
<час>Примечания:
$PWD
( Print Working Directory) всегда remebers текущий рабочий каталог.
И $OLDPWD
всегда remebers в последний раз рабочий каталог.
Между прочим, используйте клавишу TAB, чтобы автоматически заполнить Ваш путь при вводе пути.
Некоторое время назад я попытался создать более тщательно продуманную версию X=$(pwd)
и mv * $X
. Результат был чем-то, что я называю "bashPortalGun". Здесь это:
https://github.com/tyukiand/bashPortalGun
Эти сценарии преобразовывают Ваше приглашение оболочки во что-то вроде этого:
me@host [orange -> there] here$
и позволяют Вам делать все, что Вы ожидали бы от "портала оружия", относился к контексту оболочки удара:
me@host ~$ cd /very/long/path
me@host /very/long/path$ pOrange # create orange portal
me@host [orange -> .portal.closed] /very/long/path$ cd /some/other/directory
me@host /some/other/directory$ pBlue # create blue portal
me@host [blue -> path] /some/other/directory$ mv file.txt [orange] # move stuff through portal
, По моему опыту, это делает использование mv
и cd
более удобным, особенно при работе с несколькими оболочками. Возможно, Вы находите его полезным, возможно, Вы просто полагаете, что это охлаждается для имения портала оружия в ударе:)
Мотивированным испытуемым рады. Конструктивная обратная связь будет высоко цениться.
Возможно, легче просто создать временные символьные ссылки вместо переменных.
Это - также не все что "неловкий" для использования автозавершения/предложений "вкладки". Но может зависеть от отдельного .bashrc, я не уверен.
Почему не используют переменные для src и dest-пути? Здесь немного сценария:
IFS='
'
SRC="/PATH/TO/SOURCE-PATH"
DST="/PATH/TO/DEST-PATH"
for i in `ls $SRC`
do
mv $SRC/$i $DST/.
done
IFS важна, если у Вас есть имена файлов с пробелами. Без IFS для цикла делают в некоторых средах, которые располагает с интервалами разрыв строки на этом. ( ИСТОЧНИК )