One Liners

HOWTO και TIP.
Άβαταρ μέλους
kargig
Sr. Member
Sr. Member
Δημοσιεύσεις: 448
Εγγραφή: 08 Νοέμ 2005, 21:42
Distro: Windows
Τοποθεσία: Ioannina
Επικοινωνία:

One Liners

Δημοσίευση από kargig » 17 Απρ 2007, 00:54

Ας ξεκινίσουμε να γράφουμε ο καθένας από 1 (ένα) one liner που του αρέσει. Όχι απαραίτητα το πιο μπερδεμένο, ή το αγαπημένο του ή ...

και κάνω την αρχή με το:

Κώδικας: Επιλογή όλων

du --max-depth 1 | sort -rg | head -n 10
Η οποία δίνει τους 10 μεγαλύτερους σε μέγεθος υποκαταλόγους του παρόντος καταλόγου.
Αναλυτικά:
a) du = disk usage (χρήση του δίσκου)
--max-depth 1 = να δείξει μόνο ένα επίπεδο υποκαταλόγων
b) sort = ταξινόμηση
-r = reverse (με αντίθετη σειρά)
-g = ταξινόμηση σύμφωνα με την αριθμητική τιμή

c) head = εκτύπωση γραμμών από την αρχή του αρχείου
-n 10 = τις πρώτες 10

Άβαταρ μέλους
Indy
Jr. Member
Jr. Member
Δημοσιεύσεις: 87
Εγγραφή: 29 Νοέμ 2005, 15:29
Distro: Windows
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

One Liners

Δημοσίευση από Indy » 18 Απρ 2007, 22:46

Τυπώνει τον εαυτό του.

Κώδικας: Επιλογή όλων

python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"
Programs must be written for people to read, and only incidentally for machines to execute.

Άβαταρ μέλους
agorf
Top Poster
Top Poster
Δημοσιεύσεις: 637
Εγγραφή: 07 Νοέμ 2005, 23:44
Distro: Debian testing
Τοποθεσία: Χαλκίδα
Επικοινωνία:

One Liners

Δημοσίευση από agorf » 18 Απρ 2007, 23:39

Κώδικας: Επιλογή όλων

sed "$( printf 's/%%%02X/\\x%02X/ig;' $( ( seq 38 255 ; seq 0 37 ) | sed p ) )"
Μετατρέπει το %20 σε ' ' κλπ.

Πηγή

Άβαταρ μέλους
kargig
Sr. Member
Sr. Member
Δημοσιεύσεις: 448
Εγγραφή: 08 Νοέμ 2005, 21:42
Distro: Windows
Τοποθεσία: Ioannina
Επικοινωνία:

One Liners

Δημοσίευση από kargig » 19 Απρ 2007, 00:26

@Indy: μάλλον δεν κατάλαβες το πνεύμα του post μου. Σκοπός δεν είναι να γράψει ο καθένας ένα οποιοδήποτε oneliner, αλλά κάτι που μπορεί να φανεί χρήσιμο και για τους υπόλοιπους μαζί με μια εξήγηση.

Γράφεις κάτι..θεωρείς ότι είναι χρήσιμο...εξήγησε και πως/γιατί δουλεύει. Μια αράδα από γράμματα χωρίς εξήγηση τι νόημα έχει ? Που θα το χρειαστεί κάποιος ?

Αν δεν είναι δικό σου και υπάρχει κάπου αλλού η εξήγηση δώσε την πηγή όπως έκανε και ο agorf.

Άβαταρ μέλους
Indy
Jr. Member
Jr. Member
Δημοσιεύσεις: 87
Εγγραφή: 29 Νοέμ 2005, 15:29
Distro: Windows
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

One Liners

Δημοσίευση από Indy » 19 Απρ 2007, 22:12

Όντως, ένα self-printing πρόγραμμα δεν έχει και πολλή χρηστικότητα. Πάντως εξηγώ τί κάνει, συνεπώς δεν είναι μια αράδα από γράμματα χωρίς εξήγηση. Θα φροντίσω τα one-liners που θα κάνω post από δω και πέρα, να έχουν μια πιο πρακτική εφαρμογή.
Programs must be written for people to read, and only incidentally for machines to execute.

Άβαταρ μέλους
kargig
Sr. Member
Sr. Member
Δημοσιεύσεις: 448
Εγγραφή: 08 Νοέμ 2005, 21:42
Distro: Windows
Τοποθεσία: Ioannina
Επικοινωνία:

One Liners

Δημοσίευση από kargig » 27 Απρ 2007, 16:51

Κώδικας: Επιλογή όλων

dpkg --list | cut -d" " -f3 > pack.list
Το παραπάνω oneliner δίνει μια λίστα με όλα τα πακέτα που είναι installed σε ενα debian-οειδές σύστημα και την αποθηκεύει στο αρχείο pack.list στον τρέχον κατάλογο.

Άβαταρ μέλους
kargig
Sr. Member
Sr. Member
Δημοσιεύσεις: 448
Εγγραφή: 08 Νοέμ 2005, 21:42
Distro: Windows
Τοποθεσία: Ioannina
Επικοινωνία:

One Liners

Δημοσίευση από kargig » 08 Μάιος 2007, 10:54

Batch convert/resize των JPG σε ένα φάκελο από οποιοδήποτε μέγεθος σε 1024x768 και αποθήκευσή τους με prefix "small_". Για παράδειγμα αν μια φωτογραφία λέγεται PA230994.JPG, μετά το convert θα λέγεται small_PA230994.JPG.

Κώδικας: Επιλογή όλων

for i in *.JPG; do convert $i -quality 85 -geometry '1024x768' small_$i;done
Για να κάνετε το ίδιο αλλά σε 2048x1536 και χωρίς να δώσετε νέο όνομα στις φωτογραφίες (χάνετε τις original δηλαδή):

