Cygwin-terminalopdrachten. Wat is Cygwin. Met behulp van de native Cygwin-terminal

Om aanvragen te schrijven voor Unix het is niet nodig om het te installeren (onder het woord Unix Ik zal over alles nadenken *nix systemen). Deze bewering klinkt nogal paradoxaal, maar het is waar, en in dit artikel zal ik proberen je hiervan te overtuigen.

Als je geen echte Unix-goeroe bent, kun je een paar applicaties voor dit besturingssysteem schrijven of compileren bestaande programma's je hoeft helemaal niet te installeren Unix. Een emulator is perfect voor deze doeleinden. Unix. Er zijn veel geweldige programma's die deze taak perfect uitvoeren, bijvoorbeeld: UWin, MinGW, Cygwin enz.

Eenvoudig te compileren programma's zullen doen En MinGW, maar voor complexere is het niet geschikt. Uwin is een geavanceerdere emulator, maar de functionaliteit ervan is aanzienlijk inferieur aan die van een andere, meer populaire emulator Cygwin.

Cygwin- het is zeer functioneel, gratis emulator Unix. Het wordt gedistribueerd als één enkel bestand ( setup.exe), laat u niet misleiden door de grootte van dit bestand ( ~300 kb), dit is hijzelf niet Cygwin, maar alleen het installatieprogramma. Alle noodzakelijke nutsvoorzieningen en bibliotheken moeten afzonderlijk worden gedownload tijdens het installatieproces, of geef indien nodig een lokale map op als bron benodigde bestanden dat heb je al.

Cygwin bevat een groot aantal verschillende hulpprogramma's en bibliotheken, waarvan u er vele waarschijnlijk nooit nodig zult hebben, maar tijdens de installatie Cygwin Hiermee kunt u alleen de componenten selecteren die u nodig heeft. Als u dus alleen het programma wilt compileren, hoeft u alleen de compiler te installeren GCC, uitrusting benodigde bibliotheken en nut maken. Persoonlijk heb ik alle applicaties geïnstalleerd omdat Cygwin maakt het gemakkelijk om er op elk moment van af te komen. In werkelijkheid Cygwin bestaat uit slechts één bestand cygwin1.dll, al het andere is softwarepakketten GNU, speciaal opnieuw gecompileerd om mee te werken Cygwin.



Volgens mij waren er geen problemen met de installatie. Laten we nu eens kijken naar een paar subtiliteiten bij het instellen en gebruiken Cygwin. Na de installatie zal de structuur van de map waarin het programma is geïnstalleerd, op de structuur lijken *nix systemen. Om te lanceren Cygwin, gewoon rennen BAT-bestand, cygwin.bat, die zich in de hoofdmap bevindt Cygwin(met rootdirectory bedoelen we de map waarin de Cygwin, in de toekomst zullen we uit deze catalogus tellen). Na de lancering BAT-bestand Er verschijnt een console-applicatie voor je. Dit is degene Bas, wat de verbinding is tussen Unix En Ramen. Bas- dit is niet alleen een analoog cmd.exe. Bas is een volwaardige programmeertaal waarin je scripts kunt schrijven om uit te voeren diverse taken. Dit is precies wat het fundamenteel anders maakt cmd.exe (commando.com).

Uitnodiging Bas, praktisch niet anders dan cmd.exe (~ - betekent jouw thuismap). Er zijn hier geen logische schijven (A, C, D, enz.), het aftellen vindt plaats vanaf de hoofdmap die is aangeduid met " / "Je moet ook niet vergeten dat de zaak hier belangrijk is, dus Enz En enz- twee totaal verschillende catalogi. Laten we proberen naar de hoofdmap te gaan. Voer hiervoor gewoon de opdracht uit die u kent " CD/" (~ zou moeten veranderen / ). Typ daarna het commando " richt", of " ls", om de inhoud van de hoofdmap te bekijken. Ik denk dat je nu begrijpt wat de hoofdmap is.





