ගොනුවක් (උදා. .Sh ස්ක්‍රිප්ට්) ක්‍රියාත්මක කළ හැකි ආකාරය, එය ටර්මිනලයකින් ධාවනය කළ හැකිය


275

මා සතුව script.sh ගොනුවක් ඇති අතර මෙම ගොනුවේ වර්ගය shellscript ගොනුවකි. මට මෙම ගොනුව යෙදුම / x- ක්‍රියාත්මක කළ හැකි ගොනුවක් බවට පත් කිරීමට අවශ්‍යයි. මම එය සාදා ගන්නේ කෙසේද?



1
විය හැකි අනුපිටපත .sh ගොනු ධාවනය කරන්නේ කෙසේද?
karel

1
එය අනුපිටපතක් නොවේ, මන්ද එය යෙදුම / x- ක්‍රියාත්මක කළ හැකි බවට පත් කිරීම ගැන මම විශේෂයෙන් විමසා ඇත්තෙමි. අනෙක් ප්‍රශ්නය වන්නේ ටර්මිනලයේ sh ගොනුව විවෘත කිරීම පමණි.
සියාඩින් සාඩිගොව්

Answers:


377

ඔබට ගොනුව ක්‍රියාත්මක කළ හැකි ලෙස සලකුණු කළ හැකිය:

chmod +x filename.sh

ඔබට එය මේ ආකාරයට ක්‍රියාත්මක කළ හැකිය:

./filename.sh

එය ආරම්භ කිරීම සඳහා ඔබට වෙනත් විධානයක් භාවිතා කිරීමට අවශ්‍ය නම්, ඔබට අන්වර්ථයක් එක් කළ හැකිය:

gedit ~/.bashrc

ගොනුවේ අවසානයේ මෙය එක් කරන්න:

alias <new name>='/home/<full path to script>/filename.sh'

source ~/.bashrcඅයදුම් කිරීමට නව පර්යන්ත සැසියක් විවෘත කරන්න හෝ ඔබේ පර්යන්තය ටයිප් කරන්න. ස්ක්‍රිප්ට් එක ආරම්භ කිරීමට නව නම භාවිතා කරන්න.


"Alias ​​command1 = '/home/user_name/dir/script.sh' විධානය ඇතුලත් කිරීමෙන් පසු sudo විධානය භාවිතා කරන්නේ කෙසේදැයි ඔබ දන්නවාද? මගේ, එය ක්‍රියා කරන්නේ සුඩෝ නොමැතිව මිස එය සමඟ නොවේ.
ආදිත්‍ය

.Bashrc ධාවනය සංස්කරණය කිරීමෙන් පසු ඔබ නැවත ආරම්භ කළ යුතුය: bash නැවත ආරම්භ කිරීම සඳහා exec bash.
සම්පත් පෙරේරා

2
ක්‍රියාත්මක කළ හැකි ගොනුව ./filename.shපමණක් නොව filename.shඇයි?
user1993

@ user1993 ඔව්, මම ද ඔබ එය ක්රියාත්මක කිරීමට ක්රමයක් සොයමි filenameනොව./filename
MycrofD

@ user1993 සාමාන්‍යයෙන්, භාවිතා ./filename.shකිරීම වත්මන් නාමාවලියෙහි filename.shගොනුවක් නියම කිරීම සහ භාවිතා කිරීම වත්මන් නාමාවලියෙහි හෝ PATH හි ඕනෑම නාමාවලියක ගොනුවක් නියම කරයි. පළමු භාවිතය මඟින් කුමන ගොනුවට ප්‍රවේශ විය හැකිද යන්න පිළිබඳ අවිනිශ්චිතතාවයක් ඉවත් කරයි. මෙම අවස්ථාවෙහිදී, ඔබ උත්සාහ කරන්නේ #!/bin/bashගොනු නාමය ඇතුළත් කිරීමෙන් පමණක් ස්ක්‍රිප්ට් එක බාෂ් හෝ වෙනත් පරිවර්තකයකින් ( ඔබේ ස්ක්‍රිප්ටයේ පළමු පේළිය ලෙස උපකල්පනය කිරීමෙන්) ක්‍රියාත්මක කිරීමට ය. මෙම භාවිතයට නාමාවලිය නියම කිරීම අවශ්‍ය වේ. විකල්පයක් ලෙස, ඔබට නියම bash filename.shනොකළ නාමාවලිය සමඟ වැඩ කරන බව පෙනේ.
a505999

