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

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

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


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: (حل شد) درخواست دستوری برای وسط چین کردن یک متن در Bash  (دفعات بازدید: 463 بار)

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

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3504
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
سلام دوستان.
من میخوام یه متن رو بدم به ترمینال تا نشونش بده، ولی؟ بیفته وسط ترمینال (حالا چه توی کنسول باشه چه yakuake و حتی ttyها)
کلی سرچ کردم. رسیدم به این تاپیک
http://www.linuxquestions.org/questions/linux-newbie-8/bash-script-center-text-on-screen-4175417274/
که کد خلاصه ش بر طبق نیاز من اینجوری میشه:
#!/bin/bash
  ast="****************************************************"
  columnas=$(tput cols)
  y=$((($columnas-${#ast})/2))
  x=0
  tput clear
  tput cup $x $y
  echo "${ast}"

موضوع اینه که خروجی این دستور خیلی ناجوره:





























                            *********************************************************
kubuntu@Rasubuntu:~$

یعنی بالای این ستاره ها کلی فضا اشغال میشه که حدس زدم مال این تیکه هاش باشه:

columnas=$(tput cols)
  tput clear
  tput cup $x $y
 
وقتی دستکاریشون می کنم خروجی بهم میخوره.
چجوری میشه کاری کرد که اون همه (20 خط) خالی ایجاد نشه؟

یه راه دیگه هم بود به این شکل:
printf "%*s\n" 75 "*************************************"
که میتونه اینارو وسط Yakuake بندازه. ولی مثلا توی کنسول یا ttyها اثرش تموم میشه. چون هر کدوم عرض خاصی دارن.

راهی هست برای اینکه من بتونم اون بالایی رو درست کنم؟ یا اینه یه دستور باشه که من بتونم خروجی متنم رو دقیقا وسط بندازم؟ (توی هر ترمینالی که بخوام و محدودیت نداشته باشه)

مرسی  ;)
« آخرین ویرایش: 21 فروردین 1394، 05:33 ب‌ظ توسط Rasubuntu »
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :) - آزادی، بزرگ‌ترین دروغ بشریت

آفلاین محمد فدوی

  • Sr. Member
  • *
  • ارسال: 485
  • جنسیت : پسر
  • آغاز آزادی از رایانهٔ شخصی
    • آغاز آزادی از رایانهٔ شخصی
من خیلی با بش آشنا نیستم ولی این اسکریپت رو نوشتم:
#!/bin/bash
# Filename: center

tcol=`tput cols`                 # Terminal Columns
slen=${#1}                       # Length of Input
spaces=$((($tcol - $slen) / 2))  # Number of spaces we need

for ((i = 0; i < $spaces; i++)); do
    printf ' '
done

echo $1
بعد از قابل اجرا کردنش:
chmod +x centerمیشه راحت باش متن رو وسط‌چین کرد:
./center 'Hello World'
امیدوارم مفید باشه.
« آخرین ویرایش: 20 فروردین 1394، 09:22 ب‌ظ توسط محمد فدوی »
اگر به بهداشت و فرهنگ رفتار با حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: http://fadavi.net

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3504
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
مرسی محمد جان.
نیازم رو برطرف کرد  ;)
فقط با کاراکتر * مشکل داره. یعنی * رو به عنوان یه کامند در نظر میگیره تا متن معمولی  ;) ولی مثلا با = مشکلی نداره. برای حل کردنش هم یا باید از = استفاده کنم یا اینکه اینجوریش (\*\) کنم  ;)
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :) - آزادی، بزرگ‌ترین دروغ بشریت