صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

لیدورا یک وبلاگ تخصصی برنامه نویسی یا لینوکس نیست. بیشتر محلیه برای ثبت چیزهایی که قراره بیشتر از یه بار خونده بشن. اگه به درد شما هم خورد که زکات دانش ما پرداخت شده، شکر.

آخرین نظرات

نویسندگان

۳۰ مطلب با موضوع «خط فرمان - Command» ثبت شده است

Shell Script

من آدم تنبلیم، خیلی تنبل. دوباره تنبلی باعث شد که یکی از کارهای تکراری که زحمت زیادی نداشت رو بصورت کامل بی‌زحمتش(اتوماتیک) کنم.

 

سناریو : من یه پوشه دارم که یه سری کلیپ تصویری توشه و روزی یکی دوبار کلیپ‌هایی که دوست دارم رو تماشا می‌کنم. چون دوست دارم یکی دو تا کلیپ رندوم ببینم کاری که تا به امروز می‌کردم این بود که همشون رو توی smplayer ایمپورت می‌کردم و لیست رو بصورت تصادفی پخش می‌کردم.

۳ نظر موافقین ۲ مخالفین ۰ ۱۷ آذر ۹۴ ، ۱۴:۰۴
علی رضا پژوهش

http://www.techwebtips.com/wp-content/uploads/2010/01/GNU-Nano-Editor-Mac-Image.png

 

قبلا توی فدورا برای ویرایش فایل‌های متنی از vi استفاده می‌کردم اما بعد از مهاجرتم به آرچ خودبه‌خود vi رو با nano جایگزین کردم. الان از این انتخاب راضیم و به نظرم nano در عین سادگی بسیار کامل و به دردبخوره و خیلی دوسش دارم.
 

توی این پست با تنظیمات nano برای هر چه قدرتمندتر کردنش آشنا می‌شیم.

۳ نظر موافقین ۰ مخالفین ۰ ۱۳ مرداد ۹۴ ، ۱۶:۲۱
علی رضا پژوهش

zsh

قبلا در مورد zsh و oh my zsh نوشته بودم. zsh یه شل قوی و محبوبه که دست bash رو از پشت می‌بنده و زمانی که با oh my zsh ترکیب بشه کاربردی تر و زیبا تر می‌شه.

oh my zsh با اینکه فوق العاده کار می‌کنه اما یه مشکل داره و اونم تاخیر یک ثانیه‌ای لود معروفشه. prezto از oh my zsh فورک شده تا این مشکل رو حل کنه. بهینه‌سازی‌های دیگه‌ای هم توی کد oh my zsh صورت گرفته که حتما شما رو راغب به استفاده از pretzo خواهد کرد.

قابلیت تکمیل خودکار pretzo با نشون دادن نتایج توی دسته بندی‌های مختلف خیلی جالبه.

مثلا اگه بعد از تایپ ls کلید تب رو بزنید میتونید دستورات خارجی، دستورات کرنل، توابع شل و آلیاس‌ها رو توی دسته‌های خودشون ببینید:

ali@localhost:~/ > ls
 -- external command --
ls          lscpu       lslogins    lspcmcia    lsusb.py              
lsattr      lsinitcpio  lsmod       lspst                           
lsblk       lslocks     lspci       lsusb                           
 -- alias --
ls

و یه قابلیت فوق‌العاده‌تر که قبلا با دستور cheat معرفیش کرده بودم دیدن لیست پارامترهای یه دستوره که فقط کافیه بعد از تایپ دستور و علامت - کلید تب رو بزنید.

ali@localhost:~/ > tar -
 -- tar function --
A  -- append to an archive
c  -- create a new archive
f  -- specify archive file or device
t  -- list archive contents
u  -- update archive
v  -- verbose output
x  -- extract files from an archive

 

