Làm cách nào để tìm trợ giúp cho lệnh point `.` in * nix?


21

Tôi cần tìm trợ giúp cho lệnh point, .chẳng hạn như trong . ./my_script.sh(ý tôi là điểm đầu tiên.)

Tôi đã cố gắng tìm một trang người đàn ông bằng cách sử dụng man .man \.. Làm thế nào tôi có thể hiển thị một trang man trong đó nó giải thích việc sử dụng lệnh .?


14
@ C0deDaedalus: Tên chính tắc cho "." là DỪNG ĐẦY ĐỦ. Những gì mọi người gọi nó phụ thuộc vào nơi họ được nuôi dưỡng.
RedGrittyBrick

5
Chỉ cần chạy:help .
kenorb

2
Trong các tài liệu, mặc dù, nó được gọi là dot. Xem thông số kỹ thuật chính thức tại pubs.opengroup.org/onlinepub/009696699/utilities/dot.html
Charles Duffy

11
@jamesqf .là một lệnh, cụ thể là shell dựng sẵn. Trong Bash nó tương đương với source.
wjandrea

4
@jamesqf: .là POSIX, không chỉ bash. Ví dụ, nó cũng trong zsh và ksh.
MSalters

Câu trả lời:


79

Trước hết bạn nên gọi type ., có thể bạn sẽ nhận được một cái gì đó như:

. is a shell builtin

Nội dung là một phần của vỏ của bạn, họ không có trang hướng dẫn riêng. Một số trong số chúng dường như có chúng mặc dù, ví dụ như echolà một nội dung trong Bash nhưng rất có thể có một tệp thực thi riêng như /bin/echotrong hệ thống của bạn và trong trường hợp này man echođề cập đến cái sau . Hai echos này có lẽ không hoàn toàn tương đương.

Shell của bạn có thể cung cấp thông tin về mọi nội dung thông qua helpnội dung; thử help help, help typevà cuối cùng:

help .

Nội dung cũng có thể được liệt kê trong trang hướng dẫn của shell của bạn. Ví dụ (trong Debian) các nội dung Bash của tôi được trình bày trực tiếp man bash, nhưng đối với các nội trang Zsh man zshbảo tôi chạy man zshbuiltins. Trong vỏ nói chung có thể hoặc không thể giải thích các nội dung của chúng.


7
+1 để chỉ điểm .được tích hợp sẵn và Điều này nên được đánh dấu là câu trả lời vì OP yêu cầu how to find help for . in *nix ?.
C0deDaedalus 22/03/18

7
+1 cho việc sử dụng type .để chứng minh rằng một số lệnh là nội hàm.
Roger Lipscombe

1
Trên hầu hết Debian, các nội dung Bash cũng được trích xuất sang bash-builtins(1)trang thủ công, có kích thước thuận tiện hơn.
Toby Speight

Ngoài ra, việc gọi "loại" chỉ hoạt động nếu bạn đang sử dụng trình bao có tích hợp "loại". Nếu bạn tình cờ sử dụng tcsh, "gõ." đưa ra "loại: Lệnh không tìm thấy."
jamesqf 22/03/18

1
Thậm chí . --helphoạt động
Digital Trauma

25

Hãy thử sử dụng man shhoặc man bashhoặc trang man cho bất kỳ shell nào bạn đang sử dụng. (Có lẽ man $SHELL.)

Đây chính thức không được gọi là lệnh "điểm", mà là sourcelệnh. Tìm kiếm từ sourcecó thể hữu ích.

ví dụ: trang bash man (tìm kiếm "mỗi lệnh dựng sẵn") và bạn sẽ nhanh chóng tìm thấy tài liệu.

Để giải thích việc sử dụng, tôi có thể làm điều đó ngay tại đây. Tôi sẽ chỉ coi đây là sourcelệnh, nhận ra rằng nó có thể được viết tắt thành một khoảng thời gian khi bạn đang sử dụng một số shell và với một số shell mà lệnh có thể cần phải có (vì dấu chấm có thể được nhận ra nhưng toàn bộ từ sourcecó thể không được).

Nếu bạn sử dụng sourcelệnh, shell của bạn sẽ đọc từng dòng từ tệp script và cố gắng thực hiện nó. Bạn cần quyền "đọc" trên tập tin. (Không có vấn đề gì nếu bạn có quyền "thực thi".) Nếu bạn sửa đổi một biến, điều đó có xu hướng ảnh hưởng đến trình bao hiện tại của bạn.

