Os elementos ~e $são do prompt da linha de comandos . Isso indica que seu computador (ou mais exatamente, eu acho, o shell que você está executando) está aguardando a entrada do usuário. Ele está solicitando que você insira um comando.
O $é apenas um separador ou divisor. Ele separa o prompt de comando do comando a seguir. Quando as pessoas escrevem coisas como $ sudo apt-get update(seu exemplo), estão simplesmente dizendo que o comando, nesse caso sudo apt-get update, precisa ser digitado em um prompt de comando. A rigor, talvez, o $seja redundante nesse contexto.
Outros separadores podem ser usados em outras situações. Por exemplo, #é usado para um shell raiz.
O ~(chamado 'til') é uma abreviação para o seu diretório pessoal. Quando aparece em um prompt de comando, por exemplo, user@hostame:~$indica que o diretório de trabalho atual é o diretório inicial. Portanto, se você executar o comando list ls, sem especificar nenhum diretório específico, ele listará o conteúdo do diretório inicial.
(A propósito $HOME,, não é um comando, como você sugere, mas uma variável de ambiente . Determina a localização do seu diretório pessoal. Você pode ver seu valor executando $ echo $HOME.)
$por `` 'como símbolo de prompt). Você pode alterar seu prompt, definindo aPS1variável de ambiente ao seu gosto.