Wspominałem już kilka razy na tym blogu, jakim genialnym narzędziem jest Cygwin. Czasem jednak nie wszystko jest takie proste jak wykorzystanie jego instalatora do „wyklikania” odpowiednich narzędzi i kliknięcia przycisku „dalej”. Jednym z najgorszych typów problemów, z jakimi miałem okazję się zetknąć były te kompletnie nieintuicyjne, które po prostu wymagały odpowiedniej wiedzy, żeby być świadomym możliwego rozwiązania. Takim problemem był właśnie tytułowy brak polecenia clear, bardzo przydatnego podczas pracy w konsoli.
Problem.
Problem powstał w momencie, kiedy zechciałem sobie wyczyścić okienko konsoli i nieświadomy nadchodzącego problemu wpisałem w konsolę dobrze każdemu znane polecenie „clear” [odpowiednik "cls" z interpretera poleceń cmd.exe znanego z systemów rodziny Windows]. Konsola szybko poinformowała mnie o błędzie za pomocą komunikatu:
bash: clear: command not found.
Lekko zdziwiony wpatrywałem się w „czarne okno” próbując doszukać się jakiegoś drugiego dna w wyświetlonym napisie, ale po chwili stwierdziłem, że trudno – nie ma, to nie ma, trzeba zainstalować. Otworzyłem instalator Cygwina i znalazłem to, czego szukałem. Nie, nie miałem na myśli rozwiązania – znalazłem moje drugie dno.
Otóż, prawdziwy problem polegał na tym, że rzeczonego polecenia clear, a raczej programu o tej samej nazwie realizującego to polecenie nie było na liście możliwych do zainstalowania. Spowodowało to moją lekką konsternację, ponieważ nie przewidziałem braku tak podstawowego narzędzia wśród tylu wspaniałych Linuksowych narzędzi przeportowanych na „jedyny słuszny” system operacyjny.
Szybko zapytałem Wujka Google o co tu chodzi i po chwili okazało się, że jednak tym razem komputer ma rację. Przy okazji okazało się także, że wcale nie trzeba mieć go zainstalowanego, żeby korzystać z dobrodziejstw czyszczenia ekranu – są możliwe też inne sztuczki pozwalające na uzyskanie tego samego efektu przy użyciu samej konsoli. ;]
Rozwiązanie.
Jak zapewne się domyślacie, program clear nie był oddzielną paczką, był zawarty w innej, większej paczce narzędzi. Jak myślicie, gdzie się ukrył? A jakże – w zbiorze narzędzi przeznaczonych do operacji na oknie konsoli, w tym przypadku była to biblioteka ncurses. Wystarczy zainstalować ją poprzez instalator Cygwina [drzewo Utils -> ncurses] i można się już cieszyć wspomnianą wyżej funkcjonalnością.
Tak jak powiedziałem, był to jeden z problemów, w przypadku których praktycznie niemożliwe było domyślenie się o co dokładnie chodzi, także tym większą radość mam z rozwiązania go i poszerzenia swojej „wiedzy”.
Podsumowanie.
Ciekaw jestem, czy Wy też mieliście takie „przejścia” z Cygwinem i co o nim sądzicie. Będę wdzięczny za wszelkie informacje na temat – a nuż wypłynie z tego jakiś nowy temat na wpis? Chętnie wspomnę wtedy o autorze komentarza sponsorującego dany problem. ;] Tymczasem do zobaczenia już w piątek!
Warto przeczytać.
Trwa ładowanie…
Kurcze, jak mnie to też irytowało! Można to też rozwiązać w trzy inne, poniższe sposoby, bez dodatkowych instalacji.
1) W pliku .bashrc wpisujemy alias clear=’echo -e „\E[2J”‘
2) W pliku .inputrc wpisujemy „\C-l”: clear-screen
3) Naciskamy skrót klawiaturowy Ctrl+L
Kurczę, Scottie, zabrałeś mi temat na kolejny wpis. ;] Niedługo po opublikowaniu tego znalazłem właśnie te same informacje i zamierzałem wrzucić je jako jakiś wpis komplementarny do tego. ;]
Spoko! :)
Przed napisaniem wpisu sprawdź, bo chyba się pomyliłem. Żeby zadziałało Ad 3) czyli Ctrl+L, to trzeba chyba najpierw wpisać Ad 2). Do sprawdzenia…
Nie, wszystko się zgadza – jeśli cokolwiek byłoby złego, to przecież wypunktowałbym, bo wszystko zawsze sprawdzam i konfrontuję ze swoimi źródłami. Moi Czytelnicy zawsze dostają dokładnie sprawdzone informacje – nie publikuję nigdy czegoś, na co nie mam poparcia w innych wpisach / artykułach w Internecie albo w książkach.
Chyba najlepszym pomysłem będzie, jeśli nowy wpis pojawi się z podziękowaniami dla Ciebie. ;]
@TK: Nie trzeba. Serio! :) Te informacje można spokojnie znaleźć w Internecie, a ja po prostu je zebrałem w całość. Także luz.
PS Warto jeszcze na koniec zaznaczyć, że jeżeli ktoś w Cygwinie ustawione ma w linii poleceń vi („set -o vi”) to standardowo Ctrl+L nie zadziała. Trzeba ten skrót poprzedzić naciśnięciem Esc. Tę niedogodność rozwiązujemy stosując właśnie Ad 2).
Ależ nic się nie stało, po prostu wydaje mi się, że Czytelników, szczególnie tak aktywnych jak Ty wypada wynagrodzić za wniesiony wkład w treść blogu. ;] Wszystko można znaleźć w Internecie, liczy się właśnie to, że tacy bloggerzy jak ja wykonują dodatkową pracę wyszukując problemy i ich rozwiązania, opisując je potem w swoim serwisie. W zamian Czytelnicy mają wszystko podane jak na tacy i chętnie wracają po nowe teksty. ;]
Jeśli więc nie zgłosisz wyraźnego sprzeciwu, pozwól, że zamieszczę zwyczajną informację o tym, że pomogłeś w znalezieniu materiałów do tego wpisu. Tym bardziej, że komentarzem powyżej wnosisz już zupełnie nowe informacje i szczegóły, których ja nie miałem i prawdopodobnie nie zawarłbym ich w tworzonym tekście.
Przy okazji – skoro tak dokładnie zgłębiłeś cały temat, może zechciałbyś napisać wpis gościnny? Ukazałby się we wtorek w serii „krótkich porad” dokładnie tak, jak ten – prototypowy tytuł brzmiałby: „[Bash] Alternatywy dla polecenia clear.”.
OK, OK, zero sprzeciwu! :)
> może zechciałbyś napisać wpis gościnny?
Dzięki, ale nie za bardzo nadaję się na pisarza – w szkole, z polaka miałem same dwóje. ;-) Nie mam tej smykałki i takiej umiejętności jak Ty – swobodnego i zrozumiałego przelewania myśli na papier. Także resztę roboty pozostawiam Tobie. :)
No to fajnie. ;]
Co do wpisu gościnnego – oczywiście szanuję Twój wybór, aczkolwiek jakbyś chciał się wykazać, to chętnie udostępnię Ci taką możliwość.
Ja też nigdy nie byłem jakiś specjalnie zdolny w kwestii języka polskiego – byłem dobry z ortografii, czyli dyktanda i te sprawy, ale „humanistycznie” to mocno średnio radziłem sobie w szkole. Dobrze wiedzieć, że uważasz moje „pismo” za zrozumiałe – ja uważam, że jest jeszcze sporo do naprawy w tej kwestii. ;]
Przy okazji – co sądzisz na temat „pierwiastka prywatnego”, czyli całego wstępu nakreślającego historię? Powinno być go mniej, więcej, jest w sam raz? Cały czas waham się jaka objętość tej mojej twórczości w stosunku do faktycznego rozwiązania problemu będzie optymalna.
Przyjmuję „resztę roboty” – do zobaczenia we wtorek!
Pingback: Cygwin: Polecenie clear bez instalacji pakietu ncurses. « Tomasz Kowalczyk