Voglio scrivere l'analogo Ubuntu di un "file batch" (uno script di shell). Ma non so come usare il comando chmod +x filename
per fare in modo che lo script possa essere eseguito. Né so dove usarlo.
chmod +x
su un file (il tuo script) significa solo che lo renderai eseguibile. Cliccate con il tasto destro del mouse sul vostro script e scegliete Proprietà -> Permissioni -> Consenti l'esecuzione del file come programma, vi lascia esattamente lo stesso risultato del comando in terminale.
Se un file su cui volete cambiare i permessi si trova all'interno della directory di sistema potreste aver bisogno di essere root
, così: (fate attenzione, mentre usate il comando sudo
)
sudo chmod +x /usr/share/testfolder/aFile
Inoltre non è chiaro cosa esattamente vuoi archiviare qui. Per favore modifica la tua domanda e dai qualche dettaglio in più sul problema attuale!
Puoi anche fare riferimento a questa domanda, per maggiori informazioni: chmod u+x' contro 'chmod +x
br>
Digita man chmod
in una finestra di terminale (Ctrl+Alt+T) e avrai il seguente output:
NOME: chmod - cambia i bit di modalità del file
SYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
DESCRIZIONE
This manual page documents the GNU version of chmod. chmod changes the
file mode bits of each given file according to mode, which can be either
a symbolic representation of changes to make, or an octal number repre‐
senting the bit pattern for the new mode bits.
The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where
perms is either zero or more letters from the set rwxXst, or a single
letter from the set ugo. Multiple symbolic modes can be given, sepa‐
rated by commas.
A combination of the letters ugoa controls which users' access to the
file will be changed: the user who owns it (u), other users in the
file's group (g), other users not in the file's group (o), or all users
(a). If none of these are given, the effect is as if a were given, but
bits that are set in the umask are not affected.
The operator + causes the selected file mode bits to be added to the
existing file mode bits of each file; - causes them to be removed; and =
causes them to be added and causes unmentioned bits to be removed except
that a directory's unmentioned set user and group ID bits are not
affected.
The letters rwxXst select file mode bits for the affected users: read
(r), write (w), execute (or search for directories) (x), execute/search
only if the file is a directory or already has execute permission for
some user (X), set user or group ID on execution (s), restricted dele‐
tion flag or sticky bit (t). Instead of one or more of these letters,
you can specify exactly one of the letters ugo: the permissions granted
to the user who owns the file (u), the permissions granted to other
users who are members of the file's group (g), and the permissions
granted to users that are in neither of the two preceding categories
(o).
A numeric mode is from one to four octal digits (0-7), derived by adding
up the bits with values 4, 2, and 1. Omitted digits are assumed to be
leading zeros. The first digit selects the set user ID (4) and set
group ID (2) and restricted deletion or sticky (1) attributes. The sec‐
ond digit selects permissions for the user who owns the file: read (4),
write (2), and execute (1); the third selects permissions for other
users in the file's group, with the same values; and the fourth for
other users not in the file's group, with the same values.
chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions. This is not a problem since the
permissions of symbolic links are never used. However, for each sym‐
bolic link listed on the command line, chmod changes the permissions of
the pointed-to file. In contrast, chmod ignores symbolic links encoun‐
tered during recursive directory traversals.
SETUID E SETGID BIT
chmod clears the set-group-ID bit of a regular file if the file's group
ID does not match the user's effective group ID or one of the user's
supplementary group IDs, unless the user has appropriate privileges.
Additional restrictions may cause the set-user-ID and set-group-ID bits
of MODE or RFILE to be ignored. This behavior depends on the policy and
functionality of the underlying chmod system call. When in doubt, check
the underlying system behavior.
OPZIONI
Change the mode of each FILE to MODE.
-c, --changes
like verbose but report only when a change is made
--no-preserve-root
do not treat `/' specially (the default)
--preserve-root
fail to operate recursively on `/'
-f, --silent, --quiet
suppress most error messages
-v, --verbose
output a diagnostic for every file processed
--reference=RFILE
use RFILE's mode instead of MODE values
-R, --recursive
change files and directories recursively
--help display this help and exit
--version
output version information and exit
Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.
Per prima cosa, il vostro script deve dichiarare quale interprete usare. Lo si fa nella prima linea del file. Se è uno script di shell, dovrebbe essere #!/bin/sh
o #!/bin/bash
.
Quindi ecco uno script che scrive il vostro nome utente: echo-whoami.sh
echo $(whoami)
Per renderlo eseguibile, usate chmod +x echo-whoami.sh
. Poi puoi eseguirlo usando ./echo-whoami.sh
.
Un file batch e uno shell script sono due termini che significano effettivamente la stessa cosa sotto Linux. Il termine script è però molto più spesso usato.
Il più semplice file di script di shell contiene solo comandi come li digitereste sulla linea di comando (cioè l'interprete di comandi Bash). In teoria si può anche sostituire l'interprete con qualsiasi linguaggio che ti piace (e per il quale hai un interprete). Per essere più esplicito, si suggerisce di iniziare la prima riga con
#!/bin/sh
(se si vuole la massima portabilità con i sistemi legacy)
oppure
#!/bin/bash
(se vuoi alcune caratteristiche extra, che probabilmente non ti interessano oggi)
Dopo questa linea inserite i vostri comandi, uno per riga. Ci sono molti costrutti extra oltre lo scopo di questa domanda, si veda man bash
o http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf (per principianti) o http://www.tldp.org/LDP/abs/abs-guide.pdf (per domande più avanzate).
Per eseguire effettivamente il vostro script, ci sono due requisiti: In primo luogo, il processo interprete ha bisogno di leggere il file, e in secondo luogo controlla se è segnato come eseguibile. Per ragioni di convenienza è anche utile essere in grado di scrivere sul proprio script (in modo da poter apportare modifiche o correzioni se necessario).
Supponendo inoltre che si desideri che i membri del team e altri siano in grado di eseguire (e vedere) il proprio script, ma che non si voglia che lo manipolino, la combinazione di
a+x
o +x
, poiché a
è il default),a+r
o +r
, dato che a
è di nuovo il default),u=w
)sono di solito valori ragionevoli dei tuoi permessi sui file. Puoi digitare le singole azioni concatenate, separate da una virgola.
Anche se questo "linguaggio delle azioni" è molto affascinante (notate la differenza tra l'operatore +
e l'operatore =
che portano a risultati diversi a seconda dell'impostazione dei permessi prima di cambiarli), sono noiosi da digitare.
Poiché tutte le azioni creano maschere di bit che vengono applicate internamente, puoi digitare le maschere di bit (vedi man chmod
per i dettagli) anche direttamente.
*Per uno shellscript chmod 755 myscript.sh* ha senso almeno nel 95% dei casi.