Κώδικας: Επιλογή όλων

mogrify -quality 85 -geometry ‘2048×1536>’ *.JPG
Οι εντολές "convert" και "mogrify" είναι μέρος του πακέτου ImageMagick.

Άβαταρ μέλους
kargig
Sr. Member
Sr. Member
Δημοσιεύσεις: 448
Εγγραφή: 08 Νοέμ 2005, 21:42
Distro: Windows
Τοποθεσία: Ioannina
Επικοινωνία:

One Liners

Δημοσίευση από kargig » 09 Μάιος 2007, 23:19

Μετατροπή Unix Time σε "normal":

Κώδικας: Επιλογή όλων

$ perl -e 'print scalar localtime($ARGV[0]),"\n"' 1178741891 
Wed May  9 23:18:11 2007

Άβαταρ μέλους
agorf
Top Poster
Top Poster
Δημοσιεύσεις: 637
Εγγραφή: 07 Νοέμ 2005, 23:44
Distro: Debian testing
Τοποθεσία: Χαλκίδα
Επικοινωνία:

One Liners

Δημοσίευση από agorf » 10 Μάιος 2007, 01:17

Κώδικας: Επιλογή όλων

$ date --date "Jan 1, 1970 00:00:00 +0000 +1178741891 seconds"
:P

Άβαταρ μέλους
tasosos
Member
Member
Δημοσιεύσεις: 120
Εγγραφή: 22 Νοέμ 2005, 19:03
Distro: Debian
Τοποθεσία: Ιωάννινα

One Liners

Δημοσίευση από tasosos » 11 Ιουν 2007, 13:41

echo Your systems uptime is $((`cut -f1 -d' ' /proc/uptime | cut -f1 -d.` / 60)) mins

Εμφανιζει το uptime ενός συστήματος στην μορφή Your systems uptime is X mins

Το /proc/uptime μέσα έχει 2 αριθμούς.Ο ένας προσδιορίζει το uptime και ο άλλος το idle.Και οι 2 είναι χρόνοι.
Η παραπάνω γραμμή παίρνει μόνο τον πρώτο αριθμό μέσω του cut -f1 και το διαιρεί με το 60.Έτσι μας δέιχνει το uptime του συστήματος σε λεπτά.

Άβαταρ μέλους
Fuzz
Sr. Member
Sr. Member
Δημοσιεύσεις: 364
Εγγραφή: 22 Νοέμ 2005, 12:09
Distro: Debian
Τοποθεσία: Nowhere
Επικοινωνία:

One Liners

Δημοσίευση από Fuzz » 11 Ιουν 2007, 20:41

Διαγραφή σχολίων και κενών γραμμών από config files, συνίθως είναι χρήσιμο για πολύ μεγάλα configs όπως πχ για το squid.

Κώδικας: Επιλογή όλων

grep -v ^# /etc/squid/squid.conf | sed '/^$/d' > squid.conf
με το grep -v ^# αφαιρούμε όλες τις γραμμές που ξεκινάνε με # (τα comments) και με το sed '/^$/d' αφαιρούμε όλες τις κενές γραμμές.
Boo!

Άβαταρ μέλους
agorf
Top Poster
Top Poster
Δημοσιεύσεις: 637
Εγγραφή: 07 Νοέμ 2005, 23:44
Distro: Debian testing
Τοποθεσία: Χαλκίδα
Επικοινωνία:

One Liners

Δημοσίευση από agorf » 11 Ιουν 2007, 21:09

Και με sed μόνο:

Κώδικας: Επιλογή όλων

sed '/^#.*$/d;/^$/d' /etc/squid/squid.conf

Άβαταρ μέλους
ulv
Member
Member
Δημοσιεύσεις: 141
Εγγραφή: 17 Σεπ 2006, 03:36
Distro: Windows
Τοποθεσία: ::1
Επικοινωνία:

Re: One Liners

Δημοσίευση από ulv » 14 Δεκ 2007, 00:41

Αν έχετε κάνει checkout κάποιο CVS repository και κάποια στιγμή αλλάξει το hostname του server τότε θα πρέπει είτε να το ξανακάνετε checkout είτε να αλλάξετε το CVSROOT πού έχει καταχωρηθεί στο αρχείο Root που υπάρχει στο φάκελο CVS που με τη σειρά του υπάρχει σε κάθε κατάλογο που έχετε κάνει checkout από το repository. H παρακάτω λούπα θα αλλάξει όλα το περιεχόμενο όλων των CVS/Root σε my.host:/cvs/mycvs. Προυποθέτει ότι βρίσκεστε στο top directory του repository που έχει γίνει checkout.

Κώδικας: Επιλογή όλων

for i in `find . -print | grep CVS/Root`;do echo my.host:/cvs/mycvs > $i;done

Άβαταρ μέλους
ulv
Member
Member
Δημοσιεύσεις: 141
Εγγραφή: 17 Σεπ 2006, 03:36
Distro: Windows
Τοποθεσία: ::1
Επικοινωνία:

Re: One Liners

Δημοσίευση από ulv » 03 Μαρ 2008, 19:00

dd copy μέσω ssh από localhost se κάποιον άλλον host:

Κώδικας: Επιλογή όλων

dd if=/path/to/wherever | ssh -c blowfish user@host "dd of=/path/to/wherever
Διαβάζει το τοπικό δίσκο, image, ή τι άλλο είναι, συνδέεται με ssh στο απομακρυσμένο σύστημα με κρυπτογράφηση "blowfish" και μέσω του pipe ολοκληρώνει στο απομακρυσμένο σύστημα την αντιγραφή/κλονοποίηση.

Απάντηση

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης