İki açılı parantez ne anlama geliyor? [çift]

21

Bu kadar basit bir soru gibi görünüyor ama bununla ilgili herhangi bir kaynak bulamıyorum

C / C ++ 'da, okunan değeri komut isteminden bir değerde saklamak ve bir değişken içinde saklamak anlamına gelir,

Kabuk Programlama hakkında nasıl?

    
sordu Computernerd 08.01.2014 02:52

5 cevap

44

>> , bir metin dosyasına çıktı vermek için kullanılabilir ve bu dosyadaki mevcut herhangi bir metne eklenir.

'herhangi bir komut' >> textfile.txt

'herhangi bir komut' çıktısını metin dosyasına ekler.

> değerini kullanarak üzerine yazacak.

    
verilen cevap Antonios Hadjigeorgalis 08.01.2014 03:05
11

Çıkışı bir disk dosyasına yönlendirmek için sağ köşeli parantez simgesi (& gt;) kullanılır. Belirtilen dosya zaten mevcut değilse, oluşturulur; Varsa, üzerine yazılır. Sol açılı ayraç sembolü (& lt;) girişi bir disk dosyasından yönlendirmek için kullanılır. Var olan bir dosyaya çıktı eklemek için çift dik açılı ayraç kullanın (& gt; & gt;)

    
verilen cevap Brask 08.01.2014 03:05
7

> ve >> , FD'ler için (Dosya Tanımlayıcıları) yönlendirme işleçleridir

Bash'ta standart standart girdi (strin), standart çıktı (strout) ve standart hata (strerr) olan FD standartlarına sahipsiniz. Bunlar sırasıyla FD 0, FD 1 ve FD 2 tarafından da çağrılabilir.

Normalde tüm FD'lerin terminale işaretini yaparsınız, ancak bu yeniden yönlendirme kullanılarak değiştirilebilir.

Örneğin, eğer ararsanız:

command > log.txt

Çıktıyı log.txt dosyasına yönlendireceksiniz Bu çağrıya benzer:

command 1> log.txt

Bu işlem yalnızca yönlendirmeyi yeniden yönlendirdiğinden, hala terminaldeki hatayı görebileceksiniz. Strerr dosyasını log.txt dosyasına yönlendirmek için şunları yapmanız gerekir:

command 2> log.txt

Yine, bu sadece strerr'i yeniden yönlendirir. Hem stdout hem de stderr'i yeniden yönlendirmek isterseniz, stderr çıktınızı >& komutunu kullanarak stdout'a kopyalamanız gerekir.

command 1> log.txt 2>&1

Bu komutu anlamak için sağdan sola formu okumanız gerekir, ilk olarak stdrr dosyasının bir kopyası stdout'a yapılır, sonra da logut dosyası dosyasına yönlendirme yapılır.

Yönlendirme yöntemini bu şekilde kullandığınızda, bash dosyanın var olup olmadığına bakmaz ve mevcut olanı silme anlamına gelirse bağımsız olarak bir tane oluşturmaz. Eğer log dosyanızda daha önce yazılanları kaybetmekten kaçınmak istiyorsanız, yukarıda açıklanan aynı yollarla >> komutunu kullanabilirsiniz, ancak bu durumda tüm çıktılar varolan dosyalara eklenebilir.

C ++ 'da cin, cout ve cerr ile kullandıkları için karım, benden daha iyi bir cevap verdi.

Bunlarda uzman değilim, bu yüzden bazı şeyleri yanlış yapmış olabilirim. Daha eksiksiz bilgi için Greg's Wiki'deki Bash rehberini okumanızı tavsiye ederim

    
verilen cevap Presbitero 09.01.2014 02:27
6

C / C ++’da:

C / C ++ 'da Sol ve Sağ Kaydırmalı işleçler , << ve >> sembollerini bitly operatörü olarak kullanır; bitlerde vardiya işlemlerini gerçekleştirir. C ++, aynı zamanda, temel Giriş / Çıkış işlemlerinde aşırı yüklenmiş bit çarpması operatörlerinin kullanılmasını sağlar; C ++'daki >> ve << köşeli parantezler, standart giriş / çıkış olabilecek akışlar için ayıklama ve ekleme için kullanılır. , dosyalar.

Kabuk Betiği / Programlama:

Kabuk Betiği / Programlamada, yukarıda belirtildiği gibi ayıklama / ekleme işlemlerinden çok farklı değil, >> / << ( > /% co_de varyantı) operatörler) , standart akışları kullanıcıları tarafından tanımlananlara yönlendirmek ve ekleyerek gerçekleştirmek için kullanılır ( (üst üste binen < / > değerinden farklıdır) işlemleri .

Kaynaklar:

Aşağıdakileri okumak ilginizi çekebilir:

verilen cevap precise 08.01.2014 09:36
0

Kabuk betiğinde, > işleci, doğrudan doğruya yerleştireceğiniz bir dosya oluşturacak ve eğer varsa, dosyanın tüm içeriğini silecektir. ancak >> , metni ona uygun dosyaya ekleyecektir tercih edilen >> , günlük dosyasına yazılır. Zaman, sayım veya bazı işlem günlüklerini eklemek istediğiniz gibi ve yeni dosya oluşturmak için > şunu deneyin:

  #!/bin/bash
  nowt=$(date +"%T")
  date1=$(date +"%s")
  NOW=$(date +"%d-%m-%Y")
  now=$NOW" "$nowt
  file_name=$NOW"_"$nowt".log"
  echo "START TIME WAS :$now " | cat > /home/user/Desktop/$file_name
  sh some_sh_file you want to run  2>&1 | tee >> /home/user/Desktop/$file_name #want to log the out put
  nowt=$(date +"%T")
  date2=$(date +"%s")
  NOW=$(date +"%d-%m-%Y")
  now=$NOW" "$NOW
  diff=$(($date2-$date1))
  echo "$(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed."
  echo "END TIME WAS :$now" | cat >> /home/user/Desktop/$file_name
  echo "$(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed." | cat >> /home/user/Desktop/$file_name  
    
verilen cevap smn_onrocks 16.01.2014 12:48

Etiketlerdeki diğer soruları oku