Возможно ли настроить команду ls так, чтобы при использовании ls -l она добавляет имя ветки git после имени каталога, если каталог представляет собой репозиторий git?
Это Кстати, я могу быстро найти git-репозитории в текущем каталоге, а также их рабочий статус.
Что-то вроде этого:
-rw-rw-r-- 1 michael michael 8 Aug 26 02:07 a-file
drwxrwxr-x 3 michael michael 4096 Aug 26 02:07 a-repo/ (master)
drwxrwxr-x 2 michael michael 4096 Aug 26 02:07 not-a-repo/
Примечание: я не хочу показывать git branch для текущего каталога или как часть командной строки, которую я уже знаю как
OK ... Увидев, что нет встроенного способа сделать это, я пошел вперед и написал свою собственную программу Python. Вы можете получить его с помощью pip:
pip3 install mklsgit
В настоящее время поддерживается только Python3.
Ссылка GitHub
OK ... Увидев, что нет встроенного способа сделать это, я пошел вперед и написал свою собственную программу Python. Вы можете получить его с помощью pip:
pip3 install mklsgit
В настоящее время поддерживается только Python3.
Ссылка GitHub
OK ... Увидев, что нет встроенного способа сделать это, я пошел вперед и написал свою собственную программу Python. Вы можете получить его с помощью pip:
pip3 install mklsgit
В настоящее время поддерживается только Python3.
Ссылка GitHub
Я написал небольшую функцию Bash, используя в основном awk для обработки вывода ls и добавления имен ветвей git в каталоги, если они являются частью репозиториев.
Чтобы установить эту функцию, просто скопируйте приведенную ниже строку и добавьте ее в конец вашего ~/.bashrc файла. После этого вы должны source .bashrc или перезапустить сеанс оболочки, чтобы изменения вступили в силу.
lg (){ ls -alF "$@"|awk '{match($0,/^(\S+\s+){8}(.+)$/,f);b="";c="git -C \""f[2]"\" branch 2>/dev/null";while((c|getline g)>0){if(match(g,/^\* (.+)$/,a)){b="("a[1]")"}};close(c);print$0,b}';}
После этого у вас будет новая команда lg, которая будет вести себя как по умолчанию ll ] [3]
Вот пример вывода, а не названия ветвей в фигурных скобках позади git1/ и git2/:
$ lg
total 48
drwxrwxr-x 12 bytecommander bytecommander 4096 Aug 26 14:48 ./
drwxr-xr-x 74 bytecommander bytecommander 4096 Aug 26 15:30 ../
drwxrwxr-x 6 bytecommander bytecommander 4096 Aug 26 14:43 git1/ (master)
drwxrwxr-x 7 bytecommander bytecommander 4096 Aug 26 14:42 git2/ (develop)
drwxrwxr-x 4 bytecommander bytecommander 4096 Aug 26 14:45 no-git/
-rw-rw-r-- 1 bytecommander bytecommander 0 Aug 26 14:42 regular-file
Команда lg все еще принимает всевозможные аргументы, как это делает ls. Вы можете, например, run lg -h, lg ~/projects, lg .. и т. д.
Если вы столкнулись с большим количеством проблем или узнаете решение для одной из перечисленных проблем, не стесняйтесь оставлять комментарий.
Я написал небольшую функцию Bash, используя в основном awk для обработки вывода ls и добавления имен ветвей git в каталоги, если они являются частью репозиториев.
Чтобы установить эту функцию, просто скопируйте приведенную ниже строку и добавьте ее в конец вашего ~/.bashrc файла. После этого вы должны source .bashrc или перезапустить сеанс оболочки, чтобы изменения вступили в силу.
lg (){ ls -alF "$@"|awk '{match($0,/^(\S+\s+){8}(.+)$/,f);b="";c="git -C \""f[2]"\" branch 2>/dev/null";while((c|getline g)>0){if(match(g,/^\* (.+)$/,a)){b="("a[1]")"}};close(c);print$0,b}';}
После этого у вас будет новая команда lg, которая будет вести себя как по умолчанию ll ] [3]
Вот пример вывода, а не названия ветвей в фигурных скобках позади git1/ и git2/:
$ lg
total 48
drwxrwxr-x 12 bytecommander bytecommander 4096 Aug 26 14:48 ./
drwxr-xr-x 74 bytecommander bytecommander 4096 Aug 26 15:30 ../
drwxrwxr-x 6 bytecommander bytecommander 4096 Aug 26 14:43 git1/ (master)
drwxrwxr-x 7 bytecommander bytecommander 4096 Aug 26 14:42 git2/ (develop)
drwxrwxr-x 4 bytecommander bytecommander 4096 Aug 26 14:45 no-git/
-rw-rw-r-- 1 bytecommander bytecommander 0 Aug 26 14:42 regular-file
Команда lg все еще принимает всевозможные аргументы, как это делает ls. Вы можете, например, run lg -h, lg ~/projects, lg .. и т. д.
Если вы столкнулись с большим количеством проблем или узнаете решение для одной из перечисленных проблем, не стесняйтесь оставлять комментарий.
Я написал небольшую функцию Bash, используя в основном awk для обработки вывода ls и добавления имен ветвей git в каталоги, если они являются частью репозиториев.
Чтобы установить эту функцию, просто скопируйте приведенную ниже строку и добавьте ее в конец вашего ~/.bashrc файла. После этого вы должны source .bashrc или перезапустить сеанс оболочки, чтобы изменения вступили в силу.
lg (){ ls -alF "$@"|awk '{match($0,/^(\S+\s+){8}(.+)$/,f);b="";c="git -C \""f[2]"\" branch 2>/dev/null";while((c|getline g)>0){if(match(g,/^\* (.+)$/,a)){b="("a[1]")"}};close(c);print$0,b}';}
После этого у вас будет новая команда lg, которая будет вести себя как по умолчанию ll ] [3]
Вот пример вывода, а не названия ветвей в фигурных скобках позади git1/ и git2/:
$ lg
total 48
drwxrwxr-x 12 bytecommander bytecommander 4096 Aug 26 14:48 ./
drwxr-xr-x 74 bytecommander bytecommander 4096 Aug 26 15:30 ../
drwxrwxr-x 6 bytecommander bytecommander 4096 Aug 26 14:43 git1/ (master)
drwxrwxr-x 7 bytecommander bytecommander 4096 Aug 26 14:42 git2/ (develop)
drwxrwxr-x 4 bytecommander bytecommander 4096 Aug 26 14:45 no-git/
-rw-rw-r-- 1 bytecommander bytecommander 0 Aug 26 14:42 regular-file
Команда lg все еще принимает всевозможные аргументы, как это делает ls. Вы можете, например, run lg -h, lg ~/projects, lg .. и т. д.
Если вы столкнулись с большим количеством проблем или узнаете решение для одной из перечисленных проблем, не стесняйтесь оставлять комментарий.