Скажите, что я делаю это:
cd subdir
git init
cd ../
Существует ли способ сделать это с единственной командой, или возможно два, вместо того, чтобы иметь необходимость приблизиться и из каталога для выполнения команды туда?
(Не поиск определенного для мерзавца решения; это - просто пример.)
Не точно, что Вы спрашиваете (у Вас есть реальные ответы выше с подоболочкой), но смотрят на pushd
и popd
У Вас есть несколько опций. Можно или сгруппировать команды с &&
или ;
. Как это:
cd subdir && git init && cd ..
или
cd subdir; git init; cd ..
Различие между ними - то, что в первом примере, если один из сбоев команд, он не выполнит остальную часть их. Во втором примере все команды будут работать несмотря ни на что.
Другая опция состояла бы в том, чтобы определить функцию и использовать ее, например:
function cdinit() {
cd $1
git init
cd ..
}
Затем можно выполнить команду:
cdinit subdir
И это будет автоматически git init
в том каталоге и перемещении из него.
Вы могли также сделать более сложное решение с помощью функции, если Вы имеете набор каталогов и хотите git init
их с одной командой.
function cdinit() {
for arg in $@
do
cd $arg
git init
cd ..
done
}
Можно затем выполнить это с:
cdinit subdir1 subdir2 subdir3
И это сделает git init
в subdir1
, subdir2
, и subdir3
.
Необходимо скачкообразно двинуться в целевой каталог, если команда не имеет параметра имени файла или имени каталога.
Но можно записать сценарий удара, который берет целевой каталог и команду как параметры. Для этого Вы могли смотреть на pushd и popd: http://ss64.com/bash/pushd.html
Я записал бы, что мало сценария для Вас, но у меня нет поля Linux здесь :)
Программы имеют различные способы обработать аргументы, таким образом, у некоторых будет некоторый эквивалент-folder=name опции. Кроме того исключение, стандарт, даже на MS DOS, просто
Программа $ subdir
Иногда Вам нужно
Программа $ subdir/
Программа откроет папку, работу с нею, тот же способ, которым Вы работаете с файлом, и когда-то законченный, возвращает управление Вашей оболочке, на которую указывают на Ваш исходный стандартный каталог. Программы обработали этот путь, ДЕЙСТВИТЕЛЬНО имеют проблему, что ошибочные выводы (как дампы ядра) переходят к файлу в текущем каталоге Вашей оболочки (а не subdir.)
Нет никакого обходного решения, если программа не имеет командные коммутаторы в наличии для определения другого места. Некоторые программисты берут артистическую лицензию между "программой каталога, был назван от", и "программе каталога сказали работать в".