Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Ευχαριστώ :)

το eval δεν έβρισκα.

Εσύ τουλάχιστον έχεις δουλέψει και bash :P

Το eval είναι κλασικός τρόπος για να κάνεις evaluate εκφράσεις και να τις περάσεις στο κέλυφος. Σίγουρα το έχεις δει να το χρησιμοποιούν με προγράμματα που "φτύνουν" variables όπως πχ ο ssh-agent απλά δεν θα το θυμόσουν.

 

% ssh-agent 
SSH_AUTH_SOCK=/tmp/ssh-vjEUMAJH8jYE/agent.2447; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2448; export SSH_AGENT_PID;
echo Agent pid 2448;
Χωρίς το eval, για να τα περάσεις αυτά στο κέλυφος, θα έπρεπε να τρέξεις "ssh-agent > tmp-file; source tmp-file" ενώ τρέχεις ένα απλό "eval $(ssh-agent)" και γίνεται η δουλειά.
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

εχουμε την function1 οπου θελουμε την stderr της σε καποιο log και να εκτελεσουμε κατι μετα αν υπηρξε error

 

παραλληλα πρεπει να δινουμε την stdout της στην stdin της function2

 

πως θα το κανατε?

 

subshell με pipe και αρχειο

(function1 2>> log || touch err) | function2

if [ -f err ]; then mplampla
ή group με process substitution και variable

{ function1 2>> log || err=y; } > >(function2)

if [ -n "$err" ]; then mplampla
ή καπως αλλιως?
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

εχουμε την function1 οπου θελουμε την stderr της σε καποιο log και να εκτελεσουμε κατι μετα αν υπηρξε error

 

παραλληλα πρεπει να δινουμε την stdout της στην stdin της function2

 

πως θα το κανατε?

 

subshell με pipe και αρχειο

 

(function1 2>> log || touch err) | function2

if [ -f err ]; then mplampla
ή group με process substitution και variable

{ function1 2>> log || err=y; } > >(function2)

if [ -n "$err" ]; then mplampla
ή καπως αλλιως?
Αυτό σου κάνει;

 

{ function1 2>> log || mplampla } >> (function2)
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό σου κάνει;

 

{ function1 2>> log || mplampla } >> (function2)

nope, θελω να ειναι μετα το γιουρουσι και οχι μεσα  :P

 

[rant]

Είτε βλέπεις bash, είτε βλέπεις brainfuck το ένα και το αυτό είναι

[/rant]

 

ξυλο? 23.gif

 

:-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 μήνες μετά...

καλησπέρα και καλη Ανάσταση,

 έχω το εξής πρόβλημα

θέλω να πάρω τυχαίους αριθμούς με γνωστό άθροισμα ή με γνωστό μέσο όρο

 

για παράδειγμα 1) 15 αριθμοί με άθροισμα 150 και να μου δίνει  15 τυχαίες τιμές  (να μπορώ να όρισω αν θέλω νούμερα μετά το κόμμα ή όχι - ακέραιοι ή δεκαδικοί)

 

παράδειγμα 2) 15 αριθμοί με μέσο όρο 20 και να μου δίνει 15 τυχαίες τιμές που βγάζουν αυτό το μέσο όρο.(να μπορώ παλι να ορίσω αν είναι ακέραιοι ή δεκαδικοί)

 

φαντάζομαι στο τερμάτικο γίνεται....(ελπίζω)

παρακαλώ τα φώτα σας!

ευχαριστώ!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Υπαρχει one-liner για να πάρω το χρήστη που είναι συνδεδεμένος σε Χ{org,wayland}?

Πριν είχα αυτό:

w|grep :0|cut -d " " -f1|sort|uniq
αλλά με μια αναβάθμιση μάλλον στo πακέτο πλέον δε γίνεται.

Μάλλον κάτι με lastlog ή ps είναι πιο καταλληλο αλλά θα με ενδιέφερε να υπάρχει η εντολή προεγκατεστημένη σε όλες τις distros και να είναι uniform η λύση.

Τι εννοώ με το uniform:

Στο fedora ο Xorg, Xwayland απο τον desktop manager ξεκινάει στο tty2 ενω απο άλλους dm στο tty1 ή σε άλλες διανομές ξέρω οτι ξεκινάει στο tty6 και άνω.

Ποιός θα βοηθήσει με τη σπαζοκεφαλιά;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πλέον δηλαδή άλλαξε η συμπεριφορά και το grep της display :0 δεν λειτουργεί ? Όταν γράφεις σκέτο w τι παίρνεις ?

 

Χωρίς να είναι 100% εγγυημένο, οι περισσότερες διανομές ξεκινούν το γραφικό μέσα από ένα ck-launch-κάτι ώστε να δημιουργείται μια συνεδρία οπότε θα μπορούσες να πάρεις πληροφορίες και με το ck-list-sessions.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@mad-proffessor

 

Η εντολη παντως δουλευει σε archlinux +xorg 1.19.3-2+mate 1.18 (σε ποιο πακετο αναφερεσαι οτι εχει αλλαξει?)

 

Λογικα αν κανεις ενα ps με grep τον dm (αν δεν αλλαζει δηλ και ειναι γνωστος) , θα μπορεις με καποιον τροπο να τσιμπησεις τον user..

