GNU/Linux >> Linux Esercitazione >  >> Linux

Usando la forza sulla riga di comando di Linux

Qualche volta nella storia recente, i nerd di fantascienza hanno iniziato una celebrazione annuale di tutto Star Wars il 4 maggio, un gioco di parole sulla benedizione Jedi, "Che la Forza sia con te". Sebbene la maggior parte degli utenti Linux probabilmente non siano Jedi, hanno ancora modi per usare la forza. Ovviamente, il film potrebbe non essere stato così eccitante se Yoda avesse semplicemente detto a Luke di digitare uomo combattente X-Wing o forza umana . O se avesse detto "RTFM" (leggi il Force Manual, ovviamente).

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Molti comandi Linux hanno una -f opzione, che sta per, avete indovinato, forza! A volte, quando si esegue un comando, non riesce o viene richiesto un input aggiuntivo. Questo potrebbe essere uno sforzo per proteggere i file che stai tentando di modificare o informare l'utente che un dispositivo è occupato o un file esiste già.

Se non vuoi essere disturbato dai messaggi o non ti interessano gli errori, usa la forza!

Tieni presente che l'utilizzo dell'opzione di forza di un comando per ignorare queste protezioni è, in genere, distruttivo. Pertanto, l'utente deve prestare molta attenzione ed essere sicuro di sapere cosa sta facendo. Usare la forza può avere conseguenze!

Di seguito sono riportati quattro comandi Linux con un'opzione di forza e una breve descrizione di come e perché potresti volerla utilizzare.

cp

Il pc comando è l'abbreviazione di copy:viene utilizzato per copiare (o duplicare) un file o una directory. La pagina man descrive l'opzione di forza per cp come:

-f, --force
       if an existing destination file cannot be opened, remove it
       and try again

Questo esempio è per quando lavori con file di sola lettura:

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 13 May  1 12:24 Hoth
-r--r----- 1 alan alan 14 May  1 12:23 Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Green Planet

Se vuoi copiare un file chiamato Hoth a Naboo , il cp comando non lo consentirà poiché Naboo è di sola lettura:

[alan@workstation ~]$ cp Hoth Naboo 
cp: cannot create regular file 'Naboo': Permission denied

Ma usando la forza, cp non verrà richiesto. I contenuti e le autorizzazioni di Hoth verrà immediatamente copiato su Naboo :

[alan@workstation ~]$ cp -f Hoth Naboo 
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Icy Planet

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May  1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May  1 12:38 Naboo

Oh no! Spero che abbiano abbigliamento invernale su Naboo.

ln

Il ln comando viene utilizzato per creare collegamenti tra i file. La pagina man descrive l'opzione di forza per ln come:

-f, --force
       remove existing destination files

Supponiamo che la principessa Leia stia mantenendo un server di applicazioni Java e abbia una directory in cui sono archiviate tutte le versioni di Java. Ecco un esempio:

leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

Come puoi vedere, ci sono diverse versioni del Java Development Kit (JDK) e un collegamento simbolico che punta all'ultima. Utilizza uno script con i seguenti comandi per installare le nuove versioni di JDK. Tuttavia, non funzionerà senza un'opzione di forza o a meno che l'utente root non la esegua:

tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk

Il catrame il comando estrarrà il file .gz nella directory specificata, ma il ln comando non riuscirà ad aggiornare il collegamento perché ne esiste già uno. Il risultato sarà che il collegamento non punta più all'ultimo JDK:

leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May  1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

Può forzare ln per aggiornare correttamente il collegamento passando l'opzione di forza e un'altra, -n . Il -n è necessario perché il collegamento punta a una directory. Ora, il collegamento punta di nuovo all'ultimo JDK:

leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia   12 May  1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May  1 15:44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

È possibile configurare un'applicazione Java per trovare il JDK con il percorso /usr/lib/java/jdk invece di doverlo modificare ogni volta che si aggiorna Java.

rm