Ik kan niet alle opdrachten in dit artikel beschrijven, dus laten we meteen naar de eigenlijke gaan. belangrijke fase, waarvoor we eigenlijk zijn ingesteld Cygwin. Laten we proberen een programma te compileren. Voor compilatie heb ik het programma gekozen Htop(http://freshmeat.net/projects/htop/), dit is een verbeterde versie standaard programma bovenkant, dat is consolebeheerder processen. De eerste stap is het uitpakken van het archief. Je kunt dit doen als in Ramen, en direct binnen Cygwin. IN Cygwin dit gebeurt met het commando:

tar zxf htop-0.6.tar.gz

Natuurlijk, dat erin op dit moment u moet zich in dezelfde map bevinden waar het archief zich bevindt htop-0.6.tar.gz. Ga na het uitpakken naar de gemaakte map htop-0.6 en doe er drie standaard commando's om de applicatie samen te stellen.

./configureren
maken
maken installeren



Dat is alles, de compilatie is voltooid. Rekruteer gerust een team htop en bewonder het resultaat. De resulterende "EXE" bevindt zich in de map /usr/lokaal/bin/.



Laten we nu proberen het zelf te schrijven een eenvoudig programma (Hallo wereld) en compileer het met GCC. Eerst moeten we het programma zelf schrijven, we zullen dit doen met behulp van het programma kat. Voer de opdracht in kat nieuw.c, Waar nieuw.c naam van het bestand dat broncode. Schrijf na het uitvoeren van de opdracht de volgende code:

#erbij betrekken
int hoofd())(
printf("Hallo wereld");
retour 1;)

Nadat de code is ingevoerd, drukt u op Ctrl+C. Laten we het nu compileren met behulp van GCC. Dit gebeurt met het commando:

Gcc new.c -o nieuw.exe

In dezelfde map waar het zich bevond nieuw.c er verschijnt een ander bestand - nieuw.exe. Wanneer u het uitvoert, ziet u het verwachte bericht " Hallo wereld".



Dit zou het einde van het artikel kunnen zijn, maar ik besloot ook over de grafische omgeving te praten Cygwin om later niet meer op dit onderwerp terug te komen. Ik denk dat je dat hebt opgemerkt bij het installeren van pakketten Cygwin stelt voor om shells te installeren Kabouter En KDE. In feite zijn dit niet alleen shells, maar hun bibliotheken, die nodig zijn om applicaties uit te voeren. Bijvoorbeeld een grafische versie van de beroemde editor emacs, loopt er direct onder Ramen alsof het zo was win32-applicatie. Om niet ongegrond te zijn, laten we deze proberen Emacs loop. Dit gebeurt met het commando:

xemacs

Dit is wat we zullen zien.



Zoals u kunt zien, start alles op en werkt het prima. Maar dit gebeurt niet bij iedereen. Grafische omgeving heel grillig. Daarom moet u het kunnen configureren. Installatiedocumentatie X-servers Er zijn er veel op internet en je kunt ze gemakkelijk vinden.

Tot slot wil ik u eraan herinneren dat, hoe goed het ook is Cygwin, het is gewoon een emulator. En zoals u weet, kan een kopie dat niet zijn beter dan het origineel, dus als je een echte Unix-goeroe wilt worden, wees dan niet lui om een ​​volwaardige Unix-distributie te installeren. Volgens mij is het beter om ermee te beginnen Linux. Van alle mogelijke distributies raad ik je aan Slackware.

Heeft u ooit de Windows-opdrachtregel moeten gebruiken nadat u Linux had gebruikt? Voor mij wel. Zeer ongebruikelijk. Veel teams heten anders. Het equivalent van ls in Windows is bijvoorbeeld dir. De stijl van het overbrengen van argumenten door de lokale tolk is anders. En veel van de mogelijkheden die Linux-hulpprogramma's bieden, zijn er eenvoudigweg niet. Hoe kan ik een soortgelijke krijgen? Linux-omgeving bij ramen? Dit kan gedaan worden door Cygwin te installeren.

Het gebruikte systeem leren kennen