42

ගොනුවක් ක්‍රියාත්මක කළ හැකි ආකාර දෙකක් තිබේ:

GUI ක්‍රමය:

ගොනුව මත දකුණු-ක්ලික් කර ගුණාංග තෝරන්න. අවසර පටිත්ත වෙත ගොස් කොටුව ටික් කරන්න Execute: [ ] Allow executing file as program.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

පර්යන්තය / විධාන ක්‍රමය:

ඔබට භාවිතා කළ හැකිය:

cd /to/my/required/directory

ඉන්පසු දුවන්න

chmod +x filename.extension

නැතහොත් ධාවනය කරන්න:

chmod +x /path/to/your/filename.extension

chmod තවත් දියුණු විකල්ප කිහිපයක් ද ඇත:

අවකාශය එය බෙදී ඇති බව පෙන්වීමට ය: - rwx --- ---

පළමු කට්ටලය ---පරිශීලකයා වේ. දෙවැන්න සමූහය වන අතර අන්තිමයා වෙනත් ය (වෙනත් අය)

r යනු කියවීම, w සඳහා ලිවීම සහ x eXecute යන්නයි.

එබැවින් සෑම කෙනෙකුටම එය කියවීමට ඉඩ දීම, නමුත් ක්‍රියාත්මක කිරීමට සමූහයට සහ එය කියවීමට හා ලිවීමට පරිශීලකයාට පමණි (නමුත් කිසියම් හේතුවක් නිසා ක්‍රියාත්මක නොවේ):

-rw- rx- r-- නමුත් මෙය විධානයට එකතු කරනුයේ:

chmod +rw-rx-r-- /path/to/file.extension

chmodමෙය සංඛ්‍යාත්මකව කළ හැකිය. එය ද්විමය මත පදනම් වේ (මම හිතන්නේ එය 1,2 සහ 4 ලෙස)

එබැවින් මෙම අංක තිබේ:

පරිශීලකයා විසින් ක්‍රියාත්මක කරන්න 100. කණ්ඩායම අනුව ක්‍රියාත්මක කිරීම 010. වෙනත් අය විසින් ක්‍රියාත්මක කිරීම 001 වේ

පරිශීලකයා විසින් ලියන්න 200. කණ්ඩායම විසින් ලියන්න 020. වෙනත් අය විසින් ලියන්න 002.

පරිශීලකයා විසින් කියවනු ලැබේ 400. කණ්ඩායම අනුව කියවීම වේ 040. වෙනත් අය කියවීම 004.

එවිට ඔබ මේවා එකට එකතු කර අපේක්ෂිත සංයෝජනය ලබා ගනී.

එබැවින් සෑම කෙනෙකුටම එය කියවීමට ඉඩ දීම, නමුත් ක්‍රියාත්මක කිරීමට සමූහයට සහ එය ලිවීමට පරිශීලකයාට පමණි (නමුත් කිසියම් හේතුවක් නිසා ක්‍රියාත්මක නොවේ):

400 + 040 + 004සහ 010සහ200

එය 600 + 050 + 004 = 654 දක්වා එකතු කරයි.

එවිට ඔබට විධානය ක්‍රියාත්මක කළ හැකිය.

chmod +654 /path/to/file.extension එය සැකසීමට.

ඔබට ටයිප් කළ හැකි සියලු අවසරයන් සැකසීමට:

chmod +rwxrwxrwx /path/to/file.extension