Mặt khác, nếu bạn chỉ cố gắng thực thi tệp, thì shell của bạn sẽ yêu cầu hệ điều hành xử lý yêu cầu này. Điều này sẽ yêu cầu quyền "thực thi". (Trên một số hệ thống, như OpenBSD, bạn sẽ không cần quyền "đọc" cho việc này. Trên các hệ thống khác, bao gồm nhiều biến thể Unix, bạn sẽ.) Tệp có thể cần phải bắt đầu bằng một tiêu đề thích hợp (ví dụ #!/bin/sh:) để hoạt động hệ thống nhận ra đây là một tập tin kịch bản. Hệ điều hành sẽ thực thi một bản sao của shell được yêu cầu và báo cho shell đó chạy nội dung của tập lệnh. Nếu môi trường shell được thay đổi (ví dụ, một biến được một giá trị mới, thư mục làm việc được thay đổi (với  cd), một bộ mô tả tập tin được chuyển hướng (với exec), v.v.), nó sẽ chỉ tác động đến lớp vỏ phụ được gọi cho tập lệnh và không thể sửa đổi môi trường trong lớp vỏ được gọi là tệp tập lệnh.


15
Nó chỉ sourcetrong bash. Trong đặc tả POSIX, nó được gọi là "lệnh chấm" (và sourcebí danh không được hỗ trợ).
Charles Duffy

1
Một tập lệnh cần có quyền đọc, nếu không thì trình thông dịch không thể truy cập nó. Xem Tập lệnh có thể thực thi được nhưng không đọc được không?
wjandrea

1
Thực thi một tập lệnh không mở một lớp vỏ con, mà chỉ là một tiến trình con bình thường, giống như chạy một chương trình được biên dịch. Xem câu trả lời này trên "Vỏ phụ có giống với vỏ con không?"
wjandrea

1
Vì vậy, tôi gõ man bashvà sau đó những gì , /.? Không hữu ích lắm. /sourcesẽ hữu ích, nhưng đối với điều đó bạn cần phải biết điều đó .sourcelà điều tương tự.
Joker_vD

1
Tôi thấy đoạn bạn "Đối với việc giải thích việc sử dụng ..." hơi gây hiểu lầm, vì nó ngụ ý rằng nó có thể được .và nó có thể được source, nhưng như @CharlesDuffy đã đề cập, đó là luôn luôn . trong bất kỳ vỏ POSIX-compliant và chỉ có bí danh sourcetrong một vỏ.
Tom Fenech

6

Không ai khác đã đề cập đến nó, vì nó thường bị lãng quên.

Manh mối lớn nhất của bạn sẽ đến từ lệnh hữu ích 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

CHỈNH SỬA:

Một số người đã chỉ ra trong các ý kiến ​​rằng đây không phải là một số lỗi - có thể đó là một gói có thể cài đặt hoặc kích hoạt một số cách - tôi đã mặc định nó trong gentoo;)

Nó bao gồm những điều tuyệt vời - cho bạn biết cái nào có thể thực thi được gọi và nơi cung cấp cho bạn tất cả các đường dẫn đến tên bạn có thể thực thi được và đó là trang man (nếu nó tồn tại trong nhiều đường dẫn).


1
Gợi ý tốt nhưng có vẻ như nó không hoạt động ở khắp mọi nơi. Chẳng hạn, trong AIX với ksh, whatis .trả vềman: 0703-307 . is not found.
aturegano 22/03/18

4
whatis .không trả lại gì trên Ubuntu 16.04
Vadim Kotov

Và ".: Không có gì thích hợp." trên OpenSuSE bằng tcsh.
jamesqf 22/03/18

2
À, từ trang người đàn ông của chính nó: "whatis - hiển thị các mô tả trang thủ công một dòng." Vì vậy, nó dường như là một phiên bản rất ngắn của con người.
Xen2050

Một tùy chọn tương thích hơn có thể là: apropos (nên giống như chạy "man -k"). Cho "." hoặc "nguồn" (là một phần của từ "tài nguyên"), điều này không hoạt động quá tốt, do có quá nhiều thông tin sai, nhưng có thể sẽ hoạt động cho các ví dụ khác của bạn (bash, lynx và whatis). Trên Debian Linux: " whatis ." đã cho " .: nothing appropriate." trên OpenBSD, kết quả là 47 dòng đầu ra. Đối với ví dụ cụ thể này (sử dụng " whatis ." trong Gentoo), kết quả có thể rất tốt (có nghĩa là kỹ thuật này thường không hữu ích cho nhiều tình huống ví dụ khác).
TUYỆT VỜI 25/03/18

4

man source sẽ hiển thị lời giải thích mà bạn cần.

Dấu chấm giống như lệnh nguồn.

source thực thi tập lệnh trong trình bao hiện tại thay vì trong một lớp con (đó là cách thông thường).

Sử dụng sourcecác biến được đặt bên trong tập lệnh được giữ nguyên sau khi tập lệnh kết thúc.


2
Trong những gì distro (s) không man sourcehoạt động? Không có trong Debian của tôi, do đó, câu hỏi.
Kamil Maciorowski

1
Nó hoạt động trong CentOS 6.5. Tôi đoán có liên quan nhiều hơn đến phiên bản bash. Trong trường hợp của tôi là 4.1.2 (1)
jcbermu

@jcbermu, không có phiên bản bash nào gửi một trang riêng cho sourcethượng nguồn - đó có thể là điều mà CentOS đã làm.
Charles Duffy

Trên hệ thống của tôi, man sourcecung cấp cho bạn man bash_builtins, điều này không giải thích bất cứ điều gì, nhưng đề cập đến bạnbash(1)
Scott

1
Trên hệ thống của tôi (Ubuntu LTS) man sourcecung cấp cho tôi source(3tcl)... type commandvà sau đó nếu lệnh được tích help commandhợp có lẽ là cách thích hợp ...
Hastur

0

Đây .là một từ đồng nghĩa với sourcelệnh shell và vì vậy trong bash , cú pháp của nó được hiển thị bởi ...

help source

Nó hoạt động chính xác như các lệnh includeimporttrong các ngôn ngữ khác ở chỗ nó đọc tệp đích và diễn giải nó như thể nó là một phần của tập lệnh hiện tại. Do đó, tập tin đó sẽ thực thi toàn bộ trước các lệnh trong phần còn lại của tập lệnh hiện tại.

Nó thường ở đầu tập lệnh hiện tại và thường được sử dụng để tải các biến và / hoặc định nghĩa hàm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.