Ten eerste installeert cygwin standaard zijn eigen terminalemulator, wat handiger is om mee te werken dan de Windows-opdrachtregel.

Dit is waar we onze eerste problemen hebben. Zoals je kunt zien, Windows-hulpprogramma's, inclusief cmd.exe, drukt tekst af in oem-866, en de cygwin-emulator leest tekst in utf-8. Als u de codering overschakelt naar de 866-codetabel, zijn de gevolgen van deze actie nog erger.


cygwin interpreteerde de Russische naam in Unicode-codering, als een string in 866-codering en uiteindelijk besloten om een ​​nieuwe map /home/╨Ф╨╝╨╕╤В╤А╨╕╨╣ te maken. Het is dus beter om alles te laten zoals het was en, indien mogelijk, genoegen te nemen met cygwin-hulpprogramma's. Als u een opdrachtshell moet uitvoeren zonder terminalemulator, voert u run uit batchbestand Cygwin.bat.
IN in dit geval, cygwin wordt geïnstalleerd in de map C:\cygwin64\. Het cygpath-hulpprogramma helpt ons erachter te komen hoe paden worden geconverteerd van Unix-pad naar Windows-pad.
$ cygpath -w `pwd`
C:\cygwin64\home\Dmitry

$ cygpad -w /
C:\cygwin64

$cygpad "C:\cygwin64"
/

$ cygpath "C:\cygwin64\home\Dmitry"
/home/Dmitri
Hoe kan ik toegang krijgen tot station C: als alle paden zijn vertaald naar C:\cygwin64\.
Het is eenvoudig. De map /cygdrive bevat koppelpunten die qua naam overeenkomen met Windows-volumes.
$cygpad "C:\"
/cygdrive/c

$ cygpath -w /cygdrive/c/somedir
C:\somdir
Cygpath vertaalt ook met succes oproepen naar dit mountpunt naar Windows-paden.
Trouwens, het bestaan ​​van zo'n hulpprogramma als cygpath laat zien waarom je met cygwin, indien mogelijk, alleen de hulpprogramma's ervan zou moeten gebruiken. Als u een Java VM moet uitvoeren en deze alleen Windows-paden begrijpt, moet u het cygwin-pad bij het opstarten converteren:
$ java-jar`cygpath -w "/opt/some.jar"`
Hieruit volgt dat veel scripts van Linux niet zomaar op Windows kunnen worden uitgevoerd. Soms moet je proberen het script over te dragen. Bovendien zijn niet alle nutsvoorzieningen opdrachtregel zal werken.

Meer opties

SSH

U kunt een OpenSSH-client en -server installeren, zodat u deze kunt krijgen toegang op afstand Naar commandoshell bash, vanaf een andere computer, of zelfs vanaf een telefoon, bijvoorbeeld met JuiceSSH. U krijgt ook externe toegang tot uw bestanden met behulp van het SFTP-protocol (hoewel het in Windows gemakkelijker is om een ​​map te delen die toegankelijk is via SMB).

Programmering

De kit bevat bekende compilers zoals Clang of GCC, tolken Python-talen, Perl, PHP, Ruby, etc. U kunt POSIX-compatibele programma's voor Windows bouwen.

Teksteditors

Interactieve editors - vim, nano, emacs.
Niet-interactieve editors geschikt voor gebruik in scripts - sed, awk.

Kortom

Als je mist Linux-mogelijkheden in Windows is het misschien de moeite waard om dit ding zelf te installeren.

Dit artikel is bedoeld voor twee
soorten mensen: voor degenen die het niet begrijpen
Linux, maar ik kan het niet op mijn computer installeren
(er zijn verschillende redenen), of voor degenen die dat wel doen
weet een beetje over pinguïns 🙂 en zou het niet erg vinden
leer ze kennen op een "neutrale"
territorium, dat wil zeggen op Win98/NT.

De site heeft Cygwin al als de beste beschreven
haal de Linux-emulator eruit, maar dat werd niet gezegd
niets over installatie, configuratie en bugs van Cygwin.
Hier zal ik je erover vertellen :) Eigenlijk, als
Nu ik erover nadenk, Cygwin is helemaal geen emulator, maar
Zojuist Linux-distributie, geschreven voor Win32 😉