pretzo از تم‌های زیباتری نسبت به oh my zsh پشتیبانی می‌کنه و همچنین پیکره‌بندی اون بر مبنای oh my zsh انجام می‌شه که همه‌ی این موارد باعث می‌شن شما به راحتی از oh my zsh به فرزند خلفش pretzo مهاجرت کنید. توی این پست راه اندازی و کانفیگ prezto رو خواهیم دید.

۷ نظر موافقین ۰ مخالفین ۰ ۲۲ فروردين ۹۴ ، ۱۸:۱۱
علی رضا پژوهش

همون طور که قبلا در اینجا نوشته بودم، من برای پخش موسیقی از ncmpcpp استفاده می‌کنم. توی لینوکس برنامه‌های حرفه‌ای زیادی برای پخش موسیقی مثل Banshee، Rhythmbox، Clementine، Nuvola یا Deadbeef وجود دارن که دست کاربر رو برای انتخاب باز می‌گذارن اما برای من تا به امروز بهترین گزینه MPD به همراه ncmpcpp بوده و هست.

MPD یا Music Player Daemon یه دیمن برای گوش دادن به موسیقیه. دیمن یعنی برنامه ای که به صورت یه سرویس توی پشت زمینه سیستم در حال اجراست و برنامه‌های کاربردی می‌تونن از اون استفاده کنند.

mpd

 

همونطور که توی تصویر بالا مشخصه برای کار با MPD نیاز به یه MPD Client دارید. کلاینت های زیادی برای MPD نوشته شدن. کلاینت‌های خط فرمانی مثل mpc ، کلاینت‌های کنسول مثل ncmpc و ncmpcpp و در نهایت کلاینت‌های گرافیکی مثل gmpc و ario . نصب و استفاده‌ی کلاینت های گرافیکی خیلی راحته اما برای کسایی که مثل من کلاینت‌های کنسول رو ترجیح می‌دن ncmpcpp بهترین گزینه خواهد بود.

۵ نظر موافقین ۱ مخالفین ۰ ۱۶ فروردين ۹۴ ، ۱۵:۴۸
علی رضا پژوهش

python

من بیشتر وقت آزادم رو با برنامه نویسی می‌گذرونم و مثل اکثر برنامه‌نویس‌ها وقتی ایده‌ای به ذهنم می‌رسه اول توی گیت‌هاب دنبال اون می‌گردم. چند روز پیش این فکر به ذهنم رسید که یه اسکریپت برای جستجو توی گیت‌هاب بنویسم و نتیجه‌ی کار رضایت بخش بود. الان از توی ترمینالم دنبال پروژه‌های گیت‌هاب می‌گردم و این برام خیلی راحت تر از کار کردن با مرورگره.

مراحل کار خیلی ساده بود چون سایت گیت‌هاب API فوق‌العاده کارآمدی رو در اختیار برنامه‌نویس‌ها قرار داده. اسکریپت رو با پایتون نوشتم و مراحل کار رو براتون می‌نویسم.

پایتون زبانیه که به سرعت می‌تونید یادش بگیرید و شروع به برنامه‌نویسی کنید. با تشکر از مستندات عالی پایتون نیازی به هیچ دوره یا کلاسی هم نیست.

۴ نظر موافقین ۰ مخالفین ۰ ۲۹ مهر ۹۳ ، ۱۵:۳۷
علی رضا پژوهش

تگ زدن به آهنگ‌ها با id3v2

چند روز بود داشتم دنبال یه برنامه مناسب برای تگ زدن به آهنگ‌هام می‌گشتم. این سایت‌های ایرانی موزیک مثل ندید پدیدها تمام مشخصات آهنگ‌ها رو با آدرس‌ سایت‌های خودشون پر می‌کنن و همه رو تو دردسر می‌ندازن(خدا ببخشتشون). چه فایده که نرم‌افزار‌های قوی پخش موزیک داشته باشی و نتونی موزیک‌هات رو دسته بندی کنی.

 

۴ نظر موافقین ۰ مخالفین ۰ ۰۶ مهر ۹۳ ، ۱۲:۰۳
علی رضا پژوهش

