UNIX για αρχάριους – Τα Στανταράκια


‘Εχοντας δουλέψει σόλο σε UNIX περιβάλλοντα όλα αυτά τα χρόνια, αρχικά ώς προπτυχιακός φοιτητής, έπειτα ως μεταπτυχιακός και τώρα ως εργαζόμενος σε εταιρεία πληροφορικής, θεωρώ ότι έχω μαζέψει κάποια εμπειρία περί της συγκεκριμένης οικογένειας λειτουργικών συστημάτων και της χρήσης τους. Αυτή η εμπειρία μπορεί να μεταφραστεί σαν γνώση του ίδιου του ίδιου του λειτουργικού και των δυνατοτήτων του, του τι μπορεί κάποιος να κάνει μέσω του λειτουργικού και τι όχι (χμμμ υπάρχει κάτι το οποίο δε μπορεί να κάνει??). ‘Ετσι λοιπόν, μια ωραία πρωία, αποφάσισα να συγκεντρώσω τις πιο συνηθισμένες εντολές – προγράμματα που έβρισκα τον εαυτό μου να πληκτρολογεί σα δαιμονισμένος 100 φορές τη μέρα έτσι ώστε να μπορέσω να καταφέρω τη διεκπεραίωση διαφόρων εργασιών. Το συγκεκριμένο άρθρο θα μπρούσε να μεταχειριστεί είτε σαν UNIX tutorial είτε σαν memo εντολών για τους πανταχού καμμένους σαν και εμένα που θα ήθελαν όλες εντολές συγκεντρωμένες σε μια σελίδα-άρθρο. ‘Εχω χωρίσει τις εντολές σε 3 κατηγορίες, α) τα Στανταράκια, β) τους Αγαπημένους Συντρόφους και γ) τα Χρήσιμα Τερατάκια. ΩΧ! Μόλις πήρα χαμπάρι ότι από μόνα τους τα Στανταράκια είναι αρκετά για ένα άρθρο! Έτσι λοιπόν πήρα την απόφαση να κόψω το άρθρο σε αυτό 3 επιμέρους, ένα για κάθε κατηγορία. Στο παρών άρθρο (Στανταράκια) παραθέτω τις πιο (τι άλλο?) σταντέ και βασικές εντολές που πρέπει να ξέρει κάποιος έτσι ώστε να παίξει με το file system και να εκτελέσει απλές λειτουργίες όπως να ανοίξει/αντιγράψει/διαγράψει/μετακινήσει μεμονωμένα αρχεία ή ολόκληρους φακέλους. Τέρμα οι πολλές οι πάρλες, να μπαίνω κατευθείαν στο ψητό!

ΒΟΥΡ!

 

1. cd
Τί κάνει: Αλλάζει τον τρέχοντα φάκελο
Τί σημαίνει: (c)hange (d)irectory
Συνοπτική σύνταξη: cd /path/folder
Εφαρμογή #1: Πως από τον τρέχοντα φάκελο (~/Desktop/Tzertzelos) πάμε στον άλλο (~/Desktop/Musix/ ), δεδομένου ότι ο δεύτερος φυσικά υπάρχει.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: cd ~/Desktop/Musix/

 

2. mkdir
Τί κάνει: Δημιουργεί έναν νέο φάκελο
Τί σημαίνει: (m)a(k)e (dir)ectory
Συνοπτική σύνταξη: mkdir /path/new_folder
Εφαρμογή #1: Φτιάξε μου τον φάκελο resources μέσα στον τρέχοντα φάκελο (~/Desktop/Tzertzelos)

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: mkdir resources

 

3. pico/nano
Τί κάνει: Terminal-powered Text editors – Ανοίγουν/τροποποιούν αρχεία
Τί σημαίνει: Χμμμμμ παράγωγες μονάδες του μέτρου.
Συνοπτική σύνταξη: pico file, nano file
Εφαρμογή #1: Άνοιξε μου το αρχείο super_dispatcher.c σε παρακαλώ

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: pico super_dispatcher.c

 

4. ls
Τί κάνει: Δείχνει τα περιεχόμενα ενός φακέλου και σχετικές πληροφορίες
Τί σημαίνει: (l)i(s)t
Συνοπτική σύνταξη: ls folder
Εφαρμογή #1: Δείξε μου όλα τα αρχεία του τρέχοντος φακέλου

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls
Arthra LA_FEMME Make UNIX_TOOLS

Εφαρμογή #2: Δείξε μου όλα τα αρχεία του τρέχοντος φακέλου και δώσε πληροφορίες σχετικά με file permissions, total number of files, modification date, owner, group.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l
total 16
-rw-r–r– 1 root root 932 Jan 14 20:14 Arthra
drwxr-xr-x 2 root root 4096 Jan 13 23:45 LA_FEMME
drwxr-xr-x 2 gclkaze gclkaze 4096 Jan 12 21:23 Make
drwxr-xr-x 2 gclkaze gclkaze 4096 Jan 18 15:16 UNIX_TOOLS

