`Time` komutu neden hiçbir seçenekle çalışmıyor?


61

Zamanın çıktısını biçimlendirme seçeneği timeile komutu kullanmaya çalıştım -f, ancak aşağıdaki hatayı alıyorum:

-f: command not found

Sonra diğer seçenekleri kullanmaya çalıştı -a, -ovb ve ben aynı hatayı alıyorum. Çalışmıyor bile time --version( --version: command not found).

Bana adamı okumamı söyleme, çünkü zaten çok defa yapıyorum ... Tüm bu seçenekler burada belirtildi. Peki sorun nerede olabilir?


Yardımcı sudo apt-get install --reinstall timeolur mu?
Jobin

9
Ya da belki iç kabuk timeile/usr/bin/time
Rmano

Yanıtlar:


91

Hoşuna gitmese bile, seni daha fazla dikkatle okumanı rica edeceğim man time. Bölümün sonunda EXAMPLESbulacaksınız:

  Users of the bash shell need to use an explicit path in order to run
  the external time command and not the shell builtin variant.  On system
  where time is installed in /usr/bin, the first example would become
       /usr/bin/time wc /etc/hosts

Bu yüzden, timeshell anahtar kelimesi olarak verilen dahili bir sürümünü kullanan bash kabuğunu kullandığınızı farz ediyorum . Bunu aşağıdaki komutu kullanarak kontrol edebilirsiniz:

type time

ve çıktı muhtemelen olacak:

time is a shell keyword

Bu durumda, daha sonra kullanmak için, açıktır gerçek time onun açık yolunu kullanmak şunları yapmalısınız komutu: /usr/bin/time.

Artık kabuk anahtar kelimesini kullanmayı istemiyorsanız Ayrıca, timeşunları yapabilirsiniz kalıcı takma adı oluşturun aşağıdaki gibi:

alias time='/usr/bin/time'

Bu timekomut, çünkü kabuk anahtar kelimenin üzerine yazacaktır :

type time

şimdi aşağıdaki çıktıyı verecek:

time is aliased to `/usr/bin/time'

5
Kabuk komutları için: {info time} ve {type time}. İkili komutlar için: {hangi zaman} ve {adam zaman}
Michael Martinez

@Michael info timeikili hakkında. help timeyerleşik hakkında.
wjandrea

evet, üzgünüm "yardım" düşünüyordum ama çıktı "bilgi" geldi
Michael Martinez

21

Diğer cevapların açıkladığı gibi time, bir kabuk anahtar kelime olduğundan, kullanabileceğiniz tek seçenek -p:

terdon@oregano ~ $ help time
time: time [-p] pipeline
    Report time consumed by pipeline's execution.

Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.

Options:
  -p    print the timing summary in the portable Posix format

Yani, çalıştırmak için gereken timeo öyle /usr/bin. İşte bunu yapmanın birkaç yolu:

  • Kullanım timeyerine yürütülebilir:

    /usr/bin/time -f %Uuser ls >/dev/null
  • \Kabuğunuzun takma adları ve anahtar kelimeleri yok saymasına neden olan kullanımı kullanın ve bunun yerine $PATHeşleşen bir yürütülebilir dosyayı arayın :

    \time -f %Uuser ls >/dev/null 
  • commandBenzer bir etkiye sahip yerleşik kullanın :

    command time -f %Uuser ls >/dev/null
  • Böyle bir anahtar kelimeye sahip olmayan farklı bir kabuk kullanın. Örneğin sh(gerçekte dashUbuntu'da):

    sh -c "time -f %Uuser ls >/dev/null"
  • whichSizin aracılığınızı arayacak olan kullanın $PATH(Tamam, bu çok saçma):

    $(which time) -f %Uuser ls >/dev/null

Ters - çoğalt yerleşik yerleşik timedüzenli yapmanın bir yolu var mı /usr/bin/time? Bash betiğini tireye çevirmek.
Dan M.

@DanM. Anlamadım Yerleşeni istiyorsan timekaç time. Bağımsız çalıştırılabilir istiyorsanız, çalıştırın /usr/bin/time.
terdon

timeBildiğim kadarıyla Ubuntu'nun varsayılan kabuğunda yerleşik bir yer yok . Yerleşik kullanarak aynı betiği kullanarak bağımsız bir betiği tercüme etmek istiyorum.
Dan M.

@DanM. o zaman sadece kullan time. Hangisi uygunsa onu arayacaktır. Bu bash için yerleşik ve tire için bağımsız olacaktır. Eğer kullanırsanız /usr/bin/time, o zaman her zaman bash ve çizgi hem de tek başına arayacak. Ama muhtemelen ihtiyacınız olan davranışı açıklayan yeni bir soru sormalısınız. Yaparsan bana haber ver, yardım etmeye çalışayım.
terdon

evet, fakat yerleşik ve bağımsız, oldukça farklı sözdizimi / anlambilim var. Neyse, teşekkürler. Bununla nasıl başa çıkacağımı bulamazsam yeni bir soru soracağım.
Dan M.

17

bashVe zshkabukları kendi iç sahip timekomutu. Kullanmak zorundasın

/usr/bin/time -f ...

Btw, keşfettim ki (kullanarak zsh):

~% which  time
time: shell reserved word
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.