http://upload.wikimedia.org/wikipedia/commons/0/0d/Imagemagick-logo.png.

 

Image Magick یکی از بهترین نرم‌افزارهای لینوکسیه که تا به حال برای کار با تصاویر دیدم. برنامه‌ای که توسط ابزارهاش می‌تونه عکس شما رو به فرمت دیگه‌ای تبدیل کنه، برش بزنه، بچرخونه، حاشیه‌ها رو پاک کنه، سایه اضافه کنه و...

ابزارهای خط فرمان این برنامه فوق العاده کاربردی هستند:

[animatecomparecompositeconjureconvertdisplayidentifyimportmogrifymontagestream]

کار با این برنامه خیلی ساده و روونه و زود می‌تونید اون رو یاد بگیرید. در ادامه چند تا دستور برای شروع میگذارم.

۱ نظر موافقین ۰ مخالفین ۰ ۰۳ مهر ۹۳ ، ۱۲:۴۴
علی رضا پژوهش

Trminal Commands

 

چند روز پیش اینجا مطلبی در مورد دستور cheat دیدم که خیلی ازش خوشم اومد. cheat یه دستور خط فرمانه که اطلاعاتی راجع به بسته‌های خط فرمان در اختیار کاربر می‌گذاره. راه معمولی کمک گرفتن در مورد بسته‌ها اینه که از man یا سوئیچ help-- استفاده کنیم. اما بعضی وقت‌ها man بیش از حد طولانیه و help-- بیش از حد کوتاه. cheat برای دستورهای خط فرمان یه Cheat-Sheet مفید تهیه کرده که استفاده از اون راحت‌تر از استفاده از دستورات مشابهه.

۵ نظر موافقین ۰ مخالفین ۰ ۳۱ شهریور ۹۳ ، ۱۳:۰۵
علی رضا پژوهش

zsh

 

echo یکی از دستورات داخلی رایج و پر استفاده در bash و c shell هاست که معمولا در اسکریپت‌ها برای نمایش یک خط رشته‌ای در خروجی یا فایل‌ها استفاده میشه. در این پست ۱۲ مثال از کاربرد این دستور رو می‌تونید ببینید.

۴ نظر موافقین ۱ مخالفین ۰ ۲۷ شهریور ۹۳ ، ۰۲:۳۸
علی رضا پژوهش


اگه دو قسمت قبل(+ +) این سری مطالب رو خونده باشید تا حالا با استفاده‌ی دیالوگ‌هایی مثل Menubox, msgbox, yes/no و input box توی اسکریپت‌هاتون آشنا شدید. همونطور که دیدید دستور dialog می‌تونه به اسکریپت شما یه محیط زیبا و کاربر‌پسند بده و همین‌طور با نشون دادن دیالوگ‌های مختلف به کاربر استفاده از اسکریپت رو ساده‌تر کنه. در قسمت آخر با بقیه‌ی دیالوگ‌های این دستور آشنا می‌شیم.

۱ نظر موافقین ۰ مخالفین ۰ ۱۸ دی ۹۲ ، ۰۰:۰۰
علی رضا پژوهش

 

توی قسمت اول این مطلب با ساختن دیالوگ‌های msgbox, yes/no و input box آشنا شدیم و دیدیم که چطور می‌شه از دیالوگ‌ها توی اسکریپت‌ها استفاده کرد. این قسمت اختصاص داره به دیالوگ Menu box که یکی از دیالوگ‌های پرکاربرد و مهم دستور dialog هست و با استفاده از اون می‌شه به اسکریپت ظاهری حرفه‌ای تر داد.

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ دی ۹۲ ، ۰۰:۰۰
علی رضا پژوهش

