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

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

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


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

نویسنده موضوع: سؤال در مورد دستور echo (حل شد)  (دفعات بازدید: 6167 بار)

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

آفلاین محمد جواد قدیر

  • Jr. Member
  • *
  • ارسال: 59
  • جنسیت : پسر
    • پاینوکس
سؤال در مورد دستور echo (حل شد)
« : 30 اردیبهشت 1387، 12:25 ب‌ظ »
سلام.
یه مشکلی دارم با این دستور echo که بدجوری حالمو گرفته. آخه زیاد تو استفاده از خط فرمان حرفه ای نیستم.
اول این حالت رو داشته باشید :
نقل‌قول
echo "text1" >>file.txt
خوب با این دستور من عبارت text1 رو در خط اول فایل file.txt مینویسم. حالا میخوام تو خط دوم عبارت text2 رو بنویسم :
نقل‌قول
echo "text2" >>file.txt
ولی با این دستور عبارت text2 در ادامه ی عبارت قبلی و در همون خط بالا نوشته میشه.
توی راهنمای این دستور گفته که با آپشن e و استفاده از \n میشه رفت به خط جدید ولی من نتونستم. یعنی خوب نفهمیدم چطوری باید ازش استفاده کنم.
خواهشا راهنمایی کنید.
« آخرین ویرایش: 31 اردیبهشت 1387، 10:09 ق‌ظ توسط javad33 »


آفلاین Sepehrnoush

  • Full Member
  • *
  • ارسال: 151
  • سپهرنوش
پاسخ به: سؤال در مورد دستور echo
« پاسخ #1 : 30 اردیبهشت 1387، 04:06 ب‌ظ »
شما از بک اسلش استفاده می‌کنید. باید از اسلش استفاده کنید. اول / و بعد بدون هیچ فاصله‌ای n که معنی‌ش می‌شه «enter».
ubuntu 8.04, parsix 1.0


آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: سؤال در مورد دستور echo
« پاسخ #2 : 30 اردیبهشت 1387، 04:32 ب‌ظ »
مشکل اینجاست که پیش فرض اش خط جدید هست!
یا من منظور ات رو درست متوجه نشدم؟!
shayne@shayne:~$ cd Desktop/
shayne@shayne:~/Desktop$ echo ice > a
shayne@shayne:~/Desktop$ cat a
ice
shayne@shayne:~/Desktop$ echo ice >> a
shayne@shayne:~/Desktop$ cat a
ice
ice
shayne@shayne:~/Desktop$ echo "ice" >> a
shayne@shayne:~/Desktop$ cat a
ice
ice
ice
shayne@shayne:~/Desktop$ echo "ice" >> a
shayne@shayne:~/Desktop$ cat a
ice
ice
ice
ice
shayne@shayne:~/Desktop$
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

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

  • ilius, saeedgnu
  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1543
  • جنسیت : پسر
پاسخ به: سؤال در مورد دستور echo
« پاسخ #3 : 30 اردیبهشت 1387، 05:24 ب‌ظ »
جناب javad33 میخواستن که توی خط جدید فایل ذخیره بشه. در حالی که دستور echo بطور پیش‌فرض این کارو میکنه. احتمالا اشتباه کردن.
اما اگه خواستید اینطوری هست:
echo -e "line 1\nline 2\nline3" > file.txtهمونطور که گفته شد دستور echo خودش بطور پیش‌فرض یه اینتر به آخرش اضافه می‌کنه (یعنی توی دستور بالا بعد از line 3 هم یه کاراکتر سر خط میذاره. یعنی در مجموع سه تا کاراکتر سرخط خواهد داشت) اگه خواستید غیرفعالش کنید میتونید از اوپشن n- استفاده کنید.
echo -ne "line 1\nline 2\nline3" > file.txtاما اینجا، اون فایل فقط دو تا کاراکتر سر خط خواهد داشت (آخرش نداره).
« آخرین ویرایش: 30 اردیبهشت 1387، 05:37 ب‌ظ توسط ilius »

آفلاین محمد جواد قدیر

  • Jr. Member
  • *
  • ارسال: 59
  • جنسیت : پسر
    • پاینوکس
پاسخ به: سؤال در مورد دستور echo
« پاسخ #4 : 30 اردیبهشت 1387، 07:20 ب‌ظ »
خوب من کامل موضوع رو شرح بدم تا ببینیم کار به کجا میرسه.
اول اینکه یه کلاینتی برای خط فرمان bash توی ویندوز هست به نام cygwin من این عملیات رو تو اون انجام دادم.درسته وقتی دستور cat رو میزنیم همونطور که خودتون هم گفتید هرکدوم از نوشته ها تو خط جدید نوشته میشه. ولی وقتی فایل رو با نت پد باز میکنم همه چی پشت سر همه.
اما تو اوبونتو این مشکل وجود نداره و وقتی فایل رو با gedit باز میکنم هرکدوم تو یه خط جدیده.
کلا تمام این بحثها سر این بود که من میخوام بدون استفاده از ادیتورهای گرافیکی تو خط فرمان برنامه بنویسم.کار با ایمکس رو بلد نیستم. vi رو یه کم یاد گرفتم ولی نه کامل. این دستور echo بنظرم جالب اومد ولی وقتی میخوام مثلا یه خط شبیه زیر بنویسم کلا نمیشه
cout<<"hello\n";
وقتی با echo اینو مینویسم اینجوری میشه :
cout<<hellon;


آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: سؤال در مورد دستور echo
« پاسخ #5 : 30 اردیبهشت 1387، 08:07 ب‌ظ »
خب این بر می گرده با کاراکتر انتهای خط که هم می تونه cr\  و یا n\ باشه! و تفاوت اشون هم در همینه! اگه درست یادم باشه لینوکس از n استفاده می کنه ولی ویندوز از cr
n ==NewLine
cr ==CariageRetrun
« آخرین ویرایش: 30 اردیبهشت 1387، 08:09 ب‌ظ توسط علیرضا طالقانی »
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین محمد جواد قدیر

  • Jr. Member
  • *
  • ارسال: 59
  • جنسیت : پسر
    • پاینوکس
پاسخ به: سؤال در مورد دستور echo
« پاسخ #6 : 30 اردیبهشت 1387، 09:13 ب‌ظ »
ببینید من میخوام از این طریق مثلا یه برنامه به زبان c++ بنویسم و تو یه فایل ذخیره کنم. \n از دستورات خود زبان c++ هست ولی چون echo هم اونو میشناسه مثل اینکه تداخل بوجود میاد و من نمیتونم اینو همینجوری که هست بنویسم. یا مثلا وقتی میخوام از " " استفاده کنم چون echo اینو میشناسه نمیتونم تو فایل متنیم ازش استفاده کنم.
راهی برای حل این مشکل هست؟


آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: سؤال در مورد دستور echo
« پاسخ #7 : 30 اردیبهشت 1387، 09:52 ب‌ظ »
جواد جان! ویندوز ندارم که تست کنم دقیق بهت راهنمایی کنم! ولی اگه من بودم! اول ی کلاینت دیگه رو تست میکردم!  putty هم ظاهر کلاینت خوبی ی!
باقیش هم یکمی سعی و خطا می خواد!
توی تنظیمات کلاینت ات هم !  حالا چ putty و یا cygwin ببین که آیا می تونی کاراکتر انتهای خط رو تغییر بدی یا نه؟!
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین 404

  • Full Member
  • *
  • ارسال: 145
  • جنسیت : دختر
پاسخ به: سؤال در مورد دستور echo
« پاسخ #8 : 31 اردیبهشت 1387، 09:05 ق‌ظ »
این که نوت پد اون طور که شما می خواید نمایش نمی ده مسئله به همون تفاوت های نیو لاین ویندوز و لینوکس مربوطه نه این که کلاینت سیگوین باشه یا ..
مثلا اگه شما این رو بنویسید و کامپایل کنید، نوت پد اون طور که می خواید نمایش می ده:
#include<iostream>
using namespace std;

int main(){
cout<<"text1\r\ntext2\r\n";
}
ولی اگه او \r ها رو بردارید نوت پد نیولاین نشون نمی ده
( ولی تا جایی که من می دونم تقریبا هر ادیتور دیگه ای  \n رو نیولاین نشون می ده. شخصا از اینا مطئنم:
gvim تحت ویندوز،textpad, codewhiz, perl editor ..)
این کرکتر ها هم نوشته می شه می تونید مثلا یه برنامه بنویسید و چک کنید تا مطمئن بشید
#include<iostream>
using namespace std;

char c;
int main(){
while(cin.get(c))
cout<<(int)c<<" ";
cout<<endl;
}
تداخلی به خاطر echo نیست. ولی اون مسئله که نمی شه با echo توی ویندوز اسپیس رو نوشت یا آپشن هاش با چیزی که توی لینوکس می بینیم فرق داره، چیز دیگری هست که نمی دونم به خاطر کلاینت سیگوین ه یا نه. این لینک ها رو یک نگاهی بندازید شاید به درد بخوره:
http://www.cygwin.com/ml/cygwin/1999-07/msg00254.html
http://cygwin.com/ml/cygwin/2003-01/msg01633.html
http://www.khngai.com/emacs/cygwin.php

آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: سؤال در مورد دستور echo
« پاسخ #9 : 31 اردیبهشت 1387، 09:11 ق‌ظ »
چیزی که اسما می گه منطقی تره تا راهی که من گفتم! تو ویرایش گر های دیگه هم همین مشکل رو داری؟

.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین محمد جواد قدیر

  • Jr. Member
  • *
  • ارسال: 59
  • جنسیت : پسر
    • پاینوکس
پاسخ به: سؤال در مورد دستور echo
« پاسخ #10 : 31 اردیبهشت 1387، 10:09 ق‌ظ »
بابت همه چیز ممنون.
از اینکه وقت گذاشتین و جواب دادین خیلی متشکرم.
مشکل حل شد. بحث نیولاین هم ختم به خیر شد.
نقل‌قول
این لینک ها رو یک نگاهی بندازید شاید به درد بخوره:
http://www.cygwin.com/ml/cygwin/1999-07/msg00254.html
http://cygwin.com/ml/cygwin/2003-01/msg01633.html
http://www.khngai.com/emacs/cygwin.php
بابت لینکها خیلی خیلی ممنون.
نقل‌قول
تو ویرایش گر های دیگه هم همین مشکل رو داری؟
تو ویندوز فقط نت پد رو دارم که با اون مشکل داشتم ولی دیگه خدا رو شکر با کمک دوستان حل شد.