Какво прави "chmod +x " и как да го използвам?
Искам да напиша аналог на "пакетния файл" (скрипт на шела) в Ubuntu. Но не знам как да използвам командата chmod +x име на файл
, за да направя така, че скриптът да може да бъде стартиран. Не знам и къде да я използвам.
36
3
Накратко:
chmod +x
върху даден файл (вашия скрипт) означава само, че ще го направите изпълним. Щракването с десния бутон на мишката върху вашия скрипт и избирането на Свойства -> Правомощия -> Да се разреши изпълнението на файла като програма, води до абсолютно същия резултат като командата в терминала.Ако файлът, на който искате да промените правата, се намира в системната директория, може да се наложи да бъдете
root
, както е показано по-долу: (бъдете внимателни, докато използвате командатаsudo
)Също така не е ясно какво точно искате да архивирате тук. Моля, редактирайте въпроса си и дайте малко повече подробности за действителния проблем!
Можете също така да се обърнете към този въпрос за повече информация: chmod u+x' срещу 'chmod +x
In Long:
Напишете
man chmod
в терминален прозорец (Ctrl+Alt+T) и ще получите следния изход:НАИМЕНОВАНИЕ: chmod - промяна на битовете на режима на файла
SYNOPSIS
ОПИСАНИЕ
SETUID И SETGID БИТОВЕ
ОПЦИИ
Първо, скриптът ви трябва да декларира кой интерпретатор да използва. Това се прави на първия ред на файла. Ако става дума за скрипт с обвивка, това трябва да бъде
#!/bin/sh
или#!/bin/bash
.Ето един скрипт, който изписва вашето потребителско име: echo-whoami.sh
#!/bin/sh echo $(whoami)
За да го направите изпълним, използвайте
chmod +x echo-whoami.sh
. След това можете да го стартирате, като използвате./echo-whoami.sh
.Партиен файл и скрипт на шел са два термина, които означават едно и също под Linux. Терминът скрипт обаче се използва много по-често.
Най-простият файл с шел скрипт просто съдържа команди, както бихте ги въвели от командния ред (т.е. от интерпретатора на команди Bash). Теоретично можете дори да замените интерпретатора с всеки език, който ви харесва (и за който имате интерпретатор). За да бъдем по-ясни, предлагаме да започнете първия си ред с
#!/bin/sh
(ако искате максимална преносимост с по-стари системи)или
#!/bin/bash
(ако искате някои допълнителни функции, които вероятно не ви интересуват днес)След този ред въведете командите си, по една на всеки ред. Има много допълнителни конструкции извън обхвата на този въпрос, вижте
man bash
или http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf (за начинаещи) или http://www.tldp.org/LDP/abs/abs-guide.pdf (за по-напреднали въпроси).За да се изпълни вашият скрипт, има две изисквания: Първо, процесът на интерпретатора трябва да прочете файла и второ, той проверява дали той е маркиран като изпълним. От съображения за удобство също така е полезно да можете да записвате в скрипта си (за да можете да правите промени или поправки, ако се наложи).
Ако приемем, че искате членовете на екипа и други лица също да могат да изпълняват (и виждат) вашия скрипт, но не искате да го манипулират, комбинацията от
a+x
или+x
, катоa
е по подразбиране),a+r
или+r
, катоa
отново е по подразбиране),u=w
)обикновено са разумни стойности на правата на файловете ви. Можете да въведете отделните действия слято, разделени със запетая.
Въпреки че този "език на действията" е много увлекателен (обърнете внимание на разликата между операторите
+
и `=``, които водят до различни резултати в зависимост от настройката на разрешенията, преди да ги промените), те са досадни за въвеждане.Тъй като всички действия създават битови маски, които се прилагат вътрешно, можете да въведете битовите маски (вижте
man chmod
за подробности) и директно.За шелскрипт chmod 755 myscript.sh има най-голям смисъл в поне 95 % от всички случаи.