یکی از کارهای خوب توی اسکریپت نویسی اینه که به کاربر دیالوگ نشون بدیم. این طوری کاربر با اسکریپت بیشتر ارتباط برقرار می‌کنه و راحت‌تر کارهاشو انجام می‌ده. برای نشون دادن دیالوگ به کاربر می‌تونید از چندتا بسته استفاده کنید که از بین اون‌ها کار با dialog از همه راحت‌تره. dialog کادرهای محاوره‌ایه متنوعی مثل کادر پیغام، پرسش، تقویم و ... رو پشتیبانی می‌کنه. از طرفی حجم خیلی کمی داره و کار باهاش پیچیده نیست.

۶ نظر موافقین ۱ مخالفین ۰ ۱۱ دی ۹۲ ، ۰۰:۰۰
علی رضا پژوهش

ویرایش فایل های بزرگ با ویرایشگر برای انجام تغییرات تکراری یا کوچک بسیار سخت و مشکله. کاری که با اسکریپت ها و دستورات زیر بسیار ساده تر خواهد شد.

 

برای چاپ ستون های اول و سوم از فایل اول در فایل دوم از awk استفاده کنید.

awk '{print $1, $3}' file1 > file2

 

برای چاپ کاراکترهایی از ستون های هشتم تا پانزدهم فایل اول در فایل دوم از cut استفاده کنید.

cut -c 8-15 file1 > file2

 

برای جایگذاری کلمه word2 به جای word1 در فایل اول از sed استفاده کنید.

sed "s/word1/word2/g" file1 > file2

 

هر چی گشتم منبع این مطلب رو پیدا نکردم.

۰ نظر موافقین ۱ مخالفین ۰ ۰۱ دی ۹۲ ، ۰۰:۰۰
علی رضا پژوهش

بعضی وقت‌ها نیاز می‌شه که فایل‌هایی رو که در طول روز باهاشون کار کردید رو پیدا کنید. برای مثال سیستمتون دچار خرابی شده و می‌خواهید ببینید دستکاری چه فایل‌هایی سیستمتون رو از کار انداخته. یا ممکنه روی فایل‌هایی کار کرده باشید که پیدا کردنشون بین یه عالمه فایل دیگه سخته. یا حتی می‌خواهید ببینید برادرتون چه فایل‌هایی رو باز کرده :)

یکی از راه‌های متعددی که برای این کار هست استفاده از این دستوره

ls -al --time-style=+%D | grep `date +%D`

خیلی ساده ls خروجی رو با تاریخ میده به grep تا grep با استفاده از دستور روبروش فقط خطوطی رو نمایش بده که با تاریخ امروز مطابقت دارن. می تونید به جای تاریخ امروز از یه تاریخ دیگه یا حتی ساعت و یا اندازه‌ی فایل هم استفاده کنید. کار با لینوکس زیبا نیست؟

۰ نظر موافقین ۰ مخالفین ۰ ۱۸ آذر ۹۲ ، ۱۱:۵۹
علی رضا پژوهش

Import

همونطور که می‌دونید بسته‌ی ImageMagick به همراه ابزارهای مفیدی برای کار با تصاویر ارائه می‌شه. یکی از این ابزارهای مفید یعنی ابزار import می‌تونه از دسکتاپ اسکرین‌شات بگیره و مهم ترین مزیتش هم اینه که از طریق ترمینال در دسترسه. کار با import خیلی راحته و می‌شه به راحتی از اون در اسکریپت‌ها استفاده کرد. با import می‌شه از کل صفحه یا فقط قسمتی از اون اسکرین‌شات گرفت.

۰ نظر موافقین ۰ مخالفین ۰ ۱۸ آذر ۹۲ ، ۰۱:۲۴
علی رضا پژوهش

چند روز پیش می‌خواستم توی ترمینال لیست دایرکتوری‌های سیستمم رو بر اساس اندازشون ببینم. یه مدت دنبال جواب بودم و در نهایت به این نتیجه‌ی زیبا رسیدم :

du -kx | egrep -v "\./.+/" | sort -n

 

این هم خروجی:

