سرور مجازی لینوکس ساخت فایل از خروجی یک فرمان
[ad_1]
ساخت فایل از خروجی یک فرمان
حال میخواهیم ببینیم اگر بخواهیم محتویاتت یک فایل را به جای اینکه نمایش دهیم در یک فایل بریزیم چه کاری باید انجام
دهیم:
[[email protected]~]$ cat namef> a
بنابراین برای اینکه خروجی یک فایل را به جای اینکه نمایش دهیم در فایلی نگه داریم از علامت <یعنیredirection استفاده می
کنیم. با این دستوریک فایلی درست شد به اسم a و محتویات namef داخل آن است.
فقط اسامی را در فایلی به نام name بریزید:
[[email protected]~]$ cut-c1-10namef > name
فقط نام خانوادگی را در فایلی به نام family بریزید:
[[email protected]~]$ cut -c18-30 namef > family
اگر دو تا علامت < داشته باشیم یعنی><به چه معنی می باشد؟
یعنی اگر فایلی به نام family در مثال بالا وجود دارد در انتهای آن اضافه میکند و محتویاتت فایل قبلی تغییر نمی نماید ولی اگر
فایل وجود نداشته باشد فایلfamily را خودش می سازد.
فایل passwd
در لینوکس فایلی داریم به نام passwd که تمام userId ها در آن ثبت شده اند و به این صورت میتوانیم محتویات آن را
ببینیم:
[[email protected]~]$ less /etc/ passwd
محتویات داخل این فایل با: از هم جدا شده اند و اطلاع مربوط به هر Id user با دو نقطه از Id user بعدی جدا میشود:
قلمهای اطلاعتیId user و password و شماره Id و … می باشد.پس فایل passwd آدرس و شماره و … شما را نگه میدارد.
ما میتوانیم این فایل را تغییردهیم.
اگر بخواهیم مشخصه Fingerیک شناسه را تغییربدهیم:
[N.pardi[email protected]~]$ chfn
Password
Name
Office
Phone
اگر بخواهیم ببینیم به عنوان مثال:
[[email protected]~]$ finger n.pardis
میخو اهیم تمام Id user ها را از فایل passwd جدا کنیم و محتویات آن را به userid به نام sabt ارسال کنیم؟
[[email protected]~]$ cut -f1 -d: /etc/ passwd |mail -s uid sabt
آپشن d –مخفف delimiter به معنی جدا کننده می باشد و در این فایل جداکننده دو نقطه : می باشد.
میخواهیم sort کنیم و ایمیل کنیم:
[[email protected]~]$ cut -f1 -d: /etc/passwd |sort| mail-s uid sabt
میخواهیم فیلد اوّل و پنجم را جدا کنیم:
[[email protected]~]$ cut -f1,5 -d: /etc/passwd |sort| mail-s uid sabt
اگر بخواهیم history خودمان را Mail کنیم به این صورت :
[[email protected]~]$ history |mail-s myhis sabt
اگر بخواهیم history مان برای همه ایمیل کنیم به جای اینکه اسم همه id user ها را بنویسیم از users استفاده میکنیم.
[[email protected]~]$ history |mail -s my hist `users`
تعریف متغیر در لینوکس
در لینوکس ما متغیرداریم و میتوانیم به راحتی به آن مقدار دهیم :
[[email protected]~]$ x=2
برای اینکه مقدار یک متغیریا محتویات یک متغیررا ببینیم از echo استفاده میکنیم و جلوی اسم متغیرعلامت $ قرار
میدهیم که مقدار آن را در نظر بگیرد نه اینکه اسم متغیر را بنویسد:
[[email protected]~]$echo $x
دستور زیر مقدار متغیرx را در t میریزد.
[[email protected]~]$ echo t=$x
برای اینکه یک عبارت را در کنار مقدار متغیرچاپ کند به این صورت مینویسیم:
[[email protected]~]$ echo $xaictc
عبارت متغیر
read
برای خواندن اطلاع در لینوکس فرمانread را داریم که به وسیلهیفرمانtype میفهمیم که یک دستور builtin میباشد:
[[email protected]~]$ type read
read is a shell builtin.
وقتی فرمانread و سپس نام متغیررا وارد می نمایید.
ttp
14
[[email protected]~]$ Read NAME
اسم متغیر
سپس منترر میماند تا شما اطلاعتی را وارد کنید و به عنوان مثال zahra را وارد میکنیم .
وقتیecho کنیم میبینیم که مقدار متغیررا برای ما مینویسد. توصیه میشود اسامی متغیرها را بزرگ بنویسید
[[email protected]~]$ echo $NAME
zahra
اطلاع بیشتر از فرمان read را می توان با فرمان read help مشاهده نمود.فرمانهایbuiltin فقط help دارند.
[[email protected]~]$ help Read
با توجه به helpفرمانreadکاری کنید اگر فرمانRead بعد از 5 ثانیه جواب ندادید out time بدهد و خارج شود:
[[email protected]~]$ Read –t5 NAME
چه کاری انجام دهیم تا اسم را بیشتر از سه حرف نگیرد؟
[[email protected]~]$ read –n3 NAME
در Read اگر اسم متغیررا وارد نکنید error نمیدهد و پیشفرض اسم replyمیگذارد.
حال میخواهیم که اسم بیشتر از 3 حرف نگیرد و out time 7 ثانیه باشد.
[[email protected]~]$read-n3 –t7 name
اسم متغیر
p –در فرمانread به ما prompt میدهد:
[[email protected]~]$ read -p “PLZ ENTER UR NAME:”–t7 -n14 NAME
اگر فرمان زیر را بزنیم بعد از مد ثانیهای که در آن مشخص میکنیم خط قطع میشود که این فرمان برای کنترل و کار کردن
کاربران مناسب است.
بعد از 15 ثانیه خط قطع میشود با حروف بزرگ 15 =TMOUT
با یک خط برنامهای بنویسید که یک اسم را بخواند و حرف اوّل آن را چاپ کند؟
[[email protected]~]$ read -p “ENTER UR NAME:” -t 7 -n3 NAME; echo $NAME |cut-c1
ENTER UP NAME: pardis
p
[[email protected]~]$ read –p “ENTER NAME:” –t 7 -n 14 NAME;echo $NAME > /tmp/a; cutc1/tmp/a
ولی توصیه میشود هرگز از این روش استفاده نکنید و directory current خود را با فایلهایمتفرقه پر نکنید.
برنامهای بنویسید که اسمی را بخواند و حرف آخر آن را چاپ کند؟
[[email protected]~]$ read -p “ENTER Name:” –t 7 -n 14 NAME;echo $ NAME |tail -c2
حرف آخر اسم مورد نظر ما s است از آخر حرف دوم است چونEnter هم که بعد از اسم وارد کرد یم هم یک کاراکتر
حساب میشود.
دلیل اینکه 0 مینویسیم به این خاطر است که اگر مثالً کلمه Hello را ما به echoبدهیم و بگوییم dump octal آن را به ما
بدهد به این صورت جواب میدهد:
[[email protected]~]$ echo hello |od -c
0000000 h e l l o n
nهم که enter است یکی حساب میشود.
از طریق فرمانod می توانیم هر کلیدی که در این فرمان وارد کنیمod آن را به ما نشان میدهد
[[email protected]~]$ read a; echo $a |od–c
read
[[email protected]~]$ read a b
Najibeh pardis
[[email protected]~]$ echo $a
Najibeh
همیشه اولین داده ورودی تا قبل از space را میدهد به اوّلین متغیرو دوّمین ورودی و هر چه که باز هم بعد از space میزنیم
را به همان b که متغیردوّم است میدهد. و اگر تعداد داده ورودی کمتر بود متغیرآخری چیزی گیرش نمیآید.
The post سرور مجازی لینوکس ساخت فایل از خروجی یک فرمان appeared first on سرو سرور | میزبانی وب – سرور اختصاصی – سرور مجازی – هاست – دامنه.
[ad_2]
لینک منبع