Stop met rondzwerven... Laten we naar http://www.cygwin.com gaan,
Vanaf daar nemen we het installatieprogramma setup.exe. Aan haar
we zullen reeds voorgecompileerde versies ophalen
binaire bestanden (in exe-extensie), herinner je je rpm?
😉 vanaf de website van de ontwikkelaar of vanaf een mirror.
Ik BEVEEL dit programma alleen aan om te downloaden
We zullen deze bestanden handmatig installeren, omdat Als
u installeert met setup.exe, gcc werkt niet - fig
weet waarom... Misschien hebben de ontwikkelaars er al rekening mee gehouden
Het is een bug, maar ik weet er nog niets van...

Download dus alle belangrijke binaire bestanden (sources
je hoeft niet te downloaden), en verschillende
extra - wie zou wget, lynx,
BitchX, Python :) Maar je hoeft Perl niet te downloaden... dat heb ik gedaan
er was ActivePerl - een geavanceerde Perl-emulator. Downloaden
beschikbaar op http://www.acriveperl.com.
Ik heb geen enkele fout waargenomen :) (Ik zal je vertellen hoe ik
implementeerde het in cygwin).

Instellingen

En in het "groep"-bestand in dezelfde map "etc":
wortel:x:0:wortel

Als u uw wachtwoord wilt coderen, en
niet "wachtwoord" zoals ik deed in mijn voorbeeld,
schrijf een Perl-script

#!/usr/bin/perl
chomp ($pas= );
print $crypt("SA",$pass);

Waar, SA - salta, dat zal worden gebruikt voor codering
wachtwoord... je kunt het willekeurig maken, maar
Dit artikel zal off-topic zijn.

Bewerk nu het bestand "c:\cygwin\cygnus.bat" -
daarin veranderen we PATH, simpelweg door het pad te veranderen
emulator en het pad naar het login.exe-bestand. Laten we lanceren
bestand.

Laten we inloggen: in mijn voorbeeld "root": "wachtwoord".
Dus we kwamen in de emulator zelf. Ik niet
Ik vond de invoerprompt leuk. Laten we het veranderen
- variabele PS1. Open (maak) het bestand "c:\cygwin\etc\profile"
en schrijf daar:

# /etc/profiel
PROFILE_LOADED=1
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/local/sbin:$PATH"
schakel DOSDRIVE uit
DOSDIR uitschakelen
schakel TMPDIR uit
schakel TMP uit
export HOSTNAAM=test
PS1="[\u@$HOSTNAAM \W]# "
LOGNAAM=$USER
export PATH PS1 GEBRUIKERSLOGNAAM

Hier... Dan loggen we opnieuw in en staat alles aan
plaats en mooi :) De uitnodiging zal zijn: # - standaard, Linux :)

Dat is alles, de eerste installatie is voltooid.
Laten we verder gaan met het installeren van services :)

De standaardlevering omvat thuja hucha
diensten. Je moet ze als volgt uitvoeren:
/usr/sbin/inetd -R /usr/sbin/in.ftpd (voorbeeld voor ftpd).

Het is beter om SSHD zelf te installeren - het werkte met een knal en
Ik rijd vanaf SecureCRT, legaal op 127.0.0.1 -
heel ander uiterlijk :)

Wat het werken met TCP/IP betreft, heb ik geen nadelen
Ik heb het gemerkt :) Alles is verbonden en werkt als
nodig…

En nu enkele tips:

1) Toegang tot ALLE schijven is open. Dus wees
voorzichtig. Station d: bevindt zich bijvoorbeeld hier -
"/cygdrive/d".

2) Wat betreft Perl: maak een symlink naar het bestand
Perl.exe, bijvoorbeeld, dus "ln -s /cygdrive/c/perl/bin/perl.exe
/usr/bin/perl"