Il rm comando è l'abbreviazione di "rimuovi" (che spesso chiamiamo elimina, poiché alcuni altri sistemi operativi hanno un del comando per questa azione). La pagina man descrive l'opzione di forza per rm come:

-f, --force
       ignore nonexistent files and arguments, never prompt

Se provi a eliminare un file di sola lettura, ti verrà richiesto da rm :

[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May  1 11:38 B-wing
[alan@workstation ~]$ rm B-wing
rm: remove write-protected regular file 'B-wing'?

Devi digitare y o n per rispondere alla richiesta e consentire il rm comando di procedere. Se utilizzi l'opzione di forza, rm non ti chiederà e cancellerà immediatamente il file:

[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$

L'uso più comune della forza con rm è eliminare una directory. Il -r L'opzione (ricorsiva) dice a rm per rimuovere una directory. Se combinato con l'opzione di forza, rimuoverà la directory e tutto il suo contenuto senza chiedere conferma.

Il rm comando con determinate opzioni può essere disastroso. Nel corso degli anni, i forum online si sono riempiti di battute e storie dell'orrore di utenti che cancellavano completamente i loro sistemi. Questo uso famigerato è rm -rf * . Questo cancellerà immediatamente tutti i file e le directory senza alcun prompt ovunque venga utilizzato.

userdel

Il utentedel comando è l'abbreviazione di user delete, che cancellerà un utente. La pagina man descrive l'opzione di forza per userdel come:

-f, --force
    This option forces the removal of the user account, even if the
    user is still logged in. It also forces userdel to remove the
    user's home directory and mail spool, even if another user uses
    the same home directory or if the mail spool is not owned by the
    specified user. If USERGROUPS_ENAB is defined to yes in
    /etc/login.defs and if a group exists with the same name as the
    deleted user, then this group will be removed, even if it is
    still the primary group of another user.

    Note: This option is dangerous and may leave your system in an
    inconsistent state.

Quando Obi-Wan raggiunse il castello di Mustafar, sapeva cosa doveva essere fatto. Ha dovuto eliminare l'account utente di Darth, ma Darth era ancora connesso.

[root@workstation ~]# ps -fu darth
UID        PID  PPID  C STIME TTY          TIME CMD
darth     7663  7655  0 13:28 pts/3    00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663

Dal momento che Darth è attualmente connesso, Obi-Wan deve usare l'opzione di forza per userdel . Questo cancellerà l'account utente anche se ha effettuato l'accesso.

[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist

Come puoi vedere, il dito e ps i comandi confermano che l'utente Darth è stato eliminato.

Uso della forza negli script della shell

Molti altri comandi hanno un'opzione di forza. Un posto forza è molto utile è negli script di shell. Poiché utilizziamo gli script nei processi cron e in altre operazioni automatizzate, evitare qualsiasi prompt è fondamentale, altrimenti questi processi automatizzati non verranno completati.

Spero che i quattro esempi che ho condiviso sopra ti aiutino a capire come determinate circostanze possono richiedere l'uso della forza. Dovresti avere una profonda conoscenza dell'opzione di forza quando viene utilizzata dalla riga di comando o nella creazione di script di automazione. Il suo uso improprio può avere effetti devastanti, a volte sull'intera infrastruttura e non solo su un singolo computer.


Linux
  1. Genera password sulla riga di comando di Linux

  2. 8 suggerimenti per la riga di comando di Linux

  3. Un'introduzione all'uso di tcpdump nella riga di comando di Linux

  4. Utilizzo di Google Drive dalla riga di comando di Linux

  5. Crea file utilizzando la riga di comando in Linux

Utilizzo di più per visualizzare i file di testo dalla riga di comando di Linux

Utilizzo di less per visualizzare i file di testo dalla riga di comando di Linux

Usando il comando gratuito di Linux

Padroneggia la riga di comando di Linux

Tutorial sull'uso del comando Timeout su Linux

Come scaricare file in Rocky Linux 8 sulla riga di comando usando wget