İnsan 'kabuk yerleşik komutları ve anahtar sözcükleri için nasıl çalışır?


56

Kullandığım manBelirli bir komutla ilgili bilgi almak istediğinizde komutunu her zaman. Ancak bu özel komut bir kabuk yerleşik komutu olduğunda bu bana çok yardımcı olmuyor. Örneğin:

man cd

döner:

No manual entry for cd

Bunu yapmak mümkündür: Benim sorum mantüm kabuk Yerleşik komutlar (benzerleri için de çalışmak cd, alias, historyvb) ve anahtar kelimeler (gibi if, while, [[, {, vb)?


Ve neden echobir yerleşik komuttur ama bir erkek sayfası var?
Parto

5
@AvatarParto echoayrıca içinde bulunan bir sistem komutudur (çalıştırılabilir) /bin. Bunu kullanarak kontrol edebilirsiniz type -a echo. Aynı şey timebelki de diğerleri ile olur .
Radu Rădeanu

Keşfetdin mi info bash?
bbaassssiiee

Her zaman kendi adam sayfalarını yazabilirsin .
Elliott Frisch

Yanıtlar:


66

Seçenekle helpbirlikte kullanıldığında verilen komut, -myerleşik komutlarla ilgili bilgileri sözde manpage biçiminde görüntüleyebilir. Örneğin:

help -m cd | less

cdKomut hakkındaki bilgileri neredeyse tamamen manuel sayfadaki gibi bir biçimde görüntüler .

Bu komuttan başlayarak komutu man, .bashrcdosyanızdaki tek bir fonksiyona aşağıdaki gibi sarabilirsiniz :

man () {
    case "$(type -t -- "$1")" in
    builtin|keyword)
        help -m "$1" | sensible-pager
        ;;
    *)
        command man "$@"
        ;;
    esac
}

Bundan sonra manda tüm kabuk yerleşik komutları ve anahtar sözcükleri için çalışacaktır. Örneğin:

man :

gösterecek:

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

Çok akıllıca bir yaklaşım! +1
phatskat

5
Builtins tarafından maskelenen çalıştırılabilir dosyalar varsa, bölümü belirtebilirsiniz. man timevs.man 1 time
OrangeDog 27.03.2014

1
... unutmayın, bir zshkullanıcıysanız çok şanslı değilsinizdir: bugs.launchpad.net/ubuntu/+source/zsh/+bug/1242108 (man sayfaları yüklü değil)
Rmano

info, help -mneden bugünlerde iyi adam sayfalarına sahip olamıyoruz? Neyse, teşekkürler!
Tor Klingberg

+1 ... güzel! Yr fonksiyonunun davranışı, C / C ++ 'da fonksiyonun aşırı yüklenmesiyle gerçekleşen man typeolaylara benzer. Sadece merakla Ubuntu 14.04.4 ....' de "-a" veya "-t" seçeneklerinin bir tanımını vermez. oradasın!
Cbhihe

28
man bash-builtins

Bu, yerleşik komutlar için, helpeşdeğerinden biraz daha yoğun bir biçimde olsa da, yardım snippet'lerini içerir .


Bilmek güzel! Kılavuzun 7. bölümünden. Bu kılavuz sayfasını şimdiye kadar duymadım. +1, ancak bu cevabı kabul edemem, çünkü tam olarak istediğim bu değildi.
Radu Rădeanu

MacOS Yüksek Sierra'da bu komut basitçe "insan yerleşikleri" dir
Tony Barganski 21:18

13

Bir POSIX sistemini kullanma hakkında el ile sayfalar oluşturabilir ,

sudo apt-get install manpages-posix-dev

Kabuk yerleşimleri için man sayfaları sağlayacaktır.

$ type cd
cd is a shell builtin

Şimdi dene,

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...

3
Bu cevapla birisinin gelmesini bekliyordum. Ancak sorun, bunun yalnızca bazı yerleşikler için işe yaramasıdır - POSIX tarafından belirtilenler .
Radu Rădeanu

3
Bash, POSIX modunda çalıştırılmadıkça kesinlikle POSIX'e uymaz, bu nedenle bu kılavuz sayfaları kapsamlı olmayabilir ve bazı durumlarda, özellikle belirli özelliklerin davranışını açıklarken yanlış olabilir.
Chris Down

@ RaduRădeanu evet kesinlikle haklısınız, bazı yerleşimler için işe yarayacak.
souravc

3

Bu çözüm mükemmel bir şekilde çalışıyor ama biraz şaka gibi çünkü sorunuzu okuduğumda ilk düşündüğüm şey, 'Gerçekten de insanı komut satırından kim kullanıyor? Herkes yalnızca istediği adam sayfasını Google (yalnızca sınırsız kaydırma gibi süslü şeyler elde etmek için almıyor) değil mi? '. Sonra, Google’ın tüm sitelerinin genellikle iki tür komutun da olduğunu fark ettim, bu yüzden neden onları tüm komutlar boyunca tek biçimli bir adam sayfası arayüzü sağlamak için kullanmıyorsunuz? Dolayısıyla, bu eğlence doğdu.

Bu, daha önce hiç aramadığınız tüm girişler için İnternet bağlantısı gerektirir. Ayrıca Ubuntu'nun varsayılan kurulumunda eksik olan bu iki küçük uygulamaya da ihtiyacı var:

 sudo apt-get install tidy html2text

Bunlara kesinlikle ihtiyaç duyulmuyor, ancak biraz daha hoş görünmesine yardımcı oluyorlar. Tidy HTML'yi temizler ve html2text bu html'yi biçimlendirilmiş metin olarak biçimlendirir (bu sitelerin çoğu zaten metin biçiminde olduğundan ve sadece <pre> etiketleriyle sarıldığından genellikle oldukça önemsizdir).

Şimdi yapmanız gereken sonuna bu ekleyin ~/.profile:

function iman() {
    if [ ! -d "/usr/share/iman" ]; then
        sudo mkdir -m a=rwx /usr/share/iman
    fi
    if [ ! -f "/usr/share/iman/$1.html" ]; then
        curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html"; 
    fi
    if [ -f "/usr/share/iman/$1.html" ]; then
        cat "/usr/share/iman/$1.html";
    else
        echo "Entry not found."
    fi
}

Oturumu kapatıp tekrar girdikten sonra şunu yazmanız gerekir:

iman cd

ve için man sayfasını görüntüler cd.

Bu, ağ gereksinimlerimizi en aza indirgemek için bir veri dizini (/ usr / share / iman) kullanır (bu yüzden daha önce bağlantı olmadan bile daha önce bulduğunuz girişler için çalışacaktır; İstediğimiz sistem girişlerinde de buldum). Bunu artık kullanmazsanız, disk alanını kurtarmak için onu kaldırmak isteyeceksiniz.

Umarım, geri kalanı oldukça yalındır.


6
“Kim hala tam anlamıyla adamı komut satırından kullanıyor?” Me! ve bir veri merkezini ziyaret etmesi gereken herkes (internet yok;))
Rinzwind

Alınan nokta, bu daha sonra açık olmanıza yardımcı olmaz.
krowe

6
Muhaliflerin bash komutlarını aramak için nadiren Google'ı kullandığımı düşünüyorum. Klavyeden ayrılmak zorunda kalmadan sadece "man komutunu" yazmak çok daha hızlı.
laurent

alt + tab -> alt + d -> komutu, fare olmadan ve geçerli cli komutunu iptal etmeden ve kaydırma yaparak ve bir tarayıcının size sunduğu milyonlarca başka güzel şeyi kullanarak aynı işlemi gerçekleştirir. Bunun hakkında hiçbir şey bilemeyeceğinize eminim çünkü
alway'iniz

Yerleşiklerin durumunda, imanişleviniz aynı çıktıyı döndürür man bash-builtins.
Radu Rădeanu
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.