او...ه! چه خبره اینجا! رومو برگردندونم دیدم تاپیک سه صفحه شده!
فکر کنم یواش یواش خودمون بریم تو مد اسکریپت نوشتن
پس دستور chmod فراموش نشه
در ضمن فکر کنم سرعت شما از یواش یواش گذشته!
اگر بچه ها پایه باشن بعد از این تاپیک یه تاپیک اسکریپتهای درخواستی (Script On Demand) میزنیم.
من که پایهام.
بهتره یه سری نکاتی رو هم در نوشتم اسکریپتهای ناتیلوس یاد بگیرید. مثلا:
1. برای اینکه اسم فایل بتونه شامل فاصله باشه، باید داخل کوتیشن کذاشته بشه. مثلا این دستور یک فایل سلکت شده رو به دسکتاپ لینک میفرسته (اگه چند تا سلکت شده باشن اولیشون رو). دقت کنید که 1$ (یعنی آرگومان اول خط فرمان) داخل double quote قرار گرفته.
ln -s "$PWD/$1" ~/Desktop
متغیر PWD حاوی مسیر جاری هست. علت استفاده از اون اینه که آرگومان اول دستور ln باید مسیر کامل فایل باشه وگرنه خواستهٔ ما رو برآورده نمیکنه (اگه مسیر نسبی باشه یک dynamic link ساخته میشه)
2. برای اینکه یک کار رو روی تمام فایلهای سلکت شده انجام بدیم، میتونیم از آرایهٔ آرگومانهای خط فرمان یعنی @$ استفاده کنیم:
for FILE in "$@" ; do
ln -s "$PWD/$FILE" ~/Desktop
done
راه اینکه از متغیر NAUTILUS_SCRIPT_SELECTED_FILE_PATHS استفاده کنیم، اما در اینصورت مسیر فایلها نباید space داشته باشه، چون این متغیر یک رشته هست که مسیر فایلها را با یک فاصله از هم جدا کرده (مگه اینکه یه خورده پردازش متن روش انجام بدید و مسیر فایلها تشخیص داده بشه.) در ضمن چون مسیر هستند نه فقط اسم، پس متغیر PWD نباید آورده بشه.
for FILE in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; do
ln -s $FILE ~/Desktop
done
3. چهار متغیر
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
NAUTILUS_SCRIPT_SELECTED_URIS
NAUTILUS_SCRIPT_CURRENT_URI
NAUTILUS_SCRIPT_WINDOW_GEOMETRY
اطلاعات مفیدی رو به ما میدن. اگرچه عیبشون بالا گفته شد.
4. اسکریپتهای ناتیلوس را نه تنها میتونید با زبان شل (bash یا sh) بنویسید، بلکه با هر زبان اسکریپتی دیگه، و بلکه با هر زبان برنامهنویسی(که در لینوکس پشتیبانی شود) میتوانید بنویسید. اگه میخواید با یک زبان اسکریپتی(مثل python و perl و php) بنویسید، باید در خط اول برنامه مفسر آن را به یک از دو صورت بیان کنید. مثلا در مورد پایتون باید این خط
#!/usr/bin/python
یا این خط
#!/usr/bin/env python
رو دقیقا بعنوان خط اول برنامه قرار بدید.
اگر هم با یک زبان کامپایلری میخواید بنویسید، کافیه فایل کامپایل شده (یا همون اجرایی) رو بجای اسکریپت قرار بدید(توی پوشه nautilus-scripts).
با هر زبونی که مینویسید، از طریق آرگومانهای خط فرمان میتونید به اسم فایلهای سلکت شده دسترسی پیدا کنید. در ضمن بهتره بدونید که چطوری میشه از توی اون زبون برنامهنویسی، دستورات شل رو احضار کرد. بعنوان مثال، همون مثال
#!/bin/bash
for FILE in "$@" ; do
ln -s "$PWD/$FILE" ~/Desktop
done
رو با پایتون مینویسم:
#!/usr/bin/python
import os, sys
for FILE in sys.argv[1:]:
os.popen('ln -s $PWD/\'%s\' ~/Desktop' %(FILE))
پس اگه به syntax شل عادت ندارید، میتونید با یه زبون دیگه بنویسید. اما به تدریج به syntax شل هم عادت میکنید.
شخصا با پایتون راحتترم. البته شل هم جای خود دارد.