`N` point komutu için nasıl yardım bulabilirim?


21

Aşağıdaki .gibi komut komutu için yardım bulmam gerekiyor . ./my_script.sh(ilk noktayı kastediyorum.)

Zaten man .ve kullanarak bir adam sayfası bulmaya çalıştım man \.. Komut kullanımını açıklayan bir man sayfasını nasıl görüntüleyebilirim .?


14
@ C0deDaedalus: "." İçin kurallı ad . TAM DURDUR. İnsanların buna ne dediği, nerede büyüdüklerine bağlı.
RedGrittyBrick

5
Sadece çalıştırın:help .
kenorb

2
Belgelerde olsa da, denir dot. En yaygın özelliklerine bakınız pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html
Charles Duffy

11
@jamesqf ., özellikle de bir kabuk yerleşik komutu olan bir komuttur. Bash'de buna eşdeğerdir source.
wjandrea

4
@jamesqf: .POSIX, sadece bash değil. Örneğin, zsh ve ksh da var.
MSalters

Yanıtlar:


79

Öncelikle çağırmanız type .gereken, muhtemelen şöyle bir şey elde edersiniz:

. is a shell builtin

Yerleşikler kabuğunuzun parçalarıdır, kendi manuel sayfalarına sahip değildir. Bazıları bunlara sahip gibi görünebilir, örneğin echoBash'de bir yerleşiktir, ancak büyük olasılıkla /bin/echosisteminizde olduğu gibi ayrı bir yürütülebilir dosya vardır ve bu durumda ikincisiniman echo ifade eder . Bu iki s muhtemelen kesinlikle eşdeğer değildir.echo

Kabuğunuz yerleşik aracılığıyla herhangi bir yerleşik hakkında bilgi sağlayabilir help; deneyin help help, help typenihayet ve:

help .

