Losowe słowo

Jakiś czas temu pisałem o programiku pass, który, między innymi, potrafi tworzyć losowe hasła. Czasem jednak potrzebuję na szybko jakieś losowe słowo. Na przykład, żeby ustawić je do ciasteczek. Znalazłem taką funkcję dla Basha:

 

losowik()
{
  cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1
}

w pewnym komentarzu na Githubie. Proste i działa, tak jak lubię. Ale co z tym zrobić? Trzeba te cztery linijki dopisać do .bashrc i uruchomić nowy terminal, albo się na chwilę wylogować.

Potem wpisuję do terminala: losowik 22 i mam słowo na 22 alfanumeryczne znaki. Już wyjaśniam o co w tym chodzi:

  • cat wypisuje na standardowym wyjściu zawartość pliku /dev/urandom
  • jako, że nie chcemy go w całości, filtrujemy go „rurką” |
  • tr to taki mieszajnik do znaków; potrafi usuwać podany znak (-d), oraz zastępować go innym (-c); w naszym przypadku zastępuje znaki niealfabetyczne (które również są w urandom), alfabetycznymi,
  • fold skraca każdą linijkę urandoma do 32 znaków (linijki bywają dłuższe),
  • head wyświetla fragment tekstu, w tym przypadku pierwszą linijkę.

Trochę to zawiłe i pewnie da się to zrobić w bardziej elegancki sposób, ale lubię rurkować komendy i potem nieco poprawiać całą składnię pod siebie. Możliwe, że jeszcze to poprawię i dam znać, kiedy wymyślę coś ciekawego.