3) Als je dat om wat voor reden dan ook niet hebt
Linux-applicatie is geïnstalleerd -
repareer gewoon de C-code. Misschien
zal lukken.. (zo heb ik het samengesteld
micq).

4) Volg Cygwin-updates op de website http://www.cygwin.com
- binaire bestanden worden regelmatig bijgewerkt.

Vragen? Schrijf mij per e-mail - ik zal het proberen
hulp...

Dit artikel zal nuttig zijn voor beginnende Cygwin-gebruikers. Om te beginnen moeten we eerst een eenvoudige vraag beantwoorden. Wat is Cygwin? Cygwin is een UNIX-achtige omgeving en opdrachtregelinterface voor Microsoft Windows. IN Microsoft-systeem Windows al er is een vergelijkbare cmd-interface. U kunt de opdrachtregel openen met de Win+R-toetscombinatie. Maar vaak het meeste werk Windows-gebruikers moet handmatig gebeuren. Anderzijds Linux-kant de gebruiker heeft lang geleden een bash-script geschreven en zit bier te drinken aan de zijlijn van de geautomatiseerde workflow.

Dus wat weerhoudt u ervan dit in Windows OS te doen? Dat klopt, er staat absoluut niets tussen. Maar hiervoor hebben we nodig aanvullende programma's en bibliotheken. Het Cygwin-programma breidt de mogelijkheden van de standaardopdrachtregel uit Windows-tekenreeksen, waardoor u bepaalde processen kunt automatiseren en programma's voor Linux en andere systemen kunt ontwikkelen.

Het Cygwin-programma kan worden gedownload van de officiële website: Link naar de 32-bits versie van het programma en Link naar de 64-bits versie van het programma.

Kiezen de vereiste versie, download en voer respectievelijk het uitvoerende bestand setup-x86.exe en setup-x86_64.exe uit.

Installatievenster voor de 64-bits versie van het programma


Venster voor het selecteren van de installatiemethode


Pakketselectievenster

Het installatievenster voor de 32-bits versie van het programma ziet er precies hetzelfde uit als de 64-bits versie. De volgende stap is het selectievenster. Waar u het programma kunt installeren of downloaden. Er zijn in totaal drie opties. Eerste optie Installeren vanaf Internet (gedownloade bestanden worden bewaard voor toekomstig hergebruik) installatie vanaf internet en gedownloade bestanden worden bewaard tot de volgende keer hergebruiken. De tweede optie is Downloaden zonder installatie. Derde optie Installeren vanaf lokaal Directory-installatie uit de lokale map. Omdat We hebben geen lokale kopie en we moeten deze installeren, dus selecteren we de eerste optie. In het volgende venster kunt u het installatiepad selecteren. Ik raad aan om te kiezen systeem schijf Ik heb bijvoorbeeld een pad Cygwin-installaties dit is C:\cygwin64. In het volgende venster kunt u het pad selecteren waar ze zullen worden opgeslagen. tijdelijke bestanden die tijdens het installatieproces wordt gedownload. Voor mij is het C:\cygwin64\package. Vervolgens moet u kiezen of u via een proxy of rechtstreeks wilt downloaden. De volgende stap is het selecteren van een downloadrepository, selecteer degene die je tegenkomt of de standaardrepository en klik op Volgende. Nadat u op de knop hebt geklikt, begint het proces van het downloaden van de belangrijkste configuraties. Vervolgens kunt u kiezen wat u wilt installeren. Om een ​​pakket te selecteren, klikt u op Overslaan naast de pakketnaam. Lijst met pakketten die nuttig voor u zullen zijn:

  • gcc-core (onder Devel)
  • gcc-g++ (in de sectie Ontwikkelen)
  • maken (in de sectie Ontwikkelen)
  • cmake (in de sectie Ontwikkelen)
  • automake (in de sectie Ontwikkelen)
  • wget (in de websectie)
  • libiconv (in de secties Devel en Libs)
  • openssh (in de Net-sectie)
  • nano (in de sectie Editors)
  • bash (uit de sectie Basis)
  • base-cygwin (uit de sectie Basis)
  • base-bestanden (uit de Base-sectie)
  • cygwin (uit de basissectie)
  • bestand (uit de sectie Basis)
  • gzip (uit de sectie Basis)
  • inloggen (vanuit het Basisgedeelte)
  • muntachtig (uit de basissectie)
  • openssl (uit de sectie Basis)
  • rennen (vanuit de basissectie)
  • teer (uit de sectie Basis)
  • vim-minimaal (uit de sectie Basis)
  • cron (uit de beheerderssectie)
  • afsluiten (vanuit het beheerdersgedeelte)
  • git (alle pakketten uit de Devel-sectie)

