hat ^ symbol no argumento grep

1

Eu me deparei com um script que supostamente facilita a adição de um usuário a um sistema Linux. Eu sou relativamente novo para bash scripts, então eu estou tentando descobrir o que cada linha do script disse está fazendo. Agora estou tentando descobrir o que esta parte do script significa "^$username" qual é a função do ^ antes da variável?

para mais contexto, aqui está a parte do script em que esta variável está:

if [ $(id -u) -eq 0 ]; then
    read -p "Enter username : " username
    read -s -p "Enter password : " password
    egrep "^$username" /etc/passwd >/dev/null
    
por a.smith 24.11.2016 / 11:22

2 respostas

2

É um literal ^ . Nesse caso, ele está sendo transmitido para egrep , que usa expressões regulares estendidas, uma espécie de maneira de especificar um padrão para corresponder em uma determinada string (como uma espécie de globbing / wildcards, mas muito mais poderosa). ^ significa apenas "Isso tem que ser no início da string / linha". Portanto, nesse caso, ele corresponderá a todas as linhas em / etc / passwd que começarem com o conteúdo da variável "username".

(Note que há um bug em potencial aqui, porque se houver um usuário rico e um usuário richard, digitar o nome de usuário rico também corresponderá ao richard).

    
por 24.11.2016 / 11:32
0

Faz parte de uma expressão regular e significa apenas "no início da linha".

Para uma boa lista de expressões regulares, dê uma olhada em grymoire .

    
por 24.11.2016 / 11:32