Como outros já mencionaram, -- é usado para delimitar opções de argumentos. Se você executar um programa e especificar algum argumento, o programa não terá como distinguir se os argumentos especificados devem ser interpretados como uma opção de linha de comando ou um argumento. Essa é a razão pela qual um prefixo para opções foi introduzido - / -- ou / no Windows, ou seja, -rf , --help ou /?
Como você pode ter arquivos começando com um prefixo ou qualquer outro nome especial que possa ser interpretado -- foi introduzido para delimitar opções de linha de comando de argumentos normais, ou seja, cada argumento após -- não será tratado como um opção de linha de comando, mas apenas como um argumento. getopt (1) , uma solução padrão para analisar argumentos, por exemplo, suporta o delimitador -- , o que significa que qualquer programa usando getopt suporta automaticamente o delimitador -- .
Se você deseja trabalhar com arquivos que começam com caracteres especiais, como - , também é possível adicionar ./ na frente deles, pois agora eles não começam com - , para que não sejam interpretados como comando opção de linha, para o seu exemplo, seria mkdir ./--abc