Εφαρμογή #3: Δείξε μου όλα τα αρχεία του τρέχοντος φακέλου αλλά και των περιεχόντων φακέλων του ΑΝΑΔΡΟΜΙΚΑ
και δώσε πληροφορίες σχετικά με file permissions, total number of used file system blocks for the files, modification date, owner, group.

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: ls -l -R
.:
total 16
-rw-r–r– 1 root root 932 Jan 14 20:14 Arthra
drwxr-xr-x 2 root root 4096 Jan 13 23:45 LA_FEMME
drwxr-xr-x 2 gclkaze gclkaze 4096 Jan 12 21:23 Make
drwxr-xr-x 2 gclkaze gclkaze 4096 Jan 18 15:16 UNIX_TOOLS./LA_FEMME:
total 32
-rw-r–r– 1 root root 11688 Jan 14 00:15 Backup
-rw-r–r– 1 root root 12339 Jan 13 23:45 Content
-rw-r–r– 1 root root 37 Jan 13 19:39 Makefile./Make:
total 32
-rw-r–r– 1 root root 11450 Jan 12 21:23 Backup
-rw-r–r– 1 gclkaze gclkaze 4657 Jan 17 13:13 Content
-rw-r–r– 1 gclkaze gclkaze 9378 Jan 12 17:59 Content.gr./UNIX_TOOLS:
total 12
-rw-r–r– 1 root root 1426 Jan 18 02:20 Content
-rw-r–r– 1 root root 7858 Jan 18 18:01 Final

Εφαρμογή #4: Δείξε μου όλα τα αρχεία του φακέλου /home/gclkaze/Desktop/game και λειπές πληροφορίες σε human readable format (1024->1M etc).

gclkaze@tzertzelos:~/Desktop/Tzertzelos$ ls -lah /home/gclkaze/Desktop/game/
total 738M
drwxrwxrwx 8 root root 4.0K Oct 9 22:38 .
drwxr-xr-x 18 gclkaze gclkaze 4.0K Jan 13 20:30 ..
-rw-r–r– 1 root root 7.9K Sep 27 15:14 backend.cpp
-rw-r–r– 1 root root 792 Sep 27 15:14 backend.h
-rw-r–r– 1 root root 42M Oct 9 20:29 backend.h.gch
-rw-r–r– 1 root root 1.1M Oct 9 20:29 backend.o
-rw-r–r– 1 root root 4.1K Sep 26 20:03 backend.py
-rwxrwxrwx 1 root root 844 Sep 19 22:08 ballon.cpp
-rwxrwxrwx 1 root root 8 Sep 19 21:25 ballon.h
-rwxrwxrwx 1 root root 2.6K Oct 2 01:28 balloon.cpp

 

5. clear
Τί κάνει: Καθαρίζει την οθόνη του terminal
Τί σημαίνει: (clear)
Συνοπτική σύνταξη: clear
Εφαρμογή #1: Καθάρισε το terminal από τον χαμό ΤΩΡΑ

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: clear

 

6. reset
Τί κάνει: Αρχικοποιεί το terminal
Τί σημαίνει: (reset)
Συνοπτική σύνταξη: reset
Εφαρμογή #1: Σε περίπτωση που ένα πρόγραμμα χαλάει το encoding του terminal ή χαλάει γενικά το Standard Ι/Ο, ένα reset είναι η λύση

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: reset

 

7. date
Τί κάνει: Μα τι άλλο παρά να δείξει την ημερομηνία του συστήματος
Τί σημαίνει: (date)
Συνοπτική σύνταξη: date
Εφαρμογή #1: Θέλω την ημερομηνία, ΤΩΡΑ!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$: date
Sat Jan 18 18:30:43 CET 2014

 

8. pwd
Τί κάνει: Τυπώνει το όνομα του τρέχοντος directory
Τί σημαίνει: (p)rint (w)orking (d)irectory
Συνοπτική σύνταξη: pwd
Εφαρμογή #1: Θέλω το τρέχον directory, ΤΩΡΑ!

gclkaze@tzertzelos:~/Desktop/Tzertzelos$ pwd
/home/gclkaze/Desktop/Tzertzelos

 

9. cat
Τί κάνει: Ενώνει/προβάλει αρχεία
Τί σημαίνει: con(cat)enate
Συνοπτική σύνταξη: cat file1 file2
Εφαρμογή #1: Θέλω να δώ τα περιεχόμενα του main.py

gclkaze@tzertzelos:~/process_guardian$ cat main.py
import subprocess
from sys import exitclass process_guardian:
def __init__(self,processes=False):
self.begins_with_error = [‘/usr/bin/python’]
self.error = [‘error’,’exception’,’programming’]
if processes == False:
self.processes = {‘test.py’:’/home/gclkaze/process_guardian/test.py’}
else:
self.processes = processesself.statuses,self.restarted = {},{}
for k in self.processes:
self.statuses[k] = ”

Εφαρμογή #2: Θέλω να σβήσω τα περιεχόμενα του file.txt

gclkaze@tzertzelos:$ cat /dev/null > file.txt

Εφαρμογή #3: Θέλω να ενώσω-συνδυάσω τα περιεχόμενα του file.txt και του file2.txt στο result.txt

