انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: سودو. در 14 اسفند 1400، 04:33 بظ
-
دوستان این بخشی از bashrc منه که خودم نوشتم و اضافه کردم انتهای bashrc اصلی :
shopt -s autocd
export HISTCONTROL=ignoredups
export LS_COLORS="di=0;93:ln=0;94:ex=0;91:*.txt=0;90:*.jpg=0;92:*.mkv=0;95:*.mp3=0;96"
export PS1="\[$(tput sgr0)\]\[\033[38;5;11m\]\W\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;14m\]!\[$(tput sgr0)\] \[$(tput sgr0)\]"
ds(){ df -h|grep sd|awk '/a1/ {print "Root",$2,$3,$4} /a2/ {print "Home",$2,$3,$4}'|column -t;}
g(){ grep -in --color=always ${@:2} $1|sed 's/:/ /';}
l(){ ls -X $@|tail +2|cut -c2-4|sed 's/-//'>~/.fonts/l/p;du -h -d1 $@|sort -k2|tail +2|awk '{print $1}'>~/.fonts/l/s;ls -X $@|tail +2|grep -v ^d|awk '{print $3}'>>~/.fonts/l/s;ls $@|tail +2|awk '/^d/ {print $4,$5,$6}'>~/.fonts/l/n;ls -X $@|tail +2|grep -v ^d|awk '{print $4,$5,$6}'>>~/.fonts/l/n;paste -d: ~/.fonts/l/{p,s,n}>~/.fonts/l/l;e "421:$(du -hs $@|awk '{print $1}'):$(ls $@|tail +2|wc -l)">>~/.fonts/l/l;column -t -s: ~/.fonts/l/l;}
mu(){ free -h|awk '/^M/ {print $3" "$7}';}
alias ,='v +100 ~/.bashrc'
alias c=.\ ~/.bashrc
alias cp=cp\ -ir
alias d='date "+%a %d %b %Y"'
alias dn=wget
alias dr=mkdir\ -p
alias e=echo\ -e
alias f=touch
alias h=man
alias i='rt apt install -y'
alias ls='ls -AgGh --group-directories-first --color=always --time-style=+'
alias m=mv\ -i
alias n='e "Custom, Bashrc, Kernel & Snap, Thing!\n( zramswap < SIZE=1024\nvisudo < Defaults env_reset,pwfeedback )"'
alias p=chmod
alias pr='rt apt purge --auto-remove -y'
alias q='c;history -c;exit'
alias r=rm\ -fr
alias rt='sudo '
alias s=cat\ -s
alias sc=less\ -s
alias t='gnome-extensions disable ding@rastersoft.com;gnome-extensions disable ubuntu-appindicators@ubuntu.com;gnome-extensions disable ubuntu-dock@ubuntu.com;rt snap remove firefox gnome-3-38-2004 gtk-common-themes snap-store;rt snap remove core20;pr gnome-{calculator,characters,font-viewer,logs,power-manager,screenshot,shell-extension-{appindicator,desktop-icons-ng,ubuntu-dock}} memtest86+ nano seahorse snapd yelp;dr ~/.fonts/l ~/.icons;f ~/.fonts/l/{p,s,n,l};cp ~/Document/After/Vazir.ttf ~/.fonts/;~/.icons/;cp ~/Document/After/Icon.zip .;unzip -q Icon.zip;r Icon.zip;~/Document/After/Extension/;gnome-extensions install App\ Grid\ Tweaks.zip;gnome-extensions install Custom\ Hot\ Corners.zip;gnome-extensions install Just\ Perfection.zip;cp ~/Document/After/Hidden/* ~/.local/share/applications/;e "set hlsearch\nset mouse=a\nset nu\nset ts=3\nset wrap">~/.vimrc;rt ufw enable;rt v /etc/fstab;rt visudo;rt r /etc/xml /swapfile;~'
alias to='rt apt-mark hold snapd ttf-mscorefonts-installer unrar yelp;pr linux-image-5.13.0-19-generic;i epiphany-browser gnome-tweaks python totem ubuntu-restricted-extras vim zram-tools;rt systemctl enable zramswap.service;rt v /etc/default/zramswap'
alias u='rt apt update;rt apt upgrade -y;rt apt full-upgrade -y;rt apt autoremove -y;rt apt clean'
alias up='uptime -p|cut -c 4-'
alias v=vim
alias w=type
clear;r ~/{.bash_history}
۱ . همونطوری که میبیند من برای اینکه بعد از هر بار تغییر توی bashrc لازم نباشه ببندم و باز کنم ترمینالو ، آلیاس c رو ساختم که دوباره بررسی کنه bashrc رو و همزمان صفحه رو هم تمیز کنه و فایل تاریخچه بش رو هم پاک کنه !
الف . نمیشه bash_history رو غیر فعال کرد که هر بار پاکش نکنم ؟ تاریخچه همون نشستی که دارم باهاش کار میکنم رو میخوام داشته باشم اما نمیخوام ذخیره بشه ! فقط همون ترمینالی که بازه کافیه برام ، نمیخوام قبلی ها نگه داشته بشه !
ب . همونطور که مشخصه وقتی یک ترمینال باز میکنم خب باید بخونه و همه آلیاس ها و فانکشن ها رو بشناسه و فعال کنه دیگه درسته ؟ اما مثلا فانکشن l به درستی کار نمیکنه ( یه جور ls شخصی سازی شده برای خودم ساختم با چند تا ترفند ) ! برای همین وقتی وارد ترمینال میشم مجبورم یبار c رو بزنم تا دوباره read & execute کنه bashrc رو ! ممکنه بخاطر این باشه که توی فانکشنش چند تا آلیاس هم استفاده کردم ؟
۲ . فایل ها و پوشه های ( .lesshst و .sudo_as_admin_successful و .vim/ و .viminfo و .profile و .bash_logout ) چین و چیکار میکنن ؟ یه فایل هم از لحاظ اسم شبیه به .lesshst بوجود میاد گاهی اوقات که تو اسمش wget داره !
۳ . از نحوه کار shellcheck هم سر درنیاوردم ! البته اگه مال همین کاره !
پیشاپیش سپاس !
-
۱- الف
فکر کنم اگه متغییر HISTFILESIZE رو برابر 0 قرار بدید، چیزی که میخواهید انجام میشه.
۱- ب
مشکل از اینجاست که alias هایی که توی تابع استفاده کردید، بعد از خود تابع تعریف شدند در نتیجه درست کار نمیکنه. اگه تابع مورد نظر رو بعد از alias ها تعریف کنید، مشکل حل میشه.
۲-
عدم وجود فایل sudo _as_admin. باعث میشه وقتی که ترمینال رو باز کردید، یه پیام اون بالا بیاد و از شما بخواهد که یه دستور رو با sudo اجرا کنید تا مطمئن بشید که دسترسی استفاده از sudo دارید. فکر کنم همینطور باعث میشه که وقتی که sudo رو اجرا میکنید، سه تا راهنمایی کوچک (بیشتر اخلاقی تا راهنمای کار با sudo) نمایش بده.
با اولین اجرای موفقیت آمیز sudo، اون فایل ایجاد میشه و اون پیغامها نمایش داده نمیشن.
فکر کنم lesshst. برای این هست تا تاریخچههای جستوجوی شما توی less، ذخیره بشن.
profile. مربوط به bash و فکر کنم sh باشه. وقتی که پوسته توی حالت login باز میشه، این خونده و تنظیماتش مورد استفاده قرار میگیرن. چیزی شبیه bashrc. هست با این تفاوت که فقط وقتی استفاده میشه که پوسته به صورت login باز شده باشه.
وقتی bash رو میبندید، درست قبلش، bash_logout. اجرا میشه تا یه سری کارها رو انجام بده، مثلا صفحه رو پاک کنه و چنتا کار دیگه. اسکریپت کوچکی هست، راحت میتونید عملکرد اون رو متوجه بشید؛ اگه پایههای اسکریپت نویسی با bash رو بدونید. فقط وقتی اجرا میشه که bash توی حالت login اجرا شده.
اون که مربوط به wget هست وقتی ایجاد میشه که فکر کنم wget به مشکل میخوره یا وسط کار، متوقفش میکنید.
در مورد viminfo. و vim. چیزی نمیدونم.
۳- بیشتر برای کمک توی نوشتن اسکریپتهای بزرگ استفاده میشه. مشکلات اسکریپتها رو میگه، مثل مشکلات نگارشی یا چیزهایی که ممکنه عملکردی متفاوت از انتظار داشته باشند. در مورد خطاهای منطقی، نمیتونه کار زیادی انجام بده. یه جورایی میتونید یه linter برای اسکریپتهای bash و sh به حساب بیاریدش. (نمیدونم از بقیه پوستهها مثل zsh یا ksh هم پشتیبانی میکنه یا نه.)
-
خیلی خیلی ممنونم ، لحظه ب لحظه از شما چیز یاد گرفتم تو این انجمن 🙏
-
فکر کنم اگه متغییر HISTFILESIZE رو برابر 0 قرار بدید، چیزی که میخواهید انجام میشه.
بازم ساخته میشه اما توش چیزی نمیریزه !
وقتی bash رو میبندید، درست قبلش، bash_logout. اجرا میشه تا یه سری کارها رو انجام بده، مثلا صفحه رو پاک کنه و چنتا کار دیگه. اسکریپت کوچکی هست، راحت میتونید عملکرد اون رو متوجه بشید؛ اگه پایههای اسکریپت نویسی با bash رو بدونید. فقط وقتی اجرا میشه که bash توی حالت login اجرا شده.
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
-
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
بازش کنید و ببینید چیکار میکنه.
-
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
بتزش کنید و ببینید چیکار میکنه.
عذر میخوام اما میشه بگید چجوری محتویات یه نرم افزار رو بخونم ؟!
این اسکریپ یه نرم افزار رو به ادرس زیر اجرا میکنه :
/usr/bin/clear_console
-
man مربوط به اون دستور رو ببینید.
man clear_console
-
man مربوط به اون دستور رو ببینید.
man clear_console
چرا بعنوان یک نرم افزار معمولی در نظرش نگرفتم 😅🤦 که میتونه یه man داشته باشه آخه ؟
( چون به جای فراخونیش با اسمش ، با ادرسش فراخونی شده توی .bash_logout ، چرا ؟ )
-
دستوراتی که توی دایرکتوریهای /bin/ /sbin/ /usr/bin/ و /usr/sbin/ هستند، معمولا همیشه man دارند.
در مورد اینکه چرا مستقیم با دادن مسیر، اجرا شده، فکر میکنم به خاطر این باشه که ممکنه متغیر PATH درست نباشه و چنین دستوری پیدا نشه. ولی مطمئن نیستم.
-
خیلی ممنون !
ی سوال ؟ autopurge تو apt چیکار میکنه ؟ توی man سرچ کردم نبود !
واسه این سوال کوچیک نخواستم تاپیک جدید باز کنم : )
-
فکر کنم کاری که میکنه این هست که بستههایی که remove شدند اما purge نشدند رو purge میکنه. کارهای autoremove رو هم انجام میده. مطمئن نیستم. شاید هم عملکرد autoremove رو داره. توی مستندات apt هم ندیدم بهش اشاره بشه.
-
فکر کنم کاری که میکنه این هست که بستههایی که remove شدند اما purge نشدند رو purge میکنه. کارهای autoremove رو هم انجام میده. مطمئن نیستم. شاید هم عملکرد autoremove رو داره. توی مستندات apt هم ندیدم بهش اشاره بشه.
خیلی تشکر جناب -dragon