Согласно ссылке моего комментария(Что означает./ (косая черта )в Linux? ), и как вы правильно думаете, слэш(/
)- это каталог "представление".
Однако в ваших двух примерах косая черта обозначает разные вещи:
mv ~/Documents/newfolder./anothernamefolder
переместите newfolder
из Documents
, расположенного в домашнем каталоге пользователя (~
), в текущий каталог(./
)и назовите его anotherfolder
.
Во втором
touch {jan,feb,mar,apr}_{2017..2019}/file{1..100}
Вы трогаете файлы в нескольких каталогах.
Таким образом, для каждого каталога, указанного в команде :{jan,feb,mar,apr}_{2017..2019}
, создайте файлы file{1..100}
.
Why there is "/" here? What does it do? Why I can't type:
Как и выше, ./
представляет текущий каталог.
Если вы использовали
mv ~/Documents/newfolder. anothernamefolder
вы получите сообщение об ошибке, так как будете указывать неоднозначные перенаправления:
$ mv ~/Documents/newfolder. anotherfolder
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source... directory
Вы можете использовать точку .
для перемещения,но это просто переместит папку с именем newfolder
без изменения ее имени.
$ mv ~/Documents/newfolder.
$ ls
newfolder
Вы можете просмотреть аргументы команды для поиска @
или https://
в команде, чтобы найти репозиторий, а затем проанализировать URL-адрес, чтобы извлечь то, что вам нужно
Например, в Python:
import sys
if len(sys.argv) > 1:
for i in sys.argv:
# Do whatever you want (parsing the URL...)
Я придумал хакерский скрипт :/usr/local/bin/git
, который использует идею, упомянутую Николасом. Он основан на функциях --reference-if-able
и --dissociate
, доступных в последних версиях Git.
#!/usr/bin/env bash
# The real executable is located at /usr/local/bin/tig.
command=$1
cache=$HOME/.cache/git/repositories
if [[ ! $command == "clone" ]]; then
/usr/local/bin/tig "$@"
exit
fi
caching=false
for argument in "${@:2}"; do
case $argument in
--reference | --reference-if-able)
caching=false
break
;;
*git@github.com:*)
caching=true
[[ $argument == *.git ]] && argument=${argument%.git}
folder=$cache/$argument
;;
esac
done
if $caching; then
echo "INFO: Using cache: $folder"
/usr/local/bin/tig clone \
--reference-if-able "$folder" --dissociate "${@:2}"
else
/usr/local/bin/tig "$@"
fi
Заявление об ограничении ответственности :Это подходит только для целей разработки. Лучший способ — использовать прокси-сервер Git, например Goblet, как предложил Стивен.