Harici komut yerine bash'de yerleşik “time” komutunu kullanma


12

Komutla çalışırken , harici GNU zaman komutundan ziyade timeyerleşik olanı kullanmam gereken bir durumla karşılaştım . Peki, bunu nasıl yapabilirim? Ben kullanarak ve / veya yardımcı olacağını bir yerde gördüm , ama etmedi.time/usr/bin/timeenablecommand

Bu bir kullanım örneğidir:

watch "time ls"

hangi harici /usr/bin/timekomut kullanır, ben istemiyorum! Bu , böyle bir terminalde timeçalıştırdığımda dahili bash işlevini çağırdığında gerçekleşir time ls:

$ time ls

Tam tersi talebin burada yanıtlandığını lütfen unutmayın:

İki komutla çok fazla fark var. Dahili timedaha kesin (ki ben istiyorum), ama harici komut daha fazla seçenek var (ki ihtiyacım yok).


watch 'bash -c "builtin time ls"'belki?
glenn jackman

1
bkz burada yerleşiklerini kullanmaya bash zorlamak için nasıl Petr Utzl tarafından answer2 bkz: builtin timehile yapmak gerekir.
Fiximan

2
@Fiximan, timeyerleşik değildir bash, dilin ayrılmış bir kelimesidir, böylece boru hatlarını (gibi time foo | bar) veya bileşik komutları (gibi time for i in...;done)
zamanlayabilirsiniz

Yanıtlar:


13

Varsayılan olarak, watchkomutunuzu , çalıştığınız /bin/sh -c '...'çıktının komutu nasıl /bin/shyorumlayacağı şekilde çalıştırır time. Sizin /bin/shgörünüşte bir yerleşiğini yoktur time.

Komutu farklı bir kabukla çalıştırmak için -x, varsayılandan kurtulma seçeneğini kullanın, ardından yerleşimini istediğiniz kabuğa ait kendi açık çağrınızı ekleyin.

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

Nasıl çalıştırırsanız watchçalışın, izlediğiniz watchkomut, komutu çalıştıran kabuğun bir alt öğesi değildir , bu nedenle kabuğun ayarları doğrudan alakalı değildir.

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.