Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Aiuto] Risolvere esercizi bash

    (1) Trovare tutti i file con una certa estensione(xxx) in una cartella, controllare che siano eseguibili e li esegua, ho dato questa soluzioni ma da errori:

    codice:
    find ./prog/src -name "*.xxx" -print | while read $LINE
    do
    if [ -x $LINE ]
    then
    . $LINE
    fi
    done

    (2) Supporre di avere una cartella con un makefile e i file descritti al suo interno, implementare in bash la stessa cosa che si sarebbe eseguito digitando da terminale il comando make.
    Sono bene accetti suggerimenti

    (3)script bash che per ogni utente connesso al sistema crei nella cartella corrente un file <nomeutente>.txt (utilizzando il comando who).
    Sono bene accetti suggerimenti(bisogna usare i comandi cut e unique)

  2. #2
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263

    Re: [Aiuto] Risolvere esercizi bash

    Originariamente inviato da topolino
    (1) Trovare tutti i file con una certa estensione(xxx) in una cartella, controllare che siano eseguibili e li esegua, ho dato questa soluzioni ma da errori:

    codice:
    find ./prog/src -name "*.xxx" -print | while read $LINE
    do
    if [ -x $LINE ]
    then
    . $LINE
    fi
    done
    A parte gli errori che dipendono (probabilmente) dal comando . $LINE, puoi usare find per fare tutto in un colpo

    Originariamente inviato da topolino
    (2) Supporre di avere una cartella con un makefile e i file descritti al suo interno, implementare in bash la stessa cosa che si sarebbe eseguito digitando da terminale il comando make.
    Sono bene accetti suggerimenti
    Non conoscendo granche' make non saprei dirti, ma cosi` com'e` posto l'esercizio ("i file descritti al suo interno"?!?) mi pare abbia poco senso...

    Originariamente inviato da topolino
    (3)script bash che per ogni utente connesso al sistema crei nella cartella corrente un file <nomeutente>.txt (utilizzando il comando who).
    Sono bene accetti suggerimenti(bisogna usare i comandi cut e unique)
    Sinceramente piu` che suggerirti di usare cut e uniq (non unique!) non saprei che dirti, mi pare di una banalita` sconcertante...

  3. #3
    Grazie per la considerazione, pero' soluzioni alternative al primo o soluzioni intere sono bene accette altrimenti non avrei postato i dubbi..
    Grazie

  4. #4
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Originariamente inviato da topolino
    soluzioni alternative al primo o soluzioni intere sono bene accette
    Certo che sono bene accette, pero` gli esercizi li fanno fare a TE per mettere in moto il TUO cervello!

    Venendo al dunque...

    Per il primo ti bastano il comando find e le espressioni -executable e -exec, le trovi documentate nel manuale rispettivamente nelle sezioni TESTS e ACTIONS. Dopodiche' mi pare che non ci sia molto altro da dire...

    Per l'ultimo invece basta che osservi l'output del comando who, se sai come funzionanto cut e uniq (e se non lo sai e` questione di leggere, male che vada, un centinaio di righe di manuale) diventa facile capire come fare a ottenere in output l'elenco degli utenti loggati. Visto che poi conosci anche qualche trucco sporco tipo "| while read" dovrebbe essere semplice mettere insieme tutto quanto e ottenere la soluzione.

    Invece circa il secondo non saprei proprio aiutarti.

  5. #5
    ok grazie
    il primo risolto e il terzo quasi..

  6. #6
    up

  7. #7
    Esercizio 1:
    codice:
    if (( $# != 2 )); then
        echo "$0: Numero argomenti inesatto"
        echo "$0: Uso: $0 DIRECTORY ESTENSIONE"
        exit 1
    fi
    
    if ! [[ -d $1 ]]; then
        if ! [[ -e $1 ]]; then
            echo "$0: $1: Directory non esistente"
        else
            echo "$0: $1: Non e' una directory"
        fi
        exit 1
    fi
    
    directory=$1
    ext=$2
    
    for entry in $( ls $directory  ); do
        if echo $entry | grep -q \.$ext$; then
            echo $entry
        fi
    done
    Esercizio 3:
    codice:
    for user in $( who | awk '{ print $1 }'); do
        touch $user.txt
    done
    Ultima modifica di __casper__; 08-03-2025 a 18:00

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.