LinFAQ
313 subscribers
23 photos
4 videos
3 files
54 links
GNU/Linux FAQ

Advertise : @LinAdvertise

By @LinAcademy
Download Telegram
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی #neovim

یه مطلبی بود که راجب یادگیری نئوویم نوشتم
اول ببین با کی بایند ها راحتی؟
میتونی توی فایل جا به جا شی و redo و undo کنی؟
بعد از یه مدت که دیگه نیاز نداشتی دستت رو ببری روی ماوس یا arrow keys، برو سراغ مباحث بعدی.
اگه هنوز با پیش فرض ها راحت نیستی، کی بایند ها رو یاد بگیر، ترمینال باز کن و بنویس vimtutor و باهاش پیش برو یا این که این ویدئو رو ببین.
خودم نحوه hjkl و esc و wq: رو یاد گرفتم و بعد هر چیزی نیازم شد مثل undo رو با یه سرچ ساده بدست آوردم.

تاکید میکنم، برای رفتن به نرمال مد به جای esc، اول alt رو نگه دار و بعد کاری که میخوای انجام بدی رو بزن. مثالش اینه که alt j میبرتت به نرمال مد و بعد کرسر رو یه خط پایین میبره.

بهتره توی این مرحله با visual mode آشنا بشی و نحوه جستجو داخل متن رو تا حد نیاز یاد بگیری.

بعد از یادگیری کی بایند ها در حد نیاز، چون با پایه ها راحتی ابزار رو گسترش میدی، پس باید بری سراغ کانفیگ جهت اضافه کردن قابلیت هایی که نیاز داری مثل suggestion بهتر یا... به نئوویم.
پیشنهاد میدم اول این ویدئو و این یکی رو ببینی تا متوجه شی نئوویم چه قابلیت هایی رو بدون پلاگین ارائه میده، بعد این ویدئو رو ببین تا یه کانفیگ پایه آماده با پلاگین بدست بیاری و یا این که برو سراغ nvpak که کانفیگ علی باشه.
در انتها مطالبی مثل macro میمونه که اگه بدونی خیلی کمکت میکنه.
جدای از این ها خیلی از قابلیت ها مثل کامند make هستن که کمک میکنه، اما توی جامعه خیلی کمتر میبینی و پیدا کردن مطالب براش به این راحتی نیست.

بعد از کل موارد بالا اگه به نقطه ای رسیدی که خواستی نئوویم رو از صفر کانفیگ کنی این منبع خیلی کمکت میکنه.
یه نکته ای رو داشت یادم میرفت، هر چیزی برات سوال شد داخل کامند مد h و بعد چیزی که میخوای راجبش بیشتر بدونی رو بزن.


source

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی

راجب disown و nohup :

اگه بخواید ابزار گرافیکی رو از طریق ترمینال اجرا کنید 3 مسئله هست:
1- خروجی های ابزار گرافیکی به ترمینال فرستاده میشه و اگه دنبال پیدا کردن خطا یا... نباشید دیدنشون فقط رو مخه.
2- شل رو آزاد نمیکنه و ترمینال عملا بلا استفاده میشه.
3- بعد از بستن ترمینال، ابزار گرافیکی هم بسته میشه.

مورد دوم رو با & انتهای دستور میشه حل کرد، اما باز مورد اول و سوم میمونن.

برای حل این قضیه 2 راه داریم:
1- استفاده از nohup.
مثال:
nohup zathura file.pdf &
دقت کنید اگه اون & انتها نباشه شل آزاد نمیشه.


2- استفاده از disown. مثال:
zathura file.pdf &
disown



نکته :
zathura (document viewer)
عه که استفاده شده


البته یه قضیه هم راجب nohup هست: یه فایل nohup.out داخل مسیری که هستین میسازه و خروجی ها رو به جای ترمینال، داخل اون فایل قرار میده.

راجب توضیح دقیق این که disown و nohup چی کار میکنن و فرقشون چیه بهتره که این 3 لینک رو چک کنید:
به هر حال توضیح من یه برداشت ناقص از این منابع میشد.

https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and

https://askubuntu.com/questions/439187/how-to-open-a-gui-application-and-disconnect-it

https://man.archlinux.org/man/nohup.1.en

source

🔅@LinFAQ
🔅@LinAcademy
👍4
#روزی_یک_نکته با حسن

دسته‌بندی: #آموزشی #کاربردی

بحث راجب این بود که چرا فایلی رو داریم انتقال میدیم یا کار های دیگه انجام میدیم باهاش توی لینوکس روی 100% زمان بیشتری طول میکشه یا گیر میکنه.

توضیح اتفاقی که میفته به صورت کامل :

اتفاقی که میفته از این قرار هست که هسته لینوکس فایلی که قراره کپی بشه با سرعت بالایی توی بافر حافظه اصلی (RAM) کپی میکنه و سرعت بسیار بالایی داره .

این وسط مدیر فایل وقتی هسته، فایل رو به بافر منتقل کرد فکر میکنه که واقعا فایل توی مقصد کپی شده (ولی در اصل فایل توی بافر (RAM) کپی شده و فایل منیجر سعی میکنه کپی کردن رو کنسل کنه !!! ولی هسته داره فایل رو از بافر به هارد یا یو اس بی کپی میکنه و فایل منیجر چاره ای نداره جز اینکه هنگ کنه و منتظر سیگنال هسته باشه و دقیقا بعد از اینکه هسته لینوکس کپی کردن رو تموم میکنه فایل منیجر هم تموم پنجره رو میبنده .

اتفاقی که میفته این هست که پیشروی کپی کردن رو به صورت ریل تایم نمیبینی ...!!!

راه حل هم داره .

راه حل این مشکل :

راه حل این هست که فضای بافر برای این عملیات رو محدود کرد به یک رقم خاص که هسته بعد از پر شدن این فضا دیتا رو روی مقصد رایت کنه

این فایل رو باید توی این مسیر ایجاد کرد :
etc/sysctl.d/90-dirty.conf

و داخل این فایل این کامند رو گذاشت:
vm.dirty_background_bytes=16777216 vm.dirty_bytes=50331648

خب حالا این کامند چیه؟

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


حتما بعد از کانفینگ یک بار ریستارت کنید سیستم رو

🔅@LinFAQ
🔅@LinAcademy
👍2👎1🔥1
LinFAQ
راه حل این مشکل :
راه حل موقت برای تست:
این کامند رو یک بار توی ترمینال بزنید

echo 15728640 > /proc/sys/vm/dirty_bytes

نکته: این راه حل موقتی هست و هربار سیستم بوت میشه باید دوباره بزنید ولی روش کانفینگ دائمی هست

میزان بافر اینجا ۱۵ مگابایت محدود شده .

🔅@LinFAQ
🔅@LinAcademy
🥰1
#داستان_های_FOSS

دسته‌بندی: #داستان #آموزشی #دوال‌بوت
#dualboot

این قسمت مشکلات A.R.S با ویندوز و دبیان

#part1

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

امروز یک سری تغییرات داخل پارتیشن لینوکسیم داده بودم.
این تغییرات شامل حذف یه سریاشون و extend کردن بود.
لینوکس با این موضوع هیچ مشکلی نداشت.
اما ویندوز به boot loop میخورد آخرش به recovery میرفت.


طبق معمول Automatic Repair Startup کار نمیکرد.
ابزاری عملا بدردنخور.

مجبور شدم ترمینال رو باز کنم به دستی رسیدگی کنم.
اولین موضوعی که باید بگم اینه که دوستان.
ابزار ریکاوری ویندوز باگ داره و اونطوری که میبینید نباید استفاده کنید.
روشی که برای من جواب داد عین این ویدیو بود

چند نکته راجب این ویدیو بگم.
در اینجا جدا از پارتیشن C پارتیشن دیگه ای که بارگذاری میشه system reserved هست.
منظور همون پارتیشن UEFI هستش. جاش همون رو بارگذاری کنید.
اگر تمامی مراحل رو درست برید احتمال اینکه ویندوزتون فیکس بشه بالاست.


سوتی که بنده دادم. از اینترنت یه سری مراحلی که انجام دادم شامل فرمت کردن پارتیشن UEFI بود که عملا GRUB مربوط به لینوکسم رو حذف کرد.

ادامه ماجراجویی در پست بعد

🔅@LinFAQ
🔅@LinAcademy
LinFAQ
ادامه ماجراجویی در پست بعد
#داستان_های_FOSS

دسته‌بندی: #داستان #آموزشی #دوال‌بوت
#dualboot

این قسمت مشکلات A.R.S با ویندوز و دبیان
#part2

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

فکر میکردم کار ساده ای باشه ولی داستان پیچیده شد.
اول اینکه ورژن 11 دبیان رو داشتم برای live usb و دوم اینکه با داکیومنت دبیان جلو نرفتم اولش.

اگر میخواید خوب یاد بگیرید سیستم تعمیر کنید.
1- به Busybox مسلط باشید. یعنی دستورات POSIX و استانداردی که در خیلی از سیستم های Unix هست.
2- همیشه سعی کنید که از داکیومنتیشن پیش برید. (مگر ویندوز آشغال که برنامه هاشم درست نیست چه برسه داکیومنتاش)

وقتی که وارد دبیان شدم وارد بخش Graphical Rescue شدم و تمام مراحل رو که شبیه نصب دبیان هستند پیش رفتم.
ولی آخرش از شما میخواد که یه پارتیشن رو انتخاب کنید.

روش دستی رو برید و پارتیشنی انتخاب نکنید و مستقیم وارد ترمینال Busybox بشید.
و بقیش رو از اینجا پیش برید.
https://wiki.debian.org/GrubEFIReinstall

چند نکته مهم:
اول:
قبل از chroot کردن حواستون باشه که boot ماونت شده باشه و در دسترس باشه.
من فکر میکردم کرنل و initrd هام داخل خود پارتیشن روت هستن در حالی که نبودن و داخل boot بودن و حواسم نبود که اونارو mount کنم. سر این یکم زمان هدر رفت.

دوم:
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

این دستور تو سیستم من کار نمیکرد.
و نیاز به تغییر داشت. از طرفی:
The mount executable supplied with busybox does not support the -B option, use "mount -o bind" in this case.
بهتره معمولی به این صورت بزنید.
mount /dev -o bind /mnt/dev
mount /dev/pts -o bind /mnt/dev/pts
...

وقتی وارد محیط chroot شدید برای اینکه مستقیم بپرید داخل شل خودتون
sudo su
بزنید.

من جای
grub-install

grub-install --efi-directory=/boot/efi

و جای
update-grub

grub-mkconfig -o /boot/grub/grub.cfg
استفاده کردم جهت اطمینان بیشتر. شما هم میتونید استفاده کنید.

🔅@LinFAQ
🔅@LinAcademy
👍2
LinFAQ
#داستان_های_FOSS دسته‌بندی: #داستان #آموزشی #دوال‌بوت #dualboot این قسمت مشکلات A.R.S با ویندوز و دبیان #part2 حالا که ویندوز رو فیکس کردم. نوبت فیکس کردن دبیان بود. فکر میکردم کار ساده ای باشه ولی داستان پیچیده شد. اول اینکه ورژن 11 دبیان رو داشتم برای…
#داستان_های_FOSS

دسته‌بندی: #داستان #آموزشی #دوال‌بوت
#dualboot

این قسمت مشکلات A.R.S با ویندوز و دبیان
#part3
source_part


در ضمن. اگر دیدید که فایل های inf درایور رو داخل live media ویندوز نیاز دارید.
میتونید داخل فلش کپی کنید و از همون داخل خط فرمان با این دستور لودش کنید.
داکیومنتش خوب توضیح داده:

drvload:
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/drvload-command-line-options?view=windows-11

همینطور داکیومنت دستورات دیگه ای که ممکنه استفاده کنید:
bootsect:
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/bootsect-command-line-options?view=windows-11

bootrec:
https://support.microsoft.com/en-us/topic/use-bootrec-exe-in-the-windows-re-to-troubleshoot-startup-issues-902ebb04-daa3-4f90-579f-0fbf51f7dd5d

BCDBoot:
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di?view=windows-11

راستش جز اولی بقیه مفید واقع نشدن چون مثل لینوکس لاگ یا چیز بدردبخوری نشون نمیده که بدونیم مشکل از کجاست.
source

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با رضا

دسته‌بندی: #آموزشی #کاربردی #sshpass

نمی‌دونم شده براتون پیش بیاد موقع ssh زدن ، خسته بشید از رمز زدن
یا رمز رو بخواهید داخل فایل بزارید اون فایل رو بخواهید استفاده کنید
یا یه متغیر تعریف کنید رمز اونجا بزارید
(دیگر نگران نباشید :)

خب برای همه اینکارا یه ابزار هست
به اسم sshpass میتونید از مخازن بگیرید اکثر مخازن های رسمی هم دارنش

حالا چجوری کار می‌کنه
یکسری فلگ داره
مثل
-f filename  
-d number 
-p password
-e  Password is passed as env-var "SSHPASS"
-h  Show help
-V  print version

حالا خب چندتاشون مثال میزنم
sshpass -p 'پسورد سرور' ssh root@example
روش فایل
sshpass -f password_file ssh root@example
و خب البته میتونید به کمک ابزار های دیگه مثل scp رو ... هم استفاده کنید
یا alias براش بزارین

اینم یه سری لینک مفید
man sshpass
توضیح با مثال flag ها
اینم یه cheat sheet خوب
امیدوارم مفید باشه ابزار دیگه ای می‌شناسید معرفی کنید

🔅@LinFAQ
🔅@LinAcademy
👍1👏1
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی #latex #rubber

راجب rubber برای کامپایل latex:

مقدمه: اگه از latex/xelatex برای کامپایل استفاده کنید، نیاز به چند سری کامپایل برای گرفتن خروجی درست هست وگرنه داخل pdf تولید شده، فهرست یا... درست نمایش داده نمیشن.
سرچ زدم و ظاهرا یه راه حل ساده داره: rubber
داخل مخازن رسمی آرچ بیسا هستش، بقیه توزیع ها رو نمیدونم.

برای کامپایل هم خیلی ساده از دستور زیر استفاده میکنید:
rubber -m xelatex <file>
"اسم file رو باید بدون پسوند tex بنویسید"


بخش وسطش هم برای اینه که اگه متنتون فارسی باشه اصولا با xelatex برای کامپایل سر و کار دارید و این میگه که از xelatex استفاده بشه.
مثال:
rubber -m xelatex myfile

جهت اطلاعات بیشتر میتونید من پیجش رو بخونید.

منبعی که منو با rubber آشنا کرد این stackoverflow بود.

در انتها اگه این مطلب براتون مفید بود و دلتون خواست، لطفا برای شادی روح یحیی تجری فرزند حسین یه فاتحه بخونید.

🔅@LinFAQ
🔅@LinAcademy
👍1
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی #git
#alias

راجب alias برای commit و push کردن داخل git:
ساده بگم، از دست
git commit -am "blah blah blah"

git push

خلاص شدم، دستور زیر رو میزنید و از این به بعد داخل هر شلی که باشید خودش کل مراحل بالا رو با یه
git cmp "blah blah blah"
ردیف میکنه:
git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'
Source

🔅@LinFAQ
🔅@LinAcademy
👍4👎1
#روزی_یک_نکته با A.R.S

دسته‌بندی: #کاربردی #آموزشی #make

کسایی که پکیجینگ برای توزیع های مختلف لینوکسی انحام میدن. این حتما بدردتون میخوره. تا حالا خواستید که
make install

رو روی یه مقصد خاصی جز روت بزنید و این همه دنبال makefile یا استراکچر مسیر بیلد نگردید.

این کارتون رو خیلی آسون میکنه
کافیه که فلگ DESDIR رو ست کنید روی مسیری که میخواید نصب بشه و جای مسیر روت توزیعتون میاد اون مسیر رو روت فرض میکنه و طبق اون فولدر ها و فایل هارو میسازه یا کپی میکنه.
make DESTDIR=/path/to/dir install
خیلی این کار پکیجینگ رو ساده میکنه.

Source

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی #eshell #emacs

باز کردن ابزار های tui داخل eshell:

اگه ابزار tui رو از طریق eshell باز کنید، به صورت پیش فرض فقط نمایش درست کار میکنه و کلید ها پاسخ نمیدن، اما با دستور زیر میشه ردیفش کرد:
(setq eshell-visual-commands'("bash" "crawl" "htop" "ssh" "top"))
البته صرفا یه راه حل... رو مخ! اجباری! هست چون کیفیت خیلی خوبی ارائه نمیده و اگه کلیدی با ایمکس مشترک باشه، به جای ابزار، ایمکس کلید رو میخونه
(مثل f10 برای htop).


منابع:
1- https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/emacs/config.org

2- https://www.emacswiki.org/emacs/EshellVisualCommands

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #کاربردی #آموزشی #emacs

نمایش تصاویر داخل ایمکس:
خیلی ساده و با find-file، همونطور که فایل های عادی رو باز میکنید، به صورت پیش فرض میشه تصاویر رو هم باز کرد (((((=

Source


"خب من برم nsxiv رو حذف کنم که دیگه نیازی بهش ندارم"

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #آموزشی #کاربردی #emacs

باز کردن فایل با کمک dired:
کافیه وقتی داخل dired هستید، نشانگر رو روی فایلی که میخواید باز کنید ببرید، بعد ! رو بزنید، در انتها اسم ابزار
(مثل mpv برای فایل ویدئویی)

رو وارد کنید و فایل مورد نظر از داخل اون ابزار باز میشه.

Source

"خب دیگه فایل منیجر هم ردیف شد"

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #کاربردی #آموزشی #emacs #eshell

راجب دستور man داخل eshell:

اگه
which man
رو داخل eshell بزنید با این نتیجه مواجه میشید... ((((=
یعنی man هم به lisp بازنویسی شده و میتونید راحت manpage ها رو از داخل eshell باز کنید و پیش فرض هایلایت ردیف هست و...
"امیدوارم درست بیان کرده باشم، سطح هوشیاریم پایینه"

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #کاربردی #آموزشی #emacs #eshell

راجب دستور diff داخل eshell:

قضیه مشابه نکته قبلی هست، فقط اینم یکم خفن تر شده و علاوه بر هایلایت، اگه روی تغییرات اینتر بزنید فایل رو باز میکنه.

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #کاربردی #آموزشی #Emacs #eshell

داشتم پیام های گروه میخوندم دیدم دارن از ربات (GPT) سوال میپرسن بعد دیدم جالبه دلاتو هم فرستاد برام دیگه به عنوان نکته گذاشتم

در Emacs ، می‌توانید از قابلیت ‍‍‍eshell برای پنهان کردن modeline استفاده کنید. برای این کار می‌توانید دستور زیر را به init.el یا فایل تنظیمات خود در Emacs اضافه کنید:


(add-hook 'eshell-mode-hook (lambda () (setq mode-line-format nil)))


با اضافه کردن این قطعه کد، modeline در eshell مخفی خواهد شد. اگر می‌خواهید بار دیگر نمایش داده شود، می‌توانید این تغییرات را بازنشانی کنید.

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی: #کاربردی #آموزشی #emacs #melpa

اضافه کردن melpa
(Milkypostman’s Emacs Lisp Package Archive)

و بروز کردن مخازن داخل ایمکس:
از کد زیر استفاده میکنید
(داخل init.el قرارش میدید):

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(unless package-archive-contents
  (package-refresh-contents))

اگه اون لاین unless package-archive-contents نباشه هر سری موقع لود ایمکس مخازن رو رفرش میکنه و زمان لود شدیدا بالا میره.

Source

🔅@LinFAQ
🔅@LinAcademy
#روزی_یک_نکته با دلاتو

دسته‌بندی:‌ #آموزشی #کاربردی #emacs #lisp

راجب لود چندین فایل به صورت همزمان داخل lisp:

یه فایل داشتم که محتواش به این شکل بود، یعنی داشت سعی میکرد چندین فایل رو لود کنه و هر فایل داخل بلوک مخصوص به خودش بود با کلی کد تکراری.
یکی از دوستان پیشنهاد اصلاحش رو داد، منم از chatpgt سوال کردم و جواب این شد:
(defun load-multiple-files (file-list)
  (dolist (file file-list)
    (load (expand-file-name file))))
 
(let ((files-to-load '("file1.el" "file2.el" "file3.el")))
  (load-multiple-files files-to-load))


و خیلی هم عالی کار کرد.
مثالش که کد خودم باشه میشه این
(جهت جلوگیری از شلوغی و وضوح بیشتر لینکش رو میدم):


🔅@LinFAQ
🔅@LinAcademy