Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: Naka в Apr 17, 2009, 10:16



Титла: Как мога да генерирам поредица само от единици.
Публикувано от: Naka в Apr 17, 2009, 10:16
Искам по подобие на /dev/zero да мога да генерирам безкрайна поредица от 1111111111111, или 5555555 или АААААА.
мислиx нещо подобно на
cat /dev/zero | OR '0xFF' има ли някакви команди, които могът да правят битови маски?


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: neter в Apr 17, 2009, 11:02
Задължително ли е да е безкрайна поредица от една и съща стойност? Понеже в момента се сещам само за /dev/random и /dev/urandom, но те генерират случайни стойности - /dev/urandom използва вътрешна база от стойности, а /dev/random генерира напълно случайни стойности (да живее Linux за това :D ). Каква всъщност е целта на занятието?


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: Naka в Apr 17, 2009, 11:54
Да безкрайна поредица ми трябва.
Целта ми е да запълня цял хард диск вместо с нули, с едниници и с '55555' и 'ААААА'.
Имам едни подозрения ............ за чексумата на секторите ама  е дълго за обеснение.


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: edmon в Apr 17, 2009, 13:13
не че съм много наясно ама:
с един цикъл
 while() echo "1"

  в едно сцриптче
и после
./сцриптцч > | alabala


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: Naka в Apr 17, 2009, 13:23
Трябва и да е много бързо, така че със скриптове няма да стане.


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: Archangel в Apr 17, 2009, 13:51
Принципно
Код:
    yes <string> 

като <string> е това което се повтаря ще го направи но има и нов ред демек
Код:
    yes 1 

прави:

Код:
1
1
1
1
1


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: Hapkoc в Apr 17, 2009, 14:21
Само аз ли си мисля, че /dev/zero не генерира "0", а 0, т.е. не байтове, със стойност, отговаряща на ASCII кода на цифрата нула, а байтове със стойност нула?


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: spirtbrat в Apr 17, 2009, 14:25
Трябва и да е много бързо, така че със скриптове няма да стане.

Ми, напиши го на С тогава. Как осъществяваш писането по харда? Файл ли създаваш?


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: neter в Apr 17, 2009, 14:43
Само аз ли си мисля, че /dev/zero не генерира "0", а 0, т.е. не байтове, със стойност, отговаряща на ASCII кода на цифрата нула, а байтове със стойност нула?
И аз така го знам :) Затова се сещам само за /dev/random и /dev/urandom. Е, щом трябва да е бързо, тогава остава само /dev/urandom, защото /dev/random е бавен (докато мисли напълно случайните стойности). Забравих да кажа, че и тези две псевдо-устройства могат да генерират безкрайни редици, както /dev/zero. Затова, Naka, ако целта ти е да запълниш съответния дял с ненулева информация, то /dev/urandom ще ти свърши работа (какво значение има в този случай дали запълването ще е с константна или случайна стойност?). А питах каква е целта на занятието, защото, ако искаш да тестваш как някакъв код се държи при липса на свободно място на дяла, то не е нужно да запълваш дяла - можеш да използваш /dev/full.

edit: Загрях най-сетне какво отговори за целта на занятието :D Ама защо се пестиш в обяснението? Обясни ;)


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: gat3way в Apr 17, 2009, 15:55
Само не мога да разбера защо един цикъл извъртян чрез bash скрипт трябва да е по-бавен от четенето на /dev/zero примерно....


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: romeo_ninov в Apr 17, 2009, 16:12
Код:
#include <stdio.h>
int main(int argc, char *argv[])
{
while(){
     putchar(*argv[1]);
}
}


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: foxb в Apr 17, 2009, 19:47
man shred  ???

не става ли?


Титла: Re: Как мога да генерирам поредица само от единици.
Публикувано от: bop_bop_mara в Apr 18, 2009, 01:03
Дай по-добра дефиниция на "поредица само от единици".
Ако имаш пред вид файл, от който искаш да четеш байт по байт и да ти връща 1 за всеки байт, значи тази единица трябва да ти е символа '1'  (тип char na C). Но тази единица ти заема 1 байт, т.е 8 бита и битовата последователност е според ACII кодовата таблица.
Ако ползваш числен тип, то той ще ти заема поне 1 байт и двоичното (битовото) представяне на 1цата ще е 00..01 Т.е. ако изпълниш дял на харда по някой от тези начини битовото съдържание ще бъде последователност от комбинация на 0ли и 1ци.
Хард, изпълнен само с 0ли, би трябвало (предполагам) да е изпълнен само с 0леви байтове, което значи, че и всички битове са 0ли. Ако искаш всички битове да са 1ци - избери си числен тип и запълни дяла със максималната му стойност (тази, която има двоично представяне 11...1).