Your ls is not GNU ls at all - it’s replaced by:
eza(a modern replacement forls)
What’s happening
Your alias is:
ls -> eza -lh --group-directories-first --icons=auto
So:
ls -lais actually being interpreted byezaezadoes not behave exactly likels- It may not show
.and..entries by design, depending on defaults and flags
Why \ls -la works
\ls -la
This bypasses the alias and runs real /bin/ls.
So:
\ls→ standard Linux behaviorls→ customizedezabehavior
Important clarification
Nothing is “missing” or broken:
.and..still exist- they are just not shown by your
ezaconfiguration
If you want ls to behave normally again
Option 1 - temporary
unalias ls
Then:
ls -la
Option 2 - keep eza, but fix behavior
Modify alias:
alias ls='eza -lah --group-directories-first --icons=auto --all'
Key part:
--all→ ensures dot entries are shown
Option 3 - always use real ls when needed
command ls -la
or
\ls -la
Why eza behaves like this
eza is designed for:
- cleaner output
- hiding clutter by default
- prettier directory views
But it sacrifices some strict POSIX ls behavior unless explicitly configured.
Bottom line
Nothing is locked or corrupted.
You’re just seeing:
lshas been replaced by a tool with different defaults.
If you want, I can help you tune eza so it behaves like classic ls but still keeps icons and colors.