Домашно по Linux Os Homeworks 04


2

Колеги моля ви за малко помощ да ме насочите какво трябва да сторя, че съм супер бос с този Линукс sad Опитвам се да пиша по точка 1 

1. Configure your command prompt in such a way, that you will

always see the exit status of the previous command.

Трябва да променя промпта и да му въведа нещо от сорта на echo$ команда ли?




Отговори



0
gedit /etc/bashrc най-вероятно вътре ще се крие



3

Здравей,

Според мен трябва да конфигурираш промпта си така, че всеки път да ти връща exit status-а на предната команда.

За целта е добре да разгледаш :

  • $PS1
  • $?

С 'echo $?' можеш да гледаш exit status-а на последната изпълнена команда. Пример (слагам коментар на реда на exit status, за да е по-ясно):

[yulimoto@grizzly ~]$ ls -ld
drwx------ 10 yulimoto yulimoto 4096 30 юли 10,08 .

[yulimoto@grizzly ~]$ echo $? 0 # exit status
[yulimoto@grizzly ~]$ ls /root/ ls: не може да се отвори каталогът /root/: Отказан достъп
[yulimoto@grizzly ~]$ echo $? 2 # exit status
[yulimoto@grizzly ~]$ cd /root/ -bash: cd: /root/: Отказан достъп
[yulimoto@grizzly ~]$ echo $? 1 # exit status

При решението на задачата този exit status трябва да се направи така, че автоматично да се показва в промпта

Тук ще копирам при моето решение какъв е изхода в конзолата:

# опитвам се да вляза в папка, за която нямам права за достъп
# изхода ще бъде 1 и ще се види в следващия промпт
0 cd /root/
bash: cd: /root/: Отказан достъп

# Тук промпта показва 1 заради върнатия exit status на предната команда # Сега ще влезем в папка за която имаме права и следващия промт ще бъде 0 1 cd /home
# Тук ще се опитаме да влезем в папка, която не същестува 0 cd no_existing_dir bash: cd: no_existing_dir: Няма такъв файл или директория
# Промпта е 1, защото се опитахме да влезем в папка, която не съществува # А сега ще се опитаме да изпълним команда, която не същестува. Exit statusa ще е 127 1 no_existing_command no_existing_command: командата не е открита 127
Най-добре е предварително да видиш някои материали има доста като този е нета - http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

от yulimoto (0 точки)


1
Да, ще се използва echo $? . Kaкво направих аз до тук :
отворих /etc/bashrc и където е PROMPT_COMMAND=' print .....' добавих накрая $(echo $?) . За сега изкарва резултат, но не update-ва всеки път резултата. Ако разбера повече, ще споделя.



0
Нещо, което работи (поне при мен) : промяната се състои в това PS1='[каквото решиш тук] : $( echo $? ) : ' и примернен output : [blablabla] : 0 : като 0 е резултата от echo командата, а подредбата и как да изглежда и какво да има в промпта си зависи от теб. Moже echo да се замени и с друга команда и пак ще работи (пробвах с pwd).


0
Според мен тук има една уловка - име и стойност на променливата. В този случай ти предаваш стойността. Примерно ако echo $? изпринти 0 в началото и промпта винаги ще принти 0 т.е. няма да ъпдейтва. Ако обаче се опитаме да подадем на промта не стойността, а името той всеки път ще си изпълнява командата, чието име сме подали. Можем да използваме обратно наклонена "\" за да предотвратим възможността $ да бъде схваната като специален знак.

от yulimoto (0 точки)



0
4. Write a bash script that will convert a directory containing .wav files into .mp3, useing lame for the encoding. --------------------------------------------------------------------------------------------------------------------- По долу е даден кода необходим за конвертирането. За целта създавам файл - wav_to_mp3 >> командата за това е >> touch wav_to_mp3 След като направим файла посредством редактора >> vi /home/user1/wav_to_mp3 го отваряме и пишем съответните редове. -------------------------------------------------------------- -------------------------------------------------------------- 1 #!/bin/bash 2 #script to convert .wav to .mp3 using lame utility 3 for i in *.wav ; do 4 echo $i 5 bname=`basename $i .wav` 6 lame $i $bname.mp3 7 done 8 mkdir wav mp3 && mv *.mp3 mp3 && mv *.wav wav -------------------------------------------------------------- -------------------------------------------------------------- След като сме въвели кода във файла за да запаметим промените пишем >> :wq >> като представлява запис и изход. ---------------------------------------------------------------- За да стартираме файла, тоест изпълнението на горепосочените редове в конзолата пишем >> bash wav_to_mp3 >> след което файла се изпълнява ----------------------------------------------------------------- Ето и данни от изведената от конзолата информация. -------------------------------------------------------- -------------------------------------------------------- Track8.wav LAME 3.99.5 32bits (http://lame.sf.net) CPU features: MMX (ASM used), SSE (ASM used), SSE2 Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz Encoding Track8.wav to Track8.mp3 Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 17376/17376 (100%)| 0:15/ 0:15| 0:18/ 0:18| 30.220x| 0:00 ------------------------------------------------------------------------------- kbps MS % long switch short % 128.0 100.0 78.3 10.2 11.5 Writing LAME Tag...done ReplayGain: +1.3dB Track9.wav LAME 3.99.5 32bits (http://lame.sf.net) CPU features: MMX (ASM used), SSE (ASM used), SSE2 Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz Encoding Track9.wav to Track9.mp3 Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 12484/12484 (100%)| 0:10/ 0:10| 0:11/ 0:11| 31.539x| 0:00 ------------------------------------------------------------------------------- kbps MS % long switch short % 128.0 100.0 79.2 10.0 10.8 Writing LAME Tag...done ReplayGain: +1.6dB

от Nikolov89 (20 точки)


0
Не е ли рано, да се дават решения на домашно, чиито срок още не е изтекъл?

от krasin (296 точки)

0
Ето моя :)
#!/bin/bash LAMEOPTS="-V 1"
for FILE in *.wav ; do OUTNAME="${FILE%%.wav}.mp3" lame $LAMEOPTS "$FILE" "$OUTNAME" done



0
 Това дали се доближава до правилният отговор?
Имаше нещо, че в промпта само се добавяше $? или #? не помня как го бях разпознал...или се бъркам
 
 
drwx------ 3 nasty nasty 4096 Jul  4 22:40 .
nasty@grizzly:$echo 0 $echo $?
-bash: 0: command not found
nasty@grizzly:$echo 127
nasty@grizzly:$echo 127 $ echo $?
-bash: $: command not found
nasty@grizzly:$echo 127 $ echo $? ls /root/
-bash: $: command not found
nasty@grizzly:$echo 127cd /root/
-bash: cd: /root/: Permission denied
nasty@grizzly:$echo 1 echo $?
1
nasty@grizzly:$echo 0PS1='nasty@\h:/$echo $?'
nasty@grizzly:/ 0PS1='nasty@\h:\$echo $?'
nasty@grizzly:$echo 0
 

от DragomirD (88 точки)


0
наистина защо не изчакахте да изтече срока на самото домашно 8.8.2013 и тогава да давате решения!!

от kalinsofia (0 точки)

0
Аз се опитвам да стигна до решение и имам нужда за леко напътствие. Сори ама не разбирам нищо от Линукс!

от DragomirD (88 точки)