Yerleşikler ayrıca kabuğunuzun el kitabında listelenebilir. (Debian'ımda) Bash yapıları doğrudan man bashiçeriye girdi , Zsh yapıları man zshbana kaçmamı söyledi man zshbuiltins. Genel olarak kabukları, yapılarını açıklayabilir veya açıklamayabilir.


7
.Bir kabuk yerleşik olduğunu işaret etmek için +1 ve OP sorduğu için bu cevap olarak işaretlenmelidir how to find help for . in *nix ?.
C0deDaedalus

7
type .Bazı komutların kabuk yerleşikleri olduğunu göstermek için +1 kullanılır .
Roger Lipscombe

1
Debian'ın çoğunda Bash yerleşikleri, bash-builtins(1)daha uygun boyuttaki kılavuz sayfasına da çıkarılır .
Toby Speight

Ayrıca, "type" çağırmak yalnızca "type" yerleşik bir kabuk kullanıyorsanız işe yarar. Tcsh kullanıyorsanız, "yazın". verir "type: Komut bulunamadı."
jamesqf

1
Hatta . --helpçalışır
Dijital Travma

25

Kullandığınız kabuk için man shveya man bashveya man sayfasını kullanmayı deneyin . (Belki man $SHELL.)

Bu resmen "nokta" komutu değil, sourcekomut olarak adlandırılır. Sözcüğü aramak sourceyardımcı olabilir.

örneğin, bash man sayfası ("her yerleşik komut" için arama yapın) ve belgeleri hızlı bir şekilde bulacaksınız.

Kullanımı açıklamak için, tam burada bunu yapabilirim. Bunu sadece sourcekomut olarak kullanacağım, bazı mermiler kullanırken sadece bir döneme kısaltılabileceğini ve bazı mermilerde bu komutun olması gerekebileceğini kabul ediyorum (çünkü nokta algılanabilir, ancak kelimenin tamamı sourceolmayabilir. ) olabilir.

sourceKomutu kullanırsanız, kabuğunuz komut dosyasındaki her satırı okuyacak ve çalıştırmayı deneyecektir. Dosya üzerinde "okuma" izinlerine ihtiyacınız var. ("Yürütme" izinleriniz olup olmadığı önemli değildir.) Bir değişkeni değiştirirseniz, bu geçerli kabuğunuzu etkilemeye meyillidir.

Öte yandan, dosyayı çalıştırmayı denerseniz, kabuğunuz işletim sisteminden bu isteği yerine getirmesini ister. Bu "yürütme" izinleri gerektirecektir. (OpenBSD gibi bazı sistemlerde, bunun için "okuma" izinlerine ihtiyacınız olmayacak. Birçok Unix varyasyonları dahil olmak üzere diğer sistemlerde, bunu yapmanız gerekecek.) Dosyanın çalışması için uygun bir başlıkla başlaması gerekebilir (örn. #!/bin/sh). sistem bunu bir komut dosyası olarak tanır. İşletim sistemi istenen kabuğun bir kopyasını çalıştıracak ve o kabuğa betiğin içeriğini çalıştırmasını söyleyecektir. Eğer kabuk ortamı değiştirilirse (örneğin, bir değişken yeni bir değer alırsa, çalışma dizini değiştirilir (ile  cd), bir dosya tanıtıcısı yönlendirilir (ile exec), vb.) yalnızca komut dosyası için çağrılan alt kabuğu etkiler ve üst kabuktaki ortamı komut dosyası dosyası olarak değiştiremez.


15
Sadece sourcebash cinsinden. POSIX belirtiminde "nokta komutu" (ve sourcediğer adı desteklenmez) olarak adlandırılır.
Charles Duffy

1
Bir betik okuma izinlerine ihtiyaç duyar, aksi takdirde tercüman erişemez. Bkz. Bir komut dosyası çalıştırılabilir olabilir ancak okunabilir değil mi?
wjandrea

1
Bir betiği çalıştırmak bir alt kabuğu açmaz, sadece derlenmiş bir programı çalıştırmak gibi normal bir alt süreci açar. Şu cevaba
wjandrea

1
Yani ben man bashsonra ne yazarım /.? Çok kullanışlı değil. /sourcefaydalı olurdu, ama bunun için bunu bilmen gerekir .ve sourceaynı şeysin.
Joker_vD

1
Ben buna ima beri, biraz yanıltıcı "... kullanımını açıklayan gelince" senin paragraf buldum olabilir olmak .ve belki olabilir source, ama @CharlesDuffy önce de belirtildiği gibi, bu kadar zaman . herhangi POSIX uyumlu kabuğunda ve sadece takma adı sourceiçinde bir kabuk.
Tom Fenech

6

Sık sık unutulduğu gibi hiç kimse bundan bahsetmedi.

En büyük ipucunuz yardımcı emirden gelirdi whatis.

tim@musha ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
tim@musha ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
tim@musha ~ $ whatis linux
linux: nothing appropriate.
tim@musha ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions

DÜZENLE:

Bazı insanlar yorumlarda bunun bazı karışıklıklarda bulunmadığına - belki de kurulabilir bir pakete ya da bazılarına olanak tanıdığına - bazı durumlarda varsayılan olarak gentoo’da bulunduğuma;

Hangi çalıştırılabilirin çağrıldığını söyleyen ve hangisini adlandırdığınız bir çalıştırılabilirin tüm yollarını veren harika olanı (ve eğer birden çok yoldaysa) man sayfaları.


1
İyi ipucu ama her yerde işe yaramaz gibi görünüyor. Örneğin, ksh ile whatis .man: 0703-307 . is not found.
AIX’de

4
whatis .Ubuntu'da hiçbir şey döndürmez 16.04
Vadim Kotov

Ve ".: Uygun bir şey değil." OpenSuSE’te tcsh kullanılarak.
jamesqf

2
Ah, kendi man sayfasından: "whatis - tek satırlık manuel sayfa açıklamaları göster." Bu yüzden insanın çok kısa bir versiyonu gibi görünüyor.
Xen2050

Daha uyumlu bir seçenek olabilir: apropos ("man -k" çalıştırmakla aynı olmalıdır). İçin "." veya "kaynak" ("kaynak" kelimesinin bir parçası olan) bu, çok fazla yanlış pozitif nedeniyle çok iyi çalışmaz, ancak muhtemelen diğer örnekleriniz için de işe yarar (bash, lynx ve whatis). Debian Linux'ta: OpenBSD'de whatis ." " "verdi" .: nothing appropriate., 47 satırlık çıktıyla sonuçlandı. Bu özel örnek için ( whatis .Gentoo'da " " kullanarak ), sonuçlar nadiren iyi olabilir (bu tekniğin genellikle diğer birçok örnek senaryo için bu kadar kullanışlı olmadığı anlamına gelir).
TOOGAM

4

man source İhtiyacınız olan açıklamayı gösterecektir.

Nokta, kaynak komutuyla aynıdır.

source betiği alt kabuk yerine geçerli kabukta çalıştırır (olağan yoldur).

sourceKomut dosyası içinde ayarlanan değişkenlerin kullanılması , komut dosyası tamamlandıktan sonra korunur.


2
Hangi dağıtımlarda man sourceçalışır? Benim Debian'ımda değil, bu yüzden soru.
Kamil Maciorowski

1
CentOS 6.5’te çalışır. Sanırım bash versiyonuyla daha ilgili. Benim durumumda 4.1.2 (1)
jcbermu

jcbermu, bash versiyonunun hiçbiri sourceyukarı akış için ayrı bir adam sayfası göndermiyor - bu, CentOS'un yaptığı bir şey.
Charles Duffy

Benim sistemimde, man sourcesize man bash_builtinshiçbir şey açıklamayan, ama sizi ifade edenbash(1)
Scott

1
Sistemimde (Ubuntu LTS) man sourcebana veriyor source(3tcl)... type commandve sonra eğer komut bir yerleşik help commandise, muhtemelen doğru yoldur ...
Hastur

0

Bu .kabuk sourcekomutu ile eş anlamlıdır ve bu yüzden bash'da , sözdizimi ...

help source

Tam olarak aynı işlevi görür includeve importdiğer dillerdeki komutları hedef dosyayı okur ve geçerli betiğin bir parçasıymış gibi yorumlar. Böylece, bu dosya mevcut betiğin geri kalanındaki komutlardan önce bütünüyle çalışacaktır.

Genellikle mevcut betiğin başında olmalı ve en çok değişkenleri ve / veya işlev tanımlarını yüklemek için kullanılır.

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.