انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

اوبونتو ۲۵٫۱۰ منتشر شد 🎊

نویسنده موضوع: برخی از ترفندهای کار با bash  (دفعات بازدید: 23 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1463
  • جنسیت : پسر
برخی از ترفندهای کار با bash
« : امروز ساعت 12:34 ق‌ظ »

در اینجا با یکسری از ترفندهای کار با پوسته bash آشنا می‌شویم.





جلوگیری از رونویسی پرونده‌ها

به صورت پیشفرض در محیط bash می‌توان روی فایلی که موجود است عملیات redirect یا تغییر مسیر را انجام داد.
این کار باعث می‌شود محتویات کنونی فایل از بین برود.
با تنظیم زیر می‌توان این ویژگی را غیر فعال کرد و از این پس نمی‌توان روی فایل موجود redirect انجام داد.

set -o noclobber

help set
      -C  If set, disallow existing regular files to be overwritten
          by redirection of output.


نمونه

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

$ echo "salam
1
2
3
dorood
a b c d
">file.txt

با فرمان cat می‌توانید محتویات فایل را بررسی کنید.

حالا به سادگی می‌توان با دستور زیر محتوای فایل را حذف کرد.
> file.txt

اکنون درون فایل هیچ محتوایی موجود نیست.
حالا یکبار دیگر درون فایل چیزهایی می‌نویسیم و اینبار ویژگی را فعال کنیم دیگر نمی‌توان فایل را رونویسی کرد.



$ echo "salam
1
2
3
dorood
a b c d
">file.txt
$ set -o noclobber
$ > file.txt
bash: file.txt: cannot overwrite existing file

برای غیر فعال سازی این تنظیم
set +o noclobber
در نظر داشته باشید که این تنظیم فقط برای پوسته جاری است. اگر می‌خواهید این تنظیم را دائمی کنید می‌توانید در فایل bashrc. قرارش دهید.

البته می‌توان با فعال بودن تنظیم بالا به این شکل محدودیت را دور زد.
echo "hello" >| file.txt

« آخرین ویرایش: امروز ساعت 12:48 ق‌ظ توسط esmaeelE »

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1463
  • جنسیت : پسر
پاسخ : برخی از ترفندهای کار با bash
« پاسخ #1 : امروز ساعت 12:47 ق‌ظ »
معمولا پیشنهاد می‌شود به عنوان نخستین فرمان alias را اجرا کنید. تا از میانبرهای کنونی تنظیم شده آگاه شوید.

$ alias
alias als='vim ~/.bash_aliases'
alias autodir='printf "\e[?2501h"'
alias ctrlc='xclip -selection c'
alias ctrlv='xclip -selection c -o'
alias dn='aria2c -s16 -x16 -j4 -c'
alias em='emacs -nw'
alias fls='/bin/ls -1U'
alias gh='cd ~/dev/github/'
alias is_tor='curl -x socks5h://127.0.0.1:9050 -s  https://check.torproject.org/api/ip | jq ".IsTor"'
alias ll='ls -ltrh'
alias ls='ls --color=auto'
alias noautodir='printf "\e[?2501l"'
alias now='date '\''+%Y_%m_%d'\'''
alias now_j='jdate '\''+%Y_%m_%d'\'''
alias upaste='nc -N paste.ubuntu-ir.org 1337'

البته خود alias را هم می‌توان تغییر داد.
alias alias=ls

---


نمی‌توان خروجی را روی خود فایل ذخیره کرد.

نمونه
$ echo "salam
1
2
3
dorood
a b c d
">file.txt
$ cat file.txt | grep a --color
salam
a b c d

اجرای چنین فرمانی به حذف شدن کامل محتویات فایل file.txt می‌انجامد.

$ cat file.txt | grep a --color >file.txt
$ cat file.txt

برای جلوگیری از این اتفاق سه راه هست.

استفاده از تنظیم ارسال پیشین

نوشتن خروجی در فایلی دیگر

استفاده از ابزار sponge
$ sudo apt install moreutils


$ cat file.txt | grep a --color | sponge file.txt
$ cat file.txt
salam
a b c d