16 Eylül 2020 Çarşamba

bash kodlama - : (No Effect) built-in komutu. Subprocess Açılmasını Engeller

Giriş
Açıklaması şöyle.
: [arguments]
          No effect; the command does nothing beyond  expanding  arguments
          and  performing any specified redirections.  A zero exit code is
          returned.
Yani true döner.  Bu komutun esas kullanıldığı yer bash içinde echo, touch gibi çağrılarda yaratılan subprocess'lerin çalışmasını engellemesi. Bu komut yerine direkt > "..." şeklinde de kullanabiliriz.

Örnek
Elimizde şöyle bir kod olsun. Bu komut her alt dizin altında 500 tane fileX isimlide dosya oluşturur. Ancak bu komut yavaştır
for dir in /xfs/*/; do seq 1 1000000 | xargs -n1 -I% bash -c 'touch '$dir/file%' ; done;
Daha hızlı olsun diye şöyle yaparız.
for dir in /xfs/*/; do
    for ((i=1; i <= 1000000; i++)); do
        : > "$dir/file$i"
    done
done
Açıklaması şöyle
touch is an external program that you are having to start 5,000,000,000 times. You are also running seq 5,000 times. Don't run either of them.
Ya da şöyle yaparız.
> "$dir/file$i"
Örnek - Dosya Truncate
Açıklaması şöyle.
: is a "do nothing command" that will exit with success and produce no output, so it's simply a short method to empty a file. In most shells, you could simply do >file.txt to get the same result. It also could be marginally faster than other methods such as echo >file.txt as echo could potentially be an external command.
Şöyle yaparız. Dosyayı truncate eder.
root$ :>file.txt
Örnek - for Koşulu
Şöyle yaparız
$ time for i in $(seq 1000); do :; done

real    0m0,007s
user    0m0,002s
sys     0m0,004s
$ time for i in $(seq 1000); do /bin/true; done

real    0m0,686s
user    0m0,462s
sys     0m0,217s
Örnek - Sonsuz Döngü
Sonsuz döngü kurmada kullanılır. Şöyle yaparız.
while :
do
  something
done
Açıklaması şöyle.
This is perhaps best known for use in a while statement (while :; do break; done)

Hiç yorum yok:

Yorum Gönder