-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjonas
executable file
·136 lines (110 loc) · 3.81 KB
/
jonas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
#
# Jonas (Shell Script)
#
# Objetivo: Criar atalhos para pastas e aliases permanentes.
#
# Site: http://www.geofisicando.com
#
# Versão 1.0
#
# Programador: Rodolfo A. C. Neves (Dirack) 27/12/2018
#
# email: [email protected]
#
# Licença: Software de uso livre e código aberto.
# Biblioteca de funções para formatar a mensagem de ajuda
source mensagemAjuda
# Biblioteca de funções para formatar a mensagem de erro
source mensagemErro
# Versão atual do programa
VERSAO="Versão 1.0"
ALIAS_FILE="$HOME/.bash_aliases"
# Verificar se o arquivo de aliases existe
[ -f "$ALIAS_FILE" ] || {
touch "$ALIAS_FILE"
}
# Verificar se o usuário passou parâmetros para o programa
if [ -z "$1" ]
then
MENSAGEMERRO="Usuário não ofereceu parâmetros ao programa!\nDigite $(basename $0) -h para obter ajuda!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "1" "$MENSAGEMERRO"
fi
NOME_PROGRAMA="$(basename $0)"
DESCRICAO="Criar atalhos para pastas e aliases permanentes armazenados em ~/.bash_aliases"
PARAMETROS="-h --help::Exibe este menu e sai
-v --version::Exibe a versão do programa e sai
-a ::Gera atalho para a pasta atual (alias)
-c ::Gera comando personalizado (alias)
-l --list::Exibe a lista de aliases já cadastrados"
EXEMPLO_DE_USO="~$ jonas -a # Criar atalho para a pasta atual
\t~$ jonas -c # Cria um comando personalizado
\t~$ jonas -l # Lista todos os aliases cadastrados
\t~$ jonas -l SHELL # Lista um alias com nome SHELL"
case "$1" in
-h | --help)
exibirMensagemAjudaProgramaFormatada "$NOME_PROGRAMA" "$DESCRICAO" "$PARAMETROS" "$EXEMPLO_DE_USO"
exit 0
;;
-v | --version)
echo "$VERSAO"
exit 0
;;
-a)
# Peça para o usuário dar nome ao atalho
echo -e "Criando atalho para a pasta\n $PWD\n"
read -p "Dê nome ao atalho: " nome
# Verificar se algum nome foi passado ao atalho
[ -z "$nome" ] && {
MENSAGEMERRO="Usuário não deu nenhum nome ao atalho!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "2" "$MENSAGEMERRO"
}
# Verificar se o alias já existe
lista=$(cut -d" " -f2 "$ALIAS_FILE" | cut -d "=" -f1 | grep -x "$nome")
[ -n "$lista" ] && {
MENSAGEMERRO="O alias $apelido já está cadastrado!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "4" "$MENSAGEMERRO"
}
# Guarda a localização atual, substitua os espaços por '\ '
atalho=$(pwd | sed 's/ /\\ /g')
## escreva o atalho criado no arquivo de aliases
echo alias $nome=\"cd $atalho\" >> "$ALIAS_FILE"
echo "Atalho criado com sucesso!"
exit 0
;;
-c)
##gerar comando personalizado
read -p "Digite o apelido (alias) do comando: " apelido
# Verificar se algum apelido foi passado ao atalho
[ -z "$apelido" ] && {
MENSAGEMERRO="Usuário não deu nenhum apelido ao atalho!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "3" "$MENSAGEMERRO"
}
# Verificar se o alias já existe
lista=$(cut -d" " -f2 "$ALIAS_FILE" | cut -d "=" -f1 | grep -x "$apelido")
[ -n "$lista" ] && {
MENSAGEMERRO="O alias $apelido já está cadastrado!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "4" "$MENSAGEMERRO"
}
read -p "Digite o comando: " comando
# Verificar se algum comando foi passado pelo usuário
[ -z "$comando" ] && {
MENSAGEMERRO="Usuário não passou nenhum comando!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "5" "$MENSAGEMERRO"
}
##escreva o comando no arquivo .aliases.sh
echo alias $apelido=\"$comando\" >> "$ALIAS_FILE"
exit 0
;;
-l | --list ) ## Exibir a lista de aliases já cadastrados
[ -z "$2" ] && {
grep "alias" "$ALIAS_FILE" | cut -d" " -f2 | cut -d "=" -f1
exit 0
}
grep "alias" "$ALIAS_FILE" | grep "$2"
;;
*)
MENSAGEMERRO="Opção $1 desconhecida!\nDigite $0 -h para obter ajuda."
exibirMensagemErroProgramaFormatada "$(basename $0)" "6" "$MENSAGEMERRO"
;;
esac