Ik vond de achtergrondkleur of het ingebouwde lettertype en de tekstkleur niet mooi, dus heb ik deze aangepast. Met deze woorden sluit ik dit artikel af.

Het ontwikkelen van platformonafhankelijke applicaties is niet eenvoudig. Het is vooral moeilijk dankzij Windows, waarin niet alles is zoals bij mensen. Hier heb je geen normale terminal of normaal consolehulpprogramma's, er is helemaal niets! Toen ik opnieuw met dit probleem werd geconfronteerd, besloot ik Cygwin opnieuw te proberen. En raad eens, het blijkt dat het Windows feitelijk tot iets maakt dat je bijna kunt gebruiken!

U kunt het Cygwin-installatieprogramma hier downloaden. In feite is dit niet zozeer een installatieprogramma als wel een pakketbeheerder, die bij het opstarten direct vraagt ​​welke pakketten u wilt installeren. Jongens! Pakketbeheerder! Onder Windows! Het installatieprogramma maakt een cache aan in de map van waaruit het wordt gestart. Daarom is het beter om, voordat u begint, een speciale map op het bureaublad te maken en het installatieprogramma daarin te plaatsen.

Welke pakketten moeten naar mijn mening worden geïnstalleerd:

  • opensh- masthev;
  • inetutils, bind-utils, ping, nc En nc6- masthev;
  • wg, krul- masthev;
  • Python en/of python3– Ik denk dat het een must-have is;
  • vim, gvim— voor het bewerken van kleine bestanden is het niet overbodig;
  • diffutils, pwgen, uitpakken, rzync- laat ze voor het geval dat;
  • gcc en/of klink, maken, gdb- indien nodig;
  • scherm, tmux, mc— voor fans;
  • git- onder heel groot vraag, zie hieronder;

Let op! Om pip in Cygwin te installeren, vinkt u het vakje naast het pakket python-setuptools en/of python3-setuptools aan. Zeg na de installatie in de terminal:

easy_install-2.7 pip

easy_install-3.4 pip

..., afhankelijk van welke versie of versies van Python je hebt geïnstalleerd.

Dus na het installeren van Cygwin kunt u een terminal openen:

Jongens! Met een normale terminal die van formaat verandert, kun je tekst kopiëren en plakken, en dat is alles! Onder Windows! Met iedereen goed bekend en bekende commando's id, ls, pwd, cat, ssh, scp en anderen. Met de menselijke omgeving - .bashrc, ~/.ssh/config, enzovoort. Bovendien sleept Cygwin, in tegenstelling tot de beschamende hack genaamd PowerShell, het .NET Framework niet mee. We kunnen zelfs meerdere terminals openen en ertussen schakelen met behulp van de sneltoets Ctr + Tab. Het lijken bijna tabbladen! Natuurlijk werkt de goede oude Alt + Tab ook.

Hierboven heb ik niet aanbevolen Git te installeren, en dit is waarom. Feit is dat het in Cygwin merkbaar vertraagt. Het wordt aanbevolen om de opdrachten uit te voeren:

git config --global core.preloadindex waar
git config --global core.fscache waar
git config --global gc.auto 256

Maar dit lost het probleem helaas niet volledig op. Bij een groot project kan het git status commando dus binnen 20 seconden worden uitgevoerd. In Linux, op precies dezelfde repository, wordt het commando onmiddellijk uitgevoerd.