Ποια θαναι η συνταξη μιας τετοιας εντολης...ιδεα δεν εχω :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

lolzies, ευχαριστώ για το καταιγισμό απαντήσεων:

 

Πλέον δηλαδή άλλαξε η συμπεριφορά και το grep της display :0 δεν λειτουργεί ? Όταν γράφεις σκέτο w τι παίρνεις ?

Χωρίς να είναι 100% εγγυημένο, οι περισσότερες διανομές ξεκινούν το γραφικό μέσα από ένα ck-launch-κάτι ώστε να δημιουργείται μια συνεδρία οπότε θα μπορούσες να πάρεις πληροφορίες και με το ck-list-sessions.

Μάλλον είναι υπόθεση του rootless Xwayland που έχει η fedora και όχι η αλλαγή του πακέτου  και δε μου δουλευει.

Σε fedora έχει πάψει να χρησιμοποιείται consolekit εδω και αιώνες (ο gdm κάνει αίτημα μέσω dbus για νέο session στο systemd-logind).

To w δίνει το tty2 που έγινε το login(lol ξέχασα να πω ότι έχω κάνει ματσακονιά/χακιά  στο service file του gdm μάλλον αυτό φταίει). Θα κάνω edit πιο μετά το post με το ακριβές output.

Αλλα μου έδωσες ιδέα να πάρω infos απο loginctl, nice one.

 

@mad-proffessor

 

Η εντολη παντως δουλευει σε archlinux +xorg 1.19.3-2+mate 1.18 (σε ποιο πακετο αναφερεσαι οτι εχει αλλαξει?)

 

Λογικα αν κανεις ενα ps με grep τον dm (αν δεν αλλαζει δηλ και ειναι γνωστος) , θα μπορεις με καποιον τροπο να τσιμπησεις τον user..

Ποια θαναι η συνταξη μιας τετοιας εντολης...ιδεα δεν εχω :)

Δες την απάντηση  που έδωσα παραπάνω, το ps με ένα συνδυασμό απο lastlog και w θα μου δώσει τη λύση νομίζω, θα το ψάξω λίγο περισσότερο.

 

 

Κάτι τέτοιο;

ps aux | grep  Xorg | awk '{print $1}' | uniq

Στα υπόψιν, thx.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν μετα απο σκέψη κατέληξα στα εξής που δουλεύουν σωστα σε fedora:

#!/bin/sh
#we need to write a bash/zsh compatible script
#first make sure that ps isn't an alias(happened to me)
/usr/bin/unalias ps
#then get the X user
getXorgUser=`/bin/ps -aux|/usr/bin/grep Xorg|/usr/bin/cut -d " " -f1|/usr/bin/sort|/usr/bin/uniq` 
getWaylandUser=`/bin/ps -aux|/usr/bin/grep "Xwayland :0"|/usr/bin/cut -d " " -f1|/usr/bin/sort|/usr/bin/uniq`

#do the script logic here with an if loop

Ας επιβεβαιώσουν και οι άλλες διανομές

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@mad-professor

 

H εντολη γυρναει 2 χρηστες , user/root (που user ειναι ο...user :) ).

Και ειναι λογικο γιατι αν κανεις στην ουσια ps -aux |grep Xorg , εκεινη την στιγμη θα βρει 2 αποτελεσματα..την διεργασια του Xorg και την διεργασια που μολις ετρεξες...Ο Xorg τρεχει σαν root..η εντολη που μολις τρεξαμε σαν "user".Eξ ' ου λοιπον και τα 2 αποτελεσματα.

 

Δεν εχω καταλαβει τι θες να "βγαλεις"...το ονομα του συνδεδεμενου χρηστη στον Xorg ?Αν ναι , τοτε οπως το καταλαβαινω με grep στον Xorg δεν τον παιρνεις..απλα παιρνεις τον χρηστη υπο τον οποιο τρεχει ο Xorg , τον root δηλ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@mad-professor

 

H εντολη γυρναει 2 χρηστες , user/root (που user ειναι ο...user :) ).

Και ειναι λογικο γιατι αν κανεις στην ουσια ps -aux |grep Xorg , εκεινη την στιγμη θα βρει 2 αποτελεσματα..την διεργασια του Xorg και την διεργασια που μολις ετρεξες...Ο Xorg τρεχει σαν root..η εντολη που μολις τρεξαμε σαν "user".Eξ ' ου λοιπον και τα 2 αποτελεσματα.

 

Δεν εχω καταλαβει τι θες να "βγαλεις"...το ονομα του συνδεδεμενου χρηστη στον Xorg ?Αν ναι , τοτε οπως το καταλαβαινω με grep στον Xorg δεν τον παιρνεις..απλα παιρνεις τον χρηστη υπο τον οποιο τρεχει ο Xorg , τον root δηλ.

Σου είναι εύκολο είτε ένα printscreen ή ένα paste το output της εντολής να δω τι πρέπει να γίνει grep (γιατι σε fedora είμαι άψογος).

Βασικά μάλλος θα υπάρξει failsafe δικλείδα με w μιας και δουλευει σε arch(αποτι καταλαβα οτι χρησιμοποιείς).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...