Comment puis-je faire "ls" afficher les pointsfiles en premier?

Quelque part le long du chemin, j'ai foutu ma commande ls et maintenant je reçois cette commande lors de l'exécution

$ ls -AhHl --color=auto -rwxr-xr-x 1 clang clang 640 Mar 1 02:46 apple-touch-icon-precomposed.png -rwxr-xr-x 1 clang clang 784 Jul 12 02:54 crossdomain.xml -rwxr-xr-x 1 clang clang 1.2K Mar 1 02:46 favicon.ico drwxr-xr-x 8 clang clang 4.0K Jul 12 23:50 .git -rw-r--r-- 1 clang clang 17 Feb 29 19:48 .gitignore -rwxr-xr-x 1 clang clang 1.4K Jul 12 02:54 humans.txt 

Qu'est-ce que j'ai fait qui a fait ignorer les dotfiles et plutôt commander par la première lettre?

Si cela vous aide à voir tous mes fichiers de points ici

Sortie locale :

 $ locale LANG= LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 

Essayez d'ajouter

 export LC_COLLATE="C" 

Dans vos dotfiles, ou en modifiant l'affectation LC_ALL à:

 export LC_ALL="C" 

Cela contrôle la façon dont le tri du niveau de caractère fonctionne – alors que la valeur par défaut serait de trier les fichiers de points en ligne, cela créera la liste de sort fichiers de points en premier.


Pour aller plus loin, citant le manuel GNU Coreutils (accent mine):

Si vous utilisez une localisation non POSIX (p. Ex., En configurant LC_ALL sur en_US ), le tri peut produire une sortie triée différemment de celle que vous avez habituée.

Dans ce cas, réglez la variable d'environnement LC_ALL sur C Notez que le réglage uniquement LC_COLLATE comporte deux problèmes. Tout d'abord, il est inefficace si LC_ALL est également configuré. Deuxièmement, il a un comportement indéfini si LC_CTYPE (ou LANG , si LC_CTYPE est LC_CTYPE ) est défini comme une valeur incompatible. Par exemple, vous obtenez un comportement indéfini si LC_CTYPE est ja_JP.PCK mais LC_COLLATE est en_US.UTF-8 .

Pour éviter tout changement de système sans besoin réel, on ne peut modifier que la manière dont fonctionne l 'utilisateur actuel en ajoutant l'alias au .bashrc :

alias ll='LC_COLLATE=C ls -alF'

Cela trie les fichiers de points en premier, permet de gérer correctement (montrer et trier) des jeux de caractères "peu communs" comme cyrillique. Le seul coupable que le tri sera sensible à la casse.

Source: http://ubuntuforums.org/showthread.php?t=816753

Réglage

 LC_ALL="C.UTF-8" 

Fonctionne bien pour moi – Umlauts et "ls -la" liste les fichiers dot en premier.

Une idée hors du mur

Disclaimer: Il s'agit d'une overkill pour la plupart d'entre vous. Mais je l'ai fait depuis 1995 et j'ai les compétences nécessaires pour faire de mon monde exactement ce que je veux. Alors, pourquoi pas?

J'aime vraiment utiliser différentes méthodes de tri avec ls , en particulier -rt (qui est trié par t modifié par r mail). Alors, j'ai décidé d'essayer quelque chose de fou et d'utiliser awk pour faire mon tri.

 # save as ~/.ls.awk # inpsired by http://superuser.com/questions/448291/how-can-i-make-ls-show-dotfiles-first { if($1 == "total"){ print $0 next } # may need to adjust $9 to match your name column if(match($9, /^(\033\[[0-9]*m)*\./)) # optionally look past xterm highlighting like: ^[[34m df[++dd] = $0 else nf[++nn] = $0 } END{ while (++d in df) print df[d] while (++n in nf) print nf[n] } 

Maintenant, au lieu de définir un alias bash, je définis une fonction bash (car les alias ne peuvent qu'apprendre des arguments à la fin, mais les fonctions peuvent les utiliser n'importe où)

 ll(){ CLICOLOR_FORCE=1 ls -lhA $* | awk -f ~/.ls.awk; } 

Pour voir les résultats

Essayons de créer des exemples de fichiers:

 for n in 4 .4 3 .3 2 .2 1 .1; do touch $n; sleep 1; done 

En utilisant ls simples

 $ ls -lA total 8 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .1 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .2 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .3 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .4 -rwxr-xr-x 1 bbronosky staff 285 Nov 29 13:14 .ls.awk -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 1 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 2 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 3 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 4 $ ls -lArt total 8 -rwxr-xr-x 1 bbronosky staff 285 Nov 29 13:14 .ls.awk -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 4 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .4 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 3 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .3 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 2 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .2 -rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 1 -rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .1 

En utilisant ma fonction qui filtre avec awk

 $ ll total 8 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .1 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .2 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .3 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .4 -rwxr-xr-x 1 bbronosky staff 285B Nov 29 13:14 .ls.awk -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 1 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 2 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 3 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 4 $ ll -rt total 8 -rwxr-xr-x 1 bbronosky staff 285B Nov 29 13:14 .ls.awk -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .4 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .3 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .2 -rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .1 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 4 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 3 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 2 -rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 1 

Vous pouvez voir ma mise en œuvre ici https://github.com/RichardBronosky/dotfiles/commit/6170c0a9