Come posso ottenere un elenco di tutti i repository e PPA dalla riga di comando in uno script di installazione?


217

So come elencare tutti i pacchetti installati sul mio sistema.

Ma come posso ottenere un elenco di tutti i repository e PPA in uno script che posso eseguire su un nuovo computer per replicare la configurazione del repository comprese le chiavi?

So che posso esaminare /etc/apt/sources.liste /etc/apt/sources.list.d, ma sto cercando un modo per generare uno script che esegua tutti i apt-add-repositorycomandi su un nuovo sistema (che risolve il problema ottenendo tutte le chiavi).

Qualche idea?

Risposte:


106

Puoi mostrare tutto con:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*

13
Che ne dici egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*di rimuovere le righe commentate e le righe vuote?

3
potresti per favore spiegare l'uso di ^after grepin grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?

4
@ vasa1 Il carattere ^ e il simbolo di dollaro $ sono metacaratteri che corrispondono rispettivamente alla stringa vuota all'inizio e alla fine di una riga.
Wojox,

4
Uso grep ^ [^ #] ... - Nasconde automaticamente tutte le fonti commentate
Ross Aiken,

13
Se non hai intenzione di filtrare qualcosa, non sarebbe più semplice eseguire semplicementecat /etc/apt/sources.list /etc/apt/sources.list.d/*
jbo5112

99

Grazie per i suggerimenti. Con un po 'di pulizia ho ottenuto uno script che elenca i PPA, ma non altri repository:

#! /bin/sh 
# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in `find /etc/apt/ -name \*.list`; do
    grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        echo sudo apt-add-repository ppa:$USER/$PPA
    done
done

Quando lo chiami con listppa > installppa.shte ottieni uno script che puoi copiare su un nuovo computer per reinstallare tutto PPA.

Prossima fermata: fallo per gli altri repository:

#! /bin/sh
# Script to get all the PPA installed on a system
for APT in `find /etc/apt/ -name \*.list`; do
    grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
        HOST=`echo $ENTRY | cut -d/ -f3`
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        #echo sudo apt-add-repository ppa:$USER/$PPA
        if [ "ppa.launchpad.net" = "$HOST" ]; then
            echo sudo apt-add-repository ppa:$USER/$PPA
        else
            echo sudo apt-add-repository \'${ENTRY}\'
        fi
    done
done

Questo dovrebbe fare il trucco. Avevo bisogno di una domanda sul superutente per capire la regex corretta.


1
Nel tuo grep -oesempio, \` in [a-z0-9\-]non sta facendo quello che ti aspetti. Corrisponde in realtà a una barra rovesciata letterale . Non è necessario per sfuggire alla -quando si trova all'inizio o alla fine della []lista; in realtà, non puoi evitarlo ! .. In questo caso il \`(probabilmente) non causerà un problema, perché (si spera) non incontrerai una barra rovesciata nella debvoce.
Peter,

2
Nota che i nomi PPA possono contenere punti, quindi penso che tu voglia cambiare la tua regexp inhttp://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
kynan

No, vuoi cambiare la regex [[:graph:]] invece [a-z...blah.anything]che perché corrisponderà a qualsiasi carattere alfanumerico + punteggiatura - ecco in cosa consistono i nomi PPA.
MichalH,

Suppongo che dovresti includere la debparola all'inizio di ogni riga del repository, se non fornita nella ppa:$USER/$PPAforma.
jarno,

@stwissel qualche motivo particolare che hai usato per trovare e quindi grep? Puoi facilmente fare un glob che analizza la shell e passarlo a grep. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; doneSi noti che, come scritto, questo mostra il nome del file da cui proviene ciascuna voce, quindi è necessario eseguire un taglio dall'inizio del risultato ai primi due punti, ma non è troppo difficile con il taglio. Puoi anche passarlo attraverso uniqse non vuoi più voci per la stessa fonte (ad esempio se hai Google Chrome Stable / Beta / Dev installato).
dragon788,

23

Sono sorpreso che il modo più semplice ma più efficace per ottenere tutte le fonti di software binario abilitate insieme al file in cui sono specificate non sia stato ancora pubblicato:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

Da tutti i file elaborati, verrà stampata ogni riga che inizia con deb. Ciò esclude le righe commentate e le deb-srcrighe per abilitare i repository di codice sorgente.

Cerca in realtà solo tutti i *.listfile che verranno analizzati apt, ma ad esempio nessun *.list.savefile utilizzato per il backup o altri con nomi illegali.


Se si desidera un output più breve, ma probabilmente solo nel 99,9% di tutti i casi, è possibile che vengano cercati troppi file (include tutti i /etc/apt/sources.list*file e le directory, non solo /etc/apt/sources.liste `/etc/apt/sources.list.d/*), è inoltre possibile Usa questo:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list*

A meno che non ci siano file che non dovrebbero essere presenti, l'output sarà lo stesso.


Un esempio di output sulla mia macchina sarebbe questo:

/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps

Se vuoi un output più bello, passiamo attraverso sed:

grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'

E vedremo questo:

deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps

1
Seguendo la risposta accettata, sembra che OP volesse mostrare i PPA nel ppa:<user>/<project>modulo.
Muru,

La domanda in realtà chiede di generare uno script che installa / abilita tutti i repository. Ma il titolo della domanda riguarda solo il loro elenco. Anche la seconda risposta con il punteggio più alto li elenca, ma elenca troppo.
Byte Commander

Bello, ma avevo già votato. : D
muru,

Puoi usare l'opzione `-h` per grep per escludere i nomi dei file.
jarno,

11

Esegui il seguente comando:

apt-cache policy | grep http | awk '{print $2 $3}' | sort -u

fonte


In bionico questo stampa linee come ' mirrors.nic.funet.fi/ubuntubionic-security/main '
jarno

1
Nota: apt-cache policymostrerà i repository solo dopo aver eseguito apt-get update. Se hai appena aggiunto un repository con add-apt-repository, non verrà visualizzato fino a apt-cache policyquando non apt-get update
eseguirai

Per @wisbucky: sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -ufunziona bene. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea

4

Uso questo comando per elencare tutte le fonti software configurate (repository), comprese quelle attualmente disabilitate :

cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done

Lo uso principalmente per la risoluzione dei problemi; questo può sicuramente essere incorporato negli script, ma potresti voler restringere /etc/apt/sources.list.d/*a in /etc/apt/sources.list.d/*.listmodo da ottenere solo fonti software attualmente abilitate.


Grazie per il feedback. cat elenca i file così come sono, quindi avrei bisogno di modificarli manualmente per generare uno script (come indicato nella domanda). La sfida con i repository: se copi i file da / etc / apt non ottieni le chiavi del repository. Questo è il motivo per cui voglio una sceneggiatura che li
recuperi

2

Quindi, facendo qualche scavo, abbiamo AptPkg::Class.

Quindi usando perlpossiamo fare qualcosa di semplice come questo ..

perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less

Questo ci fornisce un elenco di tutti i AptPkg::Class::PkgFilepacchetti. Probabilmente potresti generare i apt-add-repositorycomandi con quello.


2

https://repogen.simplylinux.ch/ ti fornirà un elenco di tutti i PPA per la tua versione di Ubuntu. Ecco un elenco generato senza file di origine e senza ppa stampante Samsung:

#------------------------------------------------------------------------------#
#                            OFFICIAL UBUNTU REPOS                             #
#------------------------------------------------------------------------------#


###### Ubuntu Main Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse 

###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu yakkety partner

#------------------------------------------------------------------------------#
#                           UNOFFICIAL UBUNTU REPOS                            #
#------------------------------------------------------------------------------#


###### 3rd Party Binary Repos

#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main

#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Run this command: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main

#### Google Chrome Browser - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

#### Google Earth - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/earth/deb/ stable main

#### Highly Explosive PPA - https://launchpad.net/~dhor/+archive/myway
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main

#### JDownloader PPA - https://launchpad.net/~jd-team
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main

#### Lazarus - http://www.lazarus.freepascal.org/
## Run this command:  gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F  && gpg --export --armor 0F7992B0  | sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe

#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main

#### MEGA Sync Client - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./

#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Run this command: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./

#### Mozilla Daily Build Team PPA - http://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main

#### muCommander - http://www.mucommander.com/
## Run this command: sudo wget -O - http://apt.mucommander.com/apt.key | sudo apt-key add - 
deb http://apt.mucommander.com stable main non-free contrib  

#### Opera - http://www.opera.com/
## Run this command: sudo wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free

#### Oracle Java (JDK) Installer PPA - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/java/ubuntu yakkety main

#### PlayDeb - http://www.playdeb.net/
## Run this command: wget -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games

#### SABnzbd PPA - http://sabnzbd.org/
## Run this command:  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main

#### SimpleScreenRecorder PPA - http://www.maartenbaert.be/simplescreenrecorder/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main

#### Steam for Linux - http://store.steampowered.com/about/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [arch=i386] http://repo.steampowered.com/steam/ precise steam

#### Syncthing - https://syncthing.net/
## Run this command: curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release

#### Tor: anonymity online - https://www.torproject.org
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main

#### Unsettings PPA - http://www.florian-diesch.de/software/unsettings/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main

#### VirtualBox - http://www.virtualbox.org
## Run this command: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc -O- | sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib

#### Webmin - http://www.webmin.com
## Run this command: wget http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib

#### WebUpd8 PPA - http://www.webupd8.org/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main

#### Xorg Edgers PPA - https://launchpad.net/~xorg-edgers
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542  
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
here is a generated list without source files and no samsung printer ppa
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse

2

Ecco il mio script " list-apt-repositories", che elenca tutti i repository in " /etc/sources.list"e" /etc/sources.list.d/*.list". È possibile aggiungere --ppa-onlyper mostrare solo i PPA. I PPA vengono automaticamente trasformati in ppa:USER/REPOformato.

Le parti rilevanti sono le 5 linee list_sourcese le list_ppafunzioni, il resto è solo una piastra per avvolgerlo in un comodo script shell.

list-apt-repositories:

#!/bin/sh

usage () {
  cat >&2 <<USAGE
$0 [--ppa-only]

Options:
  --ppa-only            only list PPAs
USAGE
  exit $1
}

list_sources () {
  grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
    cut -f2- -d: |\
    cut -f2 -d' ' |\
    sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g'
}

list_ppa () {
  list_sources | grep '^ppa:'
}

generate=list_sources

while test -n "$1"
do
  case "$1" in
    -h|--help) usage 1;;
    --ppa-only) generate=list_ppa;;
    *)
      printf -- "Unknown argument '$1'\n" >&2
      usage 2
    ;;
  esac
  shift
done

$generate

E per creare uno script di installazione, reindirizza a un altro script " make-apt-repository-install-script". Lo script generato supporta l' argomento -y/ --yesper uso non interattivo (vedi add-apt-repository(1)).

make-apt-repository-install-script:

#!/bin/sh

if test -n "$1"
then
  cat >&2 <<USAGE
Usage: $0 < PATH_TO_LIST_OF_REPOS
       list-apt-repositories [--ppa-only] | $0

No options recognized.

Reads list of repositories from stdin and generates a script to install them
using \`add-apt-repository(1)\`. The script is printed to stdout.

The generated script supports an optional
\`-y\` or \`--yes\` argument which causes the \`add-apt-repository\` commands
to be run with the \`--yes\` flag.
USAGE
  exit 1
fi

cat <<INSTALL_SCRIPT
#!/bin/sh
y=
case "\$1" in
  -y|--yes) y=\$1;;
  '') y=;;
  *)
    printf '%s\n' "Unknown option '\$1'" "Usage: \$0 [{-y|--yes}]" >&2
    exit 1
  ;;
esac
INSTALL_SCRIPT

xargs -d'\n' printf "add-apt-repository \$y '%s'\n"

Ancora una volta, la parte importante è il xargscomando sull'ultima riga, il resto è boilerplate.


1

Per farlo aggiungere le linee ppa.launchpad.net come ppa: $ USER / $ PPA. Aggiungi altri repository con la loro riga completa dai file * .list. Nessuna linea duplicata.

#! / Bin / bash
# My ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin 
x = ~ / bin / restore_repositories
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 per APT in $ (trova / etc / apt / -name \ *. list)
    sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/[^\/[*.\)\([^ \ t] * \) \ (. * $ \) / sudo apt-add-repository ppa : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 fatto
) | ordina | uniq | tee -a ~ / bin / restore_repositories

0

Grazie BobDodds!
Se qualcuno fosse interessato, ho aggiornato un po 'il tuo codice (spero che non ti dispiaccia).
Questo script digiterà solo i PPA aggiunti dall'utente (/etc/apt/sources.list.d).

    #!/bin/bash
    # My ~/bin/mk_repositories_restore_script
    mkdir -p ~/bin
    x=~/bin/restore_repositories
    echo \#\!/bin/bash > $x
    chmod u+x $x
    (
    for APT in $( find /etc/apt/ -name \*.list )
    do sed -n -e '/^deb /{
          /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;                                                                                                                                                                                       
        }' $APT
    done
    ) | sort | uniq | tee -a ~/bin/restore_repositories

0
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*

Ciò non genera comandi per abilitare possibili repository di origine (deb-src).


-1

Installare ppa-purge

apt install ppa-purge

Quindi ottenere l'elenco ppa al completamento della scheda ...

ppa-purge -o(premere Tabdue volte il tasto)


2
È un po 'indietro. In che modo suggerisci che OP raccolga l'output di completamento della shell per l'archiviazione o l'elaborazione? Inoltre, ppa-purgenon ha -oflag in base alla sua pagina di manuale . -1
David Foerster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.