Existem alguns problemas com o que você está tentando. Primeiro de tudo, para definir o valor de uma variável, você não pode ter espaços em torno do =
. Então, para capturar a saída de um comando, você precisa de backtics ou, preferencialmente, de $()
.
Finalmente, e mais importante, você não deve analisar ls
, é muito difícil fazer bem e ser extremamente propenso a erros. Sua abordagem será interrompida se o nome do diretório contiver um espaço, por exemplo. Nos exemplos abaixo, qual é o campo 8th
?
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Nov 11 14:59 file1
-rw-r--r-- 1 terdon terdon 0 Nov 11 2013 file2
-rw-r--r-- 1 terdon terdon 0 Nov 11 15:00 file 2
-----
|--------> 8th field
O nome do arquivo / diretório pode ser o nono campo, ou pode ser o nono e décimo campos, ou até mais. Além disso, o formato de data pode mudar entre as localidades. Basicamente, usar ls
para isso é uma ideia horrível. Em vez disso, use stat
e classifique por hora:
$ cesta=$(stat --printf "%X\t%n\n" * | sort -nk1,1 | cut -f 2- | awk 'NR==2')
$ cd "$cesta"