gclkaze@tzertzelos:$ cat file.txt file2.txt > result.txt

Εφαρμογή #4: Θέλω να δω τα περιεχόμενα του main.txt με απαρίθμιση γραμμών

gclkaze@tzertzelos:$ cat -n main.txt
1 import subprocess
2 from sys import exit
3
4 class process_guardian:
5 def __init__(self,processes=False):
6 self.begins_with_error = [‘/usr/bin/python’]
7 self.error = [‘error’,’exception’,’programming’]
8 if processes == False:
9 self.processes = {‘test.py’:’/home/gclkaze/process_guardian/test.py’}
10 else:
11 self.processes = processes
12
13 self.statuses,self.restarted = {},{}
14 for k in self.processes:
15 self.statuses[k] = ”

 

10. cp
Τί κάνει: Αντιγράφει αρχεία και ολόκληρα folders όπου γουστάρετε
Τί σημαίνει: (c)o(p)y
Συνοπτική σύνταξη: cp file1 file2 /path/folder/
Εφαρμογή #1: Αντέγραψε όλα τα c αρχεία στo commit folder.

gclkaze@tzertzelos:$ cp *.c /path/commit

Εφαρμογή #2: Αντέγραψε τα πάντα αναδρομικά από το τρέχων directory (και τα directories μέσα σε αυτό) στο commit folder.

gclkaze@tzertzelos:$ cp -R * /path/commit

 

11. mv
Τί κάνει: Μετακινεί αρχεία-folders αλλού
Τί σημαίνει: (m)o(v)e
Συνοπτική σύνταξη: mv file /path/folder/
Εφαρμογή #1: Μετακίνησε όλα τα c αρχεία στo commit folder.

gclkaze@tzertzelos:$ mv *.c /path/commit

Εφαρμογή #2: Μετακίνησε των φάκελο folder στο commit folder.

gclkaze@tzertzelos:$ mv folder /path/commit

 

12. rm (USE WITH CAUTION!!)
Τί κάνει: Σβήνει-εξουδετερώνει-καταστρέφει
Τί σημαίνει: (r)e(m)ove
Συνοπτική σύνταξη: rm file1 file2
Εφαρμογή #1: Διέλυσε όλα τα αρχεία με κατάληξη ‘.gch’!

gclkaze@tzertzelos:$ rm *.gch

Εφαρμογή #2: Εξαφάνισε τον φάκελο trash και όλα του τα περιερχόμενα!

gclkaze@tzertzelos:$ rm -r trash/

Εφαρμογή #3: Secure rm

gclkaze@tzertzelos:$ rm -i file
remove file? y

 

13. ln
Τί κάνει: Symbolic/hard links
Τί σημαίνει: (l)i(n)k
Συνοπτική σύνταξη: ln file file_hard_link
Εφαρμογή #1: Φτιάξε ένα symbolic link του αρχείου config στο φάκελο /etc/apache2/sites-enabled/

gclkaze@tzertzelos:$ ln -s config /etc/apache2/sites-enabled/

 

14. tailf
Τί κάνει: Ανοίγει και αφήνει ένα αρχείο ανοικτό στο τέλος του
Τί σημαίνει: (tail)f
Συνοπτική σύνταξη: tailf file
Εφαρμογή #1: Θέλω να βλέπω το error.log του server at runtime!

gclkaze@tzertzelos:$ tailf /var/log/apache2/error.log
[Fri Jan 17 18:37:44 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/data.php on line 138
[Fri Jan 17 18:38:55 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/game.php on line 164
[Fri Jan 17 18:38:55 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/game.php on line 170
[Fri Jan 17 18:39:41 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/game.php on line 170
[Fri Jan 17 18:40:22 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/game.php on line 170
[Fri Jan 17 18:42:09 2014] [error] [client ::1] PHP Notice: Array to string conversion in /var/www/toe/data.php on line 138
[Sat Jan 18 15:01:37 2014] [error] [client ::1] PHP Warning: assert(): Assertion failed in /var/www/toe/game.php on line 481
[Sat Jan 18 15:01:40 2014] [error] [client ::1] PHP Warning: assert(): Assertion failed in /var/www/toe/game.php on line 481
[Sat Jan 18 15:01:43 2014] [error] [client ::1] PHP Warning: assert(): Assertion failed in /var/www/toe/game.php on line 481
[Sat Jan 18 15:03:08 2014] [error] [client ::1] PHP Warning: assert(): Assertion failed in /var/www/toe/game.php on line 481

 

15. less
Τί κάνει: Προβάλλει τα περιεχόμενα ενός αρχείου και αφήνει τον χρήστη να πάει πάνω-κάτω στο αρχείο
Τί σημαίνει: Σίγουρα όχι αυτά που θα ήθελε να κάνει το ίδιο το πρόγραμμα σαν πρόγραμμα
Συνοπτική σύνταξη: less file
Εφαρμογή #1: Show me le file!

gclkaze@tzertzelos:$ less file
Advertisements

2 thoughts on “UNIX για αρχάριους – Τα Στανταράκια

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s