නැතහොත් (මෙය ලිවීමට ටිකක් පහසුය, නමුත් සෑම එකක්ම මතක තබා ගැනීමට අපහසුය):

chmod +777 /path/to/file.extension

අවසාන වශයෙන්, ඔබට කළ හැකිය:

chmod -777 /path/to/file.extension

සියලු අවසරයන් සියල්ලන්ගෙන් ඉවතට ගැනීම.

හා:

chmod +300 /path/to/file.extension

වෙනත් අවසරයන්ට බලපෑම් නොකර පරිශීලකයාට කියවීම සහ ලිවීම එක් කිරීම (උදා: අවසර ක්‍රියාත්මක කරන්න).

මෙම වෙබ් අඩවියට ඉතා ප්‍රයෝජනවත් කුඩා ජාල පිරික්සුම් කොටුවක් ඇත, එමඟින් ඔබට අවශ්‍ය විකල්ප ටික් කළ හැකි අතර එය ඔබට විධානය ලබා දෙයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

කෙසේ වෙතත්, හැකි සියලු සංයෝජන භාවිතා කිරීමට සංවේදී නොවේ; භාවිතා කරන ප්‍රධාන ඒවා පහත දැක්වේ:

755 - Ownerසියල්ල ඇති Groupඅතර Otherකියවීමට සහ ක්‍රියාත්මක කිරීමට හැකිය

700 - Ownerසියල්ල ඇත

644 - Ownerකියවීමට හා ලිවීමට Groupසහ Otherකියවීමට හැකිය

600 - Ownerකියවීමට හා ලිවීමට හැකිය

තවද, ඔබ භාවිතා කරන්නේ සුළු නොවන පරිශීලක කණ්ඩායම් නම්:

775 - Ownerකියවීමට හා ලිවීමට Groupසහ Otherකියවීමට හැකිය

770 - Ownerසහ Groupසියල්ල ඇති අතර Otherකියවීමට සහ ක්‍රියාත්මක කිරීමට හැකිය

750 - Ownerසියල්ල ඇති අතර Groupකියවීමට හා ක්‍රියාත්මක කිරීමට හැකිය

664 - Ownerහා Groupකියවන්න සහ ලියන්න, සහ හැකි Otherපමණක් කියවිය හැකි

660 - Ownerහා Groupකියවීමට සහ ලිවීමට හැකි

640 - Ownerකියවීමට හා ලිවීමට සහ Groupකියවීමට හැකිය

777 සහ 666 කලාතුරකින් භාවිතා වේ, / tmp හැර.

පොදු භාවිතයේ ඇති ඒවා පෙන්වා දීම ගැන ඉල්මාරි කරොනන්ට ස්තූතියි !

මගේ සර්වනාම ඔහු / ඔහු ය


එය ද්විමය (2-පදනම්) වෙනුවට අෂ්ටක (8-පාදක) මත පදනම් නොවේ ද? ද්විමය තුළ ඔබට තිබිය හැක්කේ 0 සහ 1 ක් පමණක් වන අතර අෂ්ටකයේ ඔබට 0, 1, ... 6, 7 තිබිය හැකිය
ජස්ටිනාස්

Ust ජස්ටිනාස් ද්විමය 7 = 4 + 2 + 1 - 111 නිරූපණය කරන්නේ කියවීම සහ ලිවීම සහ ක්‍රියාත්මක කිරීමයි.
ටිම්

8

ධාවනය:

chmod +x /path/to/file.sh

එය ක්‍රියාත්මක කළ නොහැකි කිරීමට, ධාවනය කරන්න:

chmod -x /path/to/file.sh

උදාහරණයක් ලෙස මම .shගොනුවක් නිර්මාණය කළෙමි:

vi tester12.sh

මම vi සංස්කාරකයේ යම් කේතයක් ලිවීමෙන් පසුව, මම vi සංස්කාරකයෙන් ඉවත් වෙමි:

:wq!
chmod +x tester12.sh
./tester12.sh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.