4    ./Desktop
12    ./.gnome
28    ./.designer
704    ./.gstreamer-0.10
3228    ./.eclipse
6432    ./Downloads
13532    ./.config
23168    ./.local
33424    ./Pictures
55548    ./.fonts
121508    ./.mozilla
172684    ./.icons
269572    ./Other
548808    ./Project
947148    ./Python
4728992    ./Music
6720780    ./Documents
34029668    ./Videos
98052428    .

 

۰ نظر موافقین ۱ مخالفین ۰ ۱۶ آذر ۹۲ ، ۲۳:۲۸
علی رضا پژوهش

wc command

اگه از یه برنامه‌ نویس بخوان که اطلاعاتی در مورد یه فایل متنی مثل تعداد خطوط یا تعداد کلمه‌های اون فایل رو استخراج کنه احتمالا از سناریویی مثل این استفاده می‌کنه :

باز کردن فایل - خواندن خط به خط فایل تا رسیدن به انتها - استخراج اطلاعات فایل - تهیه  خروجی مناسب

اما اگه اهل اسکریپت نوشتن باشه و از لینوکس استفاده کنه می‌دونه که لینوکس همیشه ابزارهای مناسبی در اختیارش قرار می‌ده.

۴ نظر موافقین ۱ مخالفین ۰ ۰۳ آذر ۹۲ ، ۰۱:۱۷
علی رضا پژوهش

Kill, PKill and Killall command

دستور kill یکی از دستورات لینوکسیه که کاربرد‌های بسیاری داره، مخصوصاَ در مواقعی که می‌خواهید یه برنامه‌ی خاص یا یه پروسه رو ببندید یا از حافظه خارجش کنید.

در لینوکس هر پروسه یه شماره یا Process ID داره که از طریق اون شماره می‌شه بهش دسترسی داشت. هر بار که برنامه‌ای اجرا می‌شه برای اون برنامه یه Process ID منحصر به فرد تولید می‌شه. مثلاَ اولین فرایندی که هنگام بوت لینوکس شروع میشه پروسه‌ی init هست که به اون شماره‌ی Pid یک اختصاص داده می‌شه. در سیستم‌های جدید init با systemd جایگزین شده.

۰ نظر موافقین ۰ مخالفین ۰ ۳۰ آبان ۹۲ ، ۰۱:۰۷
علی رضا پژوهش

grep command

برای جستجوی فایل‌ها در لینوکس ابزارهای مختلفی وجود دارند که این کار را به خوبی انجام می‌دهند، اما اگر قرار باشد محتویات درون فایل‌ها را جستجو کنیم به چه ابزارهایی نیاز داریم؟

باز هم لینوکس به کمک ابزارهای قدرتمندش به ما کمک خواهد کرد تا به سرعت به جواب دلخواهمان برسیم. برای این کار راه‌ها و ابزارهای متفاوتی در دسترسند اما در این پست فقط به معرفی ابزار ساده اما قدرتمند grep اکتفا می‌کنم.

۱۱ نظر موافقین ۰ مخالفین ۰ ۲۵ آبان ۹۲ ، ۱۸:۴۳
علی رضا پژوهش

با استفاده از دستور html2ps می‌شه HTML رو به PostScript تبدیل کرد. حالا از این دستور برای چاپ صفحات وب در ترمینال استفاده می‌کنیم. این کار در اسکریپت‌ها یا در محیط‌های کاملاَ متنی کاربرد بسیاری خواهد داشت.

 

نصب html2ls

در فدورا

sudo yum install html2ps

 

در اوبونتو

apt-get install html2ps

 

حالا برای چاپ صفحات وب می‌تونید از این دستورات استفاده کنید.

html2ps http://lidora.blog.ir/sample.html | lpr
html2ps http://lidora.blog.ir/sample.html | lp -d hpdjet
۱ نظر موافقین ۰ مخالفین ۰ ۲۱ آبان ۹۲ ، ۰۰:۴۹
علی رضا پژوهش