LinFAQ
Photo
#روزی_یک_نکته با A.R.S
دستهبندی:#کاربردی #آموزشی #xargs
خب بریم یکم با دستور xargs که یکی از باحال ترین دستورات خط فرمانی برای استفاده از دستوراتی که اجازه pipe کردن بهتون نمیدن آشنا بشیم.
خب اصلأ Xargs مخفف چیه؟🤔
نحوه کار باهاش
مثال اول: تو دستور پایین میبینید که ls قابلیت pipe کردن نداره. :(
میایم و پاس میدیم به xargs ،
میبینیم که یه فلگ I هست که مشخص میکنه که جایگشتمون چی باشه.
جاش هر چیزی میتونیم بزاریم ولی خب این مرسوم تره.
دستور xargs میاد و دستور جلوش رو برای هر خط از خروجی ls ران میکنه.
البته ما میدونیم که خود ls هم میتونه حرکتی شبیه این رو بزنه.
ولی خب جاهایی هست که چنین چیزی رو نداریم.
مثلا تو دایرکتوری میخواید یه فایل از 1 تا 1000 درست کنید.
یا حتی تغییر نام بدید.
یا حتی فایل ها رو دیلیت کنید.
خود find هم قابلیتی داره که اجازه اجرای دستوری برای هر کدوم از نتایج جستجو رو داره ولی به سرعت xargs نمیرسه.
اینم یه ویدیو کامل تر
@LinFAQ | @LinAcademy
دستهبندی:#کاربردی #آموزشی #xargs
خب بریم یکم با دستور xargs که یکی از باحال ترین دستورات خط فرمانی برای استفاده از دستوراتی که اجازه pipe کردن بهتون نمیدن آشنا بشیم.
خب اصلأ Xargs مخفف چیه؟🤔
(extended arguments)
نحوه کار باهاش
command1 | xargs command2
مثال اول: تو دستور پایین میبینید که ls قابلیت pipe کردن نداره. :(
ls | ls
میایم و پاس میدیم به xargs ،
میبینیم که یه فلگ I هست که مشخص میکنه که جایگشتمون چی باشه.
جاش هر چیزی میتونیم بزاریم ولی خب این مرسوم تره.
دستور xargs میاد و دستور جلوش رو برای هر خط از خروجی ls ران میکنه.
ls | xargs -I {} ls "/home/$USER/{}"البته ما میدونیم که خود ls هم میتونه حرکتی شبیه این رو بزنه.
ls *
ولی خب جاهایی هست که چنین چیزی رو نداریم.
مثلا تو دایرکتوری میخواید یه فایل از 1 تا 1000 درست کنید.
seq 1000 | xargs -I {} touch {}.txtیا حتی تغییر نام بدید.
ls | cut -d. -f1 | xargs -I {} mv {}.txt {}.textیا حتی فایل ها رو دیلیت کنید.
find . -type f -name "*.text" | xargs rm
خود find هم قابلیتی داره که اجازه اجرای دستوری برای هر کدوم از نتایج جستجو رو داره ولی به سرعت xargs نمیرسه.
find . -type f -name "*.txt" -exec rm {} \;اینم یه ویدیو کامل تر
Source
@LinFAQ | @LinAcademy
🔥5👍1
#روزی_یک_نکته با دلاتو
دستهبندی: #کاربردی #أموزشی
#emacs #vterm
برای بدست آوردن یه ترمینال با امکانات کامل داخل emacs باید چیکار کنیم؟🤔
فقط کافیه از vterm استفاده کنید:
برای پنهان کردن modeline داخل vterm هم از دستور زیر استفاده کنید:
@LinFAQ | @LinAcademy
دستهبندی: #کاربردی #أموزشی
#emacs #vterm
برای بدست آوردن یه ترمینال با امکانات کامل داخل emacs باید چیکار کنیم؟🤔
فقط کافیه از vterm استفاده کنید:
(use-package vterm
ensure t)
برای پنهان کردن modeline داخل vterm هم از دستور زیر استفاده کنید:
(add-hook 'vterm-mode-hook
(lambda () (setq mode-line-format nil)))
ضمنا نیازه که cmake هم روی سیستمتون نصب باشه.
@LinFAQ | @LinAcademy
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
#shell #prompt
تا حالا شده براتون سوال بشه فریمورک های شل مثل
چجوری تشخیص میدن وضعیت کامند قبلی رو؟
یا چجوری درک میکنن از وضعیت git پروژه هاتون و داخل شل نشونتون میدن؟
خب کار سختی نیست فقط به این پرامت ها نیاز داری
برای git این فایل رو source میکنیم
بعد بلوک زیر رو به پرامپت شل اضافه میکنیم
و برای نشون دادن وضعیت کامند قبلی طبق عکس نیاز به این دارید
اینم ترکیب جفتشون با کمی رنگ
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی
#shell #prompt
تا حالا شده براتون سوال بشه فریمورک های شل مثل
oh my zsh / oh my bash
چجوری تشخیص میدن وضعیت کامند قبلی رو؟
یا چجوری درک میکنن از وضعیت git پروژه هاتون و داخل شل نشونتون میدن؟
خب کار سختی نیست فقط به این پرامت ها نیاز داری
برای git این فایل رو source میکنیم
source /usr/share/git/completion/git-prompt.sh
بعد بلوک زیر رو به پرامپت شل اضافه میکنیم
$(__git_ps1 " (%s)")
و برای نشون دادن وضعیت کامند قبلی طبق عکس نیاز به این دارید
[$(if [[ $? -eq 0 ]]; then echo -e "✔️"; else echo -e "✖️"; fi)]
اینم ترکیب جفتشون با کمی رنگ
source /usr/share/git/completion/git-prompt.sh
PS1='\w\e[34m$(__git_ps1 " (%s)")\e[0m [$(if [[ $? -eq 0 ]]; then echo -e "\e[32m✔️\e[0m"; else echo -e "\e[31m✖️\e[0m"; fi)] \e[32m\$\e[0m '
source1
source2
@LinAcademy | @LinFAQ
❤1👍1
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
#emacs #vterm #shell
خب برای اینکه bash با vterm هماهنگ کنیم باید چیکار کنیم؟
اول داخل bashrc کد زیر رو اضافه میکنیم:
خب تموم شد حالا الان اگه داخل vterm از cd استفاده کنید، مسیر کل ایمکس تغییر میکنه
@LinFAQ | @LinAcademy
دستهبندی: #آموزشی #کاربردی
#emacs #vterm #shell
خب برای اینکه bash با vterm هماهنگ کنیم باید چیکار کنیم؟
(بر اساس bash میگم، خودتون با بقیه شل ها مچش کنید)
اول داخل bashrc کد زیر رو اضافه میکنیم:
if [[ "$INSIDE_EMACS" = 'vterm' ]] \
&& [[ -n ${EMACS_VTERM_PATH} ]] \
&& [[ -f ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh ]]; then
source ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh
fi
خب تموم شد حالا الان اگه داخل vterm از cd استفاده کنید، مسیر کل ایمکس تغییر میکنه
Source
@LinFAQ | @LinAcademy
❤1
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
لیست فایل ها و باز کردنشون با fzf:
دستورات جهت حذف و نصب پکیج ها:
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
eval "$(fzf --bash)"
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
function ff() {
vim "$(fd --type f --hidden --exclude .git | fzf --preview 'cat {}' --select-1 --exit-0)"
}ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
function fcd() {
cd "$(fd --type d --hidden --exclude .git | fzf --preview 'ls -la {}' --select-1 --exit-0)" || exit
}لیست فایل ها و باز کردنشون با fzf:
open() {
xdg-open "$(fd --type f | fzf)"
}دستورات جهت حذف و نصب پکیج ها:
( البته در pacman )
install() {
pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
}
uninstall() {
pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
}Source
@LinAcademy | @LinFAQ
❤1
Forwarded from LinAcademy
😁😁 دوباره یک سال دیگه رو در کنار هم بودیم 🤩🥳
سالی که گذشت سالی پر از ماجرا های عجیب و تغییرات توی دنیای تکنولوژی بود، گنوم ۴۸ و گیمپ ۳ و تغییر اینتل و قدرت گرفتن AMD، هوش مصنوعی های جدید توی چین و حتی ایردراپ های عجیب تلگرامی، ولی درکنار همه اینا یه چیزی هنوز باقی مونده و هست و امید دارم که تا همیشه ماندگار باشه و اونم شور و اشتیاقی هستش که برای پیداکردن دانش ها و تست کردن چیزای جدید داریم.
سال جدید رو به همه دوست داران آزادی 🕊و نرم افزار آزاد 🐧 تبریک میگم، باشه که امسال خوبی های بیشتری رو تجربه کنیم 🙂↔️🙂↕️ و بیشتر از هرساله دیگه ای از زندگی لذت ببریم✨
با تشکر تیم ادمین های جامعه لین آکادمی ❤️
به ما بپیوندید :
@LinAcademy
سالی که گذشت سالی پر از ماجرا های عجیب و تغییرات توی دنیای تکنولوژی بود، گنوم ۴۸ و گیمپ ۳ و تغییر اینتل و قدرت گرفتن AMD، هوش مصنوعی های جدید توی چین و حتی ایردراپ های عجیب تلگرامی، ولی درکنار همه اینا یه چیزی هنوز باقی مونده و هست و امید دارم که تا همیشه ماندگار باشه و اونم شور و اشتیاقی هستش که برای پیداکردن دانش ها و تست کردن چیزای جدید داریم.
سال جدید رو به همه دوست داران آزادی 🕊و نرم افزار آزاد 🐧 تبریک میگم، باشه که امسال خوبی های بیشتری رو تجربه کنیم 🙂↔️🙂↕️ و بیشتر از هرساله دیگه ای از زندگی لذت ببریم✨
با تشکر تیم ادمین های جامعه لین آکادمی ❤️
به ما بپیوندید :
@LinAcademy
❤1🔥1
#روزی_یه_نکته با حسن
دستهبندی: #آموزشی #کاربردی #کرنل #لینوکس
امروز اومدیم یه مشکل کوچیک موقع انتقال فایل رو در لینوکس حل کنیم.
حالا این مشکل چیه؟ تصور کنید شما یه فایل بزرگ رو کپی میکنید.
کرنل لینوکس فایل رو به حافظه (RAM) منتقل میکنه.
اما همین کار ممکنه باعث بشه که مدیر فایل شما فکر کنه همه چیز تمومه چون سرعت حافظه (RAM)، از SSD یا USB سریع تره در حالی که فایل هنوز در حال انتقال از حافظه به هارد یا USB هست.
خب راه حل چیه ؟
1. وارد مسیر
/etc/sysctl.d/
بشید و یک فایل به اسم 90-dirty.conf میسازیم.
2. توی اون فایل، دو خط زیر رو قرار میدیم:
حالا این اعداد چیه؟
یه نکته مهم هم داره: بعد از اعمال این تنظیمات، سیستمتون رو ریستارت کنید تا تغییرات به درستی اعمال بشه.
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی #کرنل #لینوکس
امروز اومدیم یه مشکل کوچیک موقع انتقال فایل رو در لینوکس حل کنیم.
حالا این مشکل چیه؟ تصور کنید شما یه فایل بزرگ رو کپی میکنید.
کرنل لینوکس فایل رو به حافظه (RAM) منتقل میکنه.
اما همین کار ممکنه باعث بشه که مدیر فایل شما فکر کنه همه چیز تمومه چون سرعت حافظه (RAM)، از SSD یا USB سریع تره در حالی که فایل هنوز در حال انتقال از حافظه به هارد یا USB هست.
خب راه حل چیه ؟
محدود کردن بافر میتونیم به لینوکس بگیم: "وقتی این مقدار داده توی حافظه جمع شد، تازه شروع کن به انتقال به مقصد" این کار باعث میشه که پیشرفت کپی فایل به صورت های مرحلهای و واقعی جلوتر بره؛ یعنی شما میتونید قدم به قدم پیشرفت رو ببینید و از عدم هماهنگی سیستم جلوگیری بشه.چطوری این کار رو میتونید انجام بدیم؟ خیلی ساده است:
1. وارد مسیر
/etc/sysctl.d/
بشید و یک فایل به اسم 90-dirty.conf میسازیم.
2. توی اون فایل، دو خط زیر رو قرار میدیم:
vm.dirty_background_bytes=16777216
vm.dirty_bytes=50331648 حالا این اعداد چیه؟
• مقدار 16777216 بایت معادل 16 مگابایت هست.
یعنی وقتی فضای بافر به این مقدار رسید، عملیات رو شروع کنه
• مقدار 50331648 بایت هم برابر با 50 مگابایت هست؛ یعنی اگر دادهٔ بیشتری تجمع پیدا کنه،
کرنل بلافاصله به نوشتن روی مقصد اقدام میکنه.
یه نکته مهم هم داره: بعد از اعمال این تنظیمات، سیستمتون رو ریستارت کنید تا تغییرات به درستی اعمال بشه.
@LinAcademy | @LinFAQ
👍5
#روزی_یه_نکته با پاکروح
دستهبندی: #آموزشی #کاربردی #گرافیک #لینوکس
امروز یه اتفاق جالب برام افتاد:
داشتم با سیستم کار میکردم، طبق معمول نرم افزار عزیز متاتریدر باز بود، یهو تصویر کامل قفل کرد! موس نمیجنبید، صفحه خشک شد، ولی موزیک هنوز پخش میشد!
یعنی سیستم فریز گرافیکی کرده بود، نه کرش کامل.
اولش فکر کردم باید ریست کنم، ولی بعد فهمیدم لازم نیست!
کافیه فقط درایور گرافیک رو دوباره بارگذاری کنم تا دسکتاپ برگرده سر جاش — بدون از دست دادن هیچ کاری.
راهش خیلی سادهست 👇
اگه صفحه کامل هنگ کرده بود:
1. با Ctrl + Alt + F2 برو tty
2. وارد شو
3. دستور بالا رو بزن
4. بعد با Ctrl + Alt + F1 (یا F7) برگرد
با این کار، بدون ریست، تصویر دوباره زنده میشه 😎
درنهایت می تونید براش یه شل اسکریپت بنویسید و یه Bind براش تعریف کنید خیلی خیلی کم پیش میاد ولی اگه پیش بیاد شما دیگه راه حلش رو دارید.
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی #گرافیک #لینوکس
امروز یه اتفاق جالب برام افتاد:
داشتم با سیستم کار میکردم، طبق معمول نرم افزار عزیز متاتریدر باز بود، یهو تصویر کامل قفل کرد! موس نمیجنبید، صفحه خشک شد، ولی موزیک هنوز پخش میشد!
یعنی سیستم فریز گرافیکی کرده بود، نه کرش کامل.
اولش فکر کردم باید ریست کنم، ولی بعد فهمیدم لازم نیست!
کافیه فقط درایور گرافیک رو دوباره بارگذاری کنم تا دسکتاپ برگرده سر جاش — بدون از دست دادن هیچ کاری.
راهش خیلی سادهست 👇
# برای GNOME
sudo systemctl restart gdm
# برای KDE
sudo systemctl restart sddm
# برای NVIDIA
sudo modprobe -r nvidia_drm nvidia_modeset nvidia && sudo modprobe nvidia
# برای AMD
sudo modprobe -r amdgpu && sudo modprobe amdgpu
اگه صفحه کامل هنگ کرده بود:
1. با Ctrl + Alt + F2 برو tty
2. وارد شو
3. دستور بالا رو بزن
4. بعد با Ctrl + Alt + F1 (یا F7) برگرد
با این کار، بدون ریست، تصویر دوباره زنده میشه 😎
درنهایت می تونید براش یه شل اسکریپت بنویسید و یه Bind براش تعریف کنید خیلی خیلی کم پیش میاد ولی اگه پیش بیاد شما دیگه راه حلش رو دارید.
@LinAcademy | @LinFAQ
👍2🔥1