Open Source
Επτά εντολές που δουλεύουν και σε Windows και σε Linux
Με λίγη προσοχή στις διαφορές των μονοπατιών, των δικαιωμάτων και των alias, οι εντολές cd, mkdir, rm, ping, nslookup, cURL και ssh μπορούν να κάνουν τη μετάβαση μεταξύ PowerShell και Linux απλή και παραγωγική.
Δεν χρειάζεται να μαθαίνεις δύο ξεχωριστά λεξιλόγια για τη γραμμή εντολών. Αν δουλεύεις με PowerShell στα Windows και περιστασιακά με Linux shells, θα εκπλαγείς πόσες κοινές εντολές υπάρχουν και πόσο μεταφέρσιμες είναι οι δεξιότητές σου. Αυτό το άρθρο παρουσιάζει επτά βασικές εντολές που λειτουργούν και στα δύο περιβάλλοντα, εξηγεί τις διαφορές συμπεριφοράς, δίνει πρακτικά παραδείγματα και προτείνει καλές πρακτικές για ένα ασφαλέστερο και πιο αποδοτικό workflow.
Γιατί δεν χρειάζεται να μαθαίνεις δύο σύνολα εντολών
Η σύγκλιση μεταξύ Windows και Linux κονσολών δεν ήρθε τυχαία. Η Microsoft έχει ενσωματώσει εργαλεία όπως το OpenSSH και το cURL στα σύγχρονα Windows, ενώ το PowerShell διατηρεί aliases που μιμούνται παραδοσιακές εντολές Unix για να διευκολύνουν τους χρήστες. Το αποτέλεσμα είναι ότι πολλές καθημερινές εργασίες—αλλαγή φακέλων, δημιουργία καταλόγων, έλεγχος δικτύου—γίνονται σχεδόν με τον ίδιο τρόπο.
Βέβαια, δεν είναι όλα απολύτως ίδια. Υπάρχουν διαφορές στη συμπεριφορά, στα προεπιλεγμένα options και στον τρόπο που τα λειτουργικά χειρίζονται μονοπάτια και δικαιώματα. Όμως, αν κατανοήσεις τις βασικές ομοιότητες και τις κρίσιμες διαφορές, μπορείς να γράψεις αποτελεσματικά scripts που λειτουργούν σε πολλαπλές πλατφόρμες ή να εναλλάσσεσαι μεταξύ συστημάτων χωρίς να χάνεις παραγωγικότητα.
Cd: πλοήγηση στους φακέλους, απλό αλλά κεντρικό
Η εντολή cd (change directory) είναι ίσως η πιο βασική στη γραμμή εντολών: αλλάζει τον τρέχοντα κατάλογο εργασίας. Στο Linux δέχεται είτε απόλυτο μονοπάτι (π.χ. cd /usr/share/doc) είτε σχετικό (π.χ. cd docs). Το cd .. σε πάει έναν φάκελο πάνω και το cd χωρίς όρισμα σε οδηγεί στο home directory.
Στο PowerShell η χρήση είναι αντίστοιχη: cd Documents ή cd .. δουλεύουν όπως περιμένεις. Σημειώστε όμως δύο ιδιαιτερότητες: πρώτον, τα Windows χρησιμοποιούν συνήθως backslashes στα μονοπάτια (C:UsersName), ενώ τα Unix-like συστήματα forward slashes. Δεύτερον, το cd είναι alias για τη λειτουργία Set-Location στο PowerShell, και αυτό σημαίνει ότι υπάρχουν επιπλέον δυνατότητες όπως οι PSDrives (π.χ. cd HKLM: για το registry).
Για scripts που προορίζονται να τρέξουν σε πολλαπλές πλατφόρμες, προτιμήστε να δουλεύετε με μονοπάτια που προσαρμόζονται δυναμικά ή να χρησιμοποιείτε εργαλεία που κανονικοποιούν τα paths, ώστε να αποφύγετε προβλήματα με slash/backslash και drive letters.
Mkdir: δημιουργία καταλόγων και διαχείριση δικαιωμάτων
Η εντολή mkdir δημιουργεί νέους καταλόγους σε όλα τα σύγχρονα συστήματα. Ένα απλό παράδειγμα είναι mkdir test, που δημιουργεί έναν υποφάκελο με όνομα test στον τρέχοντα κατάλογο. Στο Linux το mkdir είναι συχνά ένα εξωτερικό πρόγραμμα και παρέχει επιλογές όπως το -p (δημιουργία πολλαπλών επιπέδων) και η δυνατότητα να συνδυαστεί με ρυθμίσεις δικαιωμάτων.
Για παράδειγμα, μπορείτε να δημιουργήσετε έναν φάκελο με συγκεκριμένα δικαιώματα χρησιμοποιώντας αριθμητική σύνταξη: mkdir -m 700 test (εφόσον το σύστημα έχει την επιλογή) ή με symbolic values: mkdir -m u+rwx,g-rwx,o-rwx test. Στα Linux αυτά τα bits ελέγχουν την ανάγνωση, εγγραφή και εκτέλεση για ιδιοκτήτη, ομάδα και άλλους χρήστες.
Στο PowerShell, το mkdir λειτουργεί επίσης και είναι alias για New-Item -ItemType Directory. Τα Windows δεν έχουν το ίδιο σύστημα permission bits με το POSIX, αλλά χρησιμοποιούν ACLs (Access Control Lists). Για λεπτομερή ρύθμιση δικαιωμάτων σε Windows, θα χρησιμοποιήσετε εργαλεία όπως icacls ή το ίδιο το API των ACL μέσα από cmdlets.
Rm και Remove-Item: όταν η διαγραφή είναι μόνιμη
Η rm είναι η εντολή των Unix-like συστημάτων για διαγραφή αρχείων και φακέλων (σε συνδυασμό με rmdir ή rm -r για καταλόγους). Ένα απλό rm file διαγράφει ένα αρχείο, ενώ ένα rm *.txt αφαιρεί όλα τα αρχεία με κατάληξη .txt στον τρέχοντα κατάλογο. Πρέπει να είστε προσεκτικοί: οι διαγραφές με rm είναι μόνιμες και δεν πηγαίνουν στον Κάδο Ανακύκλωσης.
Στο PowerShell υπάρχει επίσης το alias rm, που αντιστοιχεί στο cmdlet Remove-Item. Το Remove-Item μπορεί να διαγράψει αρχεία και καταλόγους και έχει παραπλήσιες επιλογές όπως -Recurse και -Force. Μια σημαντική διαφορά είναι ότι στα Windows το εργαλείο συνήθως μπορεί πιο απλά να χειριστεί δομές φακέλων χωρίς επιπλέον εντολές, ενώ στο Linux συνηθίζεται ο διαχωρισμός rmdir για άδειους φακέλους και rm -r για αναδρομικές διαγραφές.
Μια βασική προειδοποίηση: αποφύγετε το rm -rf / ή αντίστοιχες εντολές χωρίς να έχετε καταλάβει ακριβώς το scope. Στην πράξη, αντί να τρέχετε επιθετικές μαζικές διαγραφές, δοκιμάστε πρώτα με –dry-run όταν υπάρχει (σε εργαλεία που το υποστηρίζουν) ή κάντε backup πριν από κρίσιμες εργασίες.
Ping και nslookup: γρήγορος έλεγχος επικοινωνίας και DNS
Αν χρειάζεστε έναν γρήγορο έλεγχο της σύνδεσής σας ή να δείτε εάν ένας server ανταποκρίνεται, το ping είναι το πρώτο εργαλείο. Η χρήση είναι απλή: ping google.com. Στο Linux το ping τρέχει επ’ αόριστον μέχρι να το διακόψετε με Ctrl+C και συνοψίζει τα στατιστικά στο τέλος, ενώ στα Windows η προεπιλεγμένη συμπεριφορά είναι να σταματήσει μετά από 4 πακέτα.
Το nslookup είναι χρήσιμο για τη διάγνωση του DNS: nslookup example.com επιστρέφει τον nameserver που απαντά και την επίλυση σε IP διευθύνσεις. Το output διαφέρει λίγο ανά πλατφόρμα, αλλά η λειτουργία είναι ίδια. Αν χρειάζεστε πιο λεπτομερείς πληροφορίες, εργαλεία όπως dig (συνηθέστερο σε Linux) δίνουν επιπλέον επιλογές για timing, record types και recursion control.
Συχνά οι διαχειριστές συνδυάζουν ping με traceroute (στα Windows tracert) για να εντοπίσουν προβλήματα ασυνέχειας στο δίκτυο και με nslookup για θέματα ορθής ρύθμισης DNS, όπως λάθος CNAMEs ή μη ανανεωμένα records.
CURL: όχι μόνο για λήψεις αλλά και για API calls
Το cURL είναι το εργαλείο εκ του «command line» για HTTP requests. Μπορεί να κατεβάσει αρχεία (curl https://example.com/file.zip -o file.zip), να κάνει POST σε APIs, να διαχειριστεί headers, cookies και authentication. Στον κόσμο του automation και των deployment scripts, το cURL είναι αναντικατάστατο.
Σημειώστε ένα σημαντικό nuance στα Windows: σε παλιότερες εκδόσεις το PowerShell είχε alias curl που αντιστοιχούσε σε Invoke-WebRequest. Από τα Windows 10 και μετά, υπάρχει και το πραγματικό curl.exe που διανέμεται με το λειτουργικό, αλλά μπορεί να υπάρξει σύγκρουση alias. Αν θέλετε σίγουρα το GNU-style curl, καλέστε curl.exe ή βεβαιωθείτε ότι το PATH παραπέμπει στην έκδοση που θέλετε.
Για scripting, προτιμήστε ρητές επιλογές (π.χ. -H για headers, -d για δεδομένα) και έλεγχο των κωδικών επιστροφής, ώστε να χειρίζεστε σφάλματα προγραμματιστικά. Το cURL είναι επίσης χρήσιμο σε debugging όταν δοκιμάζετε APIs πριν γράψετε κώδικα σε γλώσσα υψηλού επιπέδου.
Ssh: απομακρυσμένη πρόσβαση, κλείδια και πρακτικές ασφάλειας
Η εντολή ssh παραμένει το βασικό εργαλείο για ασφαλή πρόσβαση σε απομακρυσμένους servers. Η σύνταξη ssh user@example.com ανοίγει μια κρυπτογραφημένη συνεδρία. Στο παρελθόν πολλοί Windows χρήστες κατέφευγαν σε third-party clients όπως PuTTY, αλλά σήμερα το OpenSSH είναι ενσωματωμένο στα Windows και το ίδιο το PowerShell μπορεί να το χρησιμοποιήσει όπως σε Linux.
Για παραγωγική χρήση προτιμάτε κλειδιά δημόσιου/ιδιωτικού (public/private key pairs) αντί για password authentication. Το γενικό workflow είναι ssh-keygen για δημιουργία κλειδιού, και στη συνέχεια μεταφορά του δημόσιου κλειδιού στον απομακρυσμένο server. Σε Linux υπάρχει το βολικό ssh-copy-id, ενώ σε Windows πιθανόν να χρειαστείτε χειροκίνητη αντιγραφή του περιεχομένου του ~/.ssh/id_rsa.pub στο ~/.ssh/authorized_keys του server.
Επιπλέον, ρυθμίστε το ssh-agent για να διαχειρίζεται τα κλειδιά χωρίς να χρειάζεται να πληκτρολογείτε passphrase κάθε φορά, και εξετάστε τη χρήση config αρχείου (~/.ssh/config) για πιο σύντομες συνδέσεις και προκαθορισμένες ρυθμίσεις (port, identityfile, forwarding).
Τι σημαίνει αυτό στην πράξη για τον χρήστη
Για τον μέσο προγραμματιστή, διαχειριστή συστημάτων ή power user, η ύπαρξη κοινών εντολών ανάμεσα σε Windows και Linux μειώνει το κόστος μάθησης και επιτρέπει τη διατήρηση κοινών workflows. Μπορείτε να γράψετε μικρά scripts για deployment, debugging ή καθημερινές εργασίες που θα τρέχουν σε περισσότερα από ένα περιβάλλοντα με λίγες προσαρμογές.
Αν όμως θέλετε αξιοπιστία και φορητότητα, λάβετε υπόψη τις πλατφορμο-ειδικές ιδιαιτερότητες: paths και slash, διαχείριση δικαιωμάτων, διαφορές στην προεπιλεγμένη συμπεριφορά των εντολών (π.χ. ping count) και potential alias conflicts (curl στο PowerShell). Χρήσιμες στρατηγικές είναι η χρήση cross-platform tools (π.χ. Python scripts, Node.js utilities), το WSL όταν εργάζεστε σε Windows αλλά χρειάζεστε ένα Linux περιβάλλον, και ο έλεγχος των exit codes στα scripts για αξιόπιστο error handling.
Τέλος, η ασφάλεια πρέπει να είναι προτεραιότητα: αποφύγετε επικίνδυνες μαζικές διαγραφές, προστατέψτε τα SSH keys σας με passphrase και agent, κρατήστε backups και δοκιμάστε τις εντολές σε μη παραγωγικά περιβάλλοντα πριν τις εφαρμόσετε σε servers. Με λίγη προσοχή και τους σωστούς κανόνες, θα αξιοποιήσετε τα κοινά εργαλεία για γρηγορότερη και ασφαλέστερη δουλειά ανεξάρτητα από το λειτουργικό.