50 câu hỏi phỏng vấn về Shell Scripting hàng đầu & Câu trả lời

Anonim

tải PDF

1: Vỏ là gì?

Shell là một giao diện giữa người dùng và hạt nhân. Mặc dù có thể chỉ có một nhân; một hệ thống có thể có nhiều shell chạy đồng thời. Vì vậy, bất cứ khi nào người dùng nhập một lệnh thông qua bàn phím, shell sẽ giao tiếp với hạt nhân để thực thi nó và sau đó hiển thị kết quả đầu ra cho người dùng.

2: Các loại shell thường được sử dụng khác nhau trên một hệ thống Linux điển hình là gì?

csh, ksh, bash, Bourne. Loại shell tiên tiến và được sử dụng phổ biến nhất hiện nay là "Bash".

3: Điều gì tương đương với một phím tắt tệp mà chúng ta có một cửa sổ trên hệ thống Linux?

Các phím tắt được tạo bằng cách sử dụng "liên kết" trên Linux. Có hai loại liên kết có thể được sử dụng là "liên kết mềm" và "liên kết cứng".

4: Sự khác nhau giữa liên kết mềm và liên kết cứng là gì?

Các liên kết mềm là liên kết đến tên tệp và cũng có thể nằm trên các mục tệp khác nhau; tuy nhiên, các liên kết cứng là liên kết đến inode của tệp và phải nằm trên cùng một mục tệp như của tệp. Xóa tệp gốc làm cho liên kết mềm không hoạt động (liên kết bị hỏng) nhưng không ảnh hưởng đến liên kết cứng (Liên kết cứng sẽ vẫn truy cập bản sao của tệp)

5: Bạn sẽ truyền và truy cập các đối số vào một tập lệnh trong Linux như thế nào?

Các đối số có thể được chuyển thành:

scriptName "Arg1" "Arg2"

…. "Argn" và có thể được truy cập bên trong tập lệnh dưới dạng $ 1, $ 2… $ n

6: Ý nghĩa của $ # là gì?

$ # hiển thị số lượng các đối số được truyền vào tập lệnh.

7: Sự khác biệt giữa $ * và $ @ là gì?

$ @ coi mỗi đối số được trích dẫn là các đối số riêng biệt nhưng $ * sẽ coi toàn bộ tập hợp các tham số vị trí là một chuỗi duy nhất.

8: Sử dụng lệnh sed để thay thế nội dung của tệp (giả lập lệnh tac)

Ví dụ:

if cat filleABCDEFGH

Khi đó O / p nên

EFGHABCD

sed '1! G; h;$!d' file1

Ở đây lệnh G gắn vào không gian mẫu,

lệnh h sao chép bộ đệm mẫu để giữ bộ đệm

và lệnh d xóa không gian mẫu hiện tại.

9: Cho một tệp, thay thế tất cả sự xuất hiện của từ "ABC" bằng "DEF" từ dòng thứ 5 cho đến cuối chỉ trong những dòng có chứa từ "MNO"

sed -n '5,$p' file1|sed '/MNO/s/ABC/DEF/'

10: Cho một tệp, viết một chuỗi lệnh để tìm số đếm của mỗi từ.

tr -s "(backslash)040" 

"(dấu gạch chéo ngược) 011" tương đương với hệ bát phân của "ký tự tab" và

"(dấu gạch chéo ngược) 012" là một ký tự bát phân tương đương với ký tự dòng mới.

11: Làm thế nào bạn sẽ tìm thấy dòng thứ 99 của một tệp chỉ sử dụng lệnh tail và head?

tail +99 file1 | head -1

12: In dòng thứ 10 mà không sử dụng lệnh tail và head.

sed -n '10p' file1

13: Trong bash shell của tôi, tôi muốn lời nhắc của tôi có định dạng '$ "Thư mục làm việc hiện tại": "tên máy"> và tải tệp chứa danh sách các chức năng do người dùng xác định ngay khi tôi đăng nhập, bạn sẽ tự động điều này như thế nào ?

Trong bash shell, chúng ta có thể tạo tệp ".profile" tự động được gọi ngay khi tôi đăng nhập và viết cú pháp sau vào đó.

export PS1='$ `pwd`:`hostname`>' .File1

Ở đây File1 là tệp chứa các hàm do người dùng định nghĩa và "." gọi tệp này trong trình bao hiện tại.

14: Giải thích về bit quyền "s" trong tệp?

bit "s" được gọi là bit "đặt id người dùng" (SUID).

bit "s" trên một tệp khiến quá trình có các đặc quyền của chủ sở hữu tệp trong phiên bản của chương trình.

Ví dụ: việc thực thi lệnh "passwd" để thay đổi mật khẩu hiện tại khiến người dùng ghi mật khẩu mới của mình vào tệp bóng mặc dù nó có "root" là chủ sở hữu của nó.

15: Tôi muốn tạo một thư mục để mọi người trong nhóm có thể tạo tệp và truy cập tệp của bất kỳ người nào trong đó nhưng không ai có thể xóa tệp ngoài tệp do chính mình tạo.

Chúng ta có thể tạo thư mục cấp quyền truy cập đọc và thực thi cho mọi người trong nhóm và đặt bit dính "t" của nó như sau:

mkdir direc1chmod g+wx direc1chmod +t direc1

16: Làm thế nào bạn có thể biết được hệ thống đã chạy trong bao lâu?

Chúng ta có thể tìm thấy điều này bằng cách sử dụng lệnh "uptime".

17: Làm thế nào để bất kỳ người dùng nào có thể tìm hiểu tất cả thông tin về một người dùng cụ thể như trình bao mặc định, tên ngoài đời thực, thư mục mặc định, thời gian và bao lâu anh ta đã sử dụng hệ thống?

ngón tay "loginName"

… Trong đó loginName là tên đăng nhập của

người dùng có thông tin được mong đợi.

18: Sự khác biệt giữa $$ và $ là gì !?

$$ cung cấp id tiến trình của tiến trình hiện đang thực thi trong khi $! Hiển thị id quy trình của quy trình gần đây đã đi vào nền.

19: Quá trình zombie là gì?

Đây là những tiến trình đã chết nhưng trạng thái thoát vẫn không được tiến trình mẹ chọn. Các quy trình này ngay cả khi không hoạt động vẫn có mục nhập id quy trình của nó trong bảng quy trình.

20: Bạn sẽ sao chép một tập tin từ máy này sang máy khác như thế nào?

Chúng ta có thể sử dụng các tiện ích như "ftp," "scp" hoặc "rsync" để sao chép tệp từ máy này sang máy khác.

Ví dụ: Sử dụng ftp:

Tên máy chủ FTP

> đặt file1

> tạm biệt

Trên các bản sao, tệp file1 từ hệ thống cục bộ đến hệ thống đích có tên máy chủ được chỉ định.

21: Tôi muốn theo dõi một tệp nhật ký cập nhật liên tục, có thể sử dụng lệnh nào để đạt được điều này một cách hiệu quả nhất?

Chúng ta có thể sử dụng tên tệp tail -f. Điều này sẽ khiến chỉ 10 dòng cuối cùng mặc định được hiển thị trên std o / p liên tục hiển thị phần cập nhật của tệp.

22: Tôi muốn kết nối với một máy chủ từ xa và thực hiện một số lệnh, làm cách nào để đạt được điều này?

Chúng ta có thể sử dụng ssh để thực hiện việc này:

tên người dùng ssh @ serverIP -p sshport

Thí dụ

ssh Địa chỉ email này đang được bảo vệ khỏi spam bots. Bạn cần bật Javascript để xem nó. -p 22

Khi lệnh trên được thực thi, bạn sẽ được yêu cầu nhập mật khẩu

23: Tôi có 2 tệp và tôi muốn in các bản ghi chung cho cả hai.

Chúng ta có thể sử dụng lệnh "comm" như sau:

comm -12 file1 file2… 12 sẽ chặn nội dung

độc đáo tới 1 st và 2 nd tập tin tương ứng.

24: Viết script để in 10 phần tử đầu tiên của dãy Fibonacci.

#!/bin/sha=1b=1echo $aecho $bfor I in 1 2 3 4 5 6 7 8doc=ab=$ab=$(($a+$c))echo $bdone

25: Bạn sẽ kết nối với máy chủ cơ sở dữ liệu từ Linux như thế nào?

Chúng ta có thể sử dụng tiện ích isql đi kèm với trình điều khiển máy khách mở như sau:

isql -S serverName -U username -P password

26: 3 luồng tiêu chuẩn trong Linux là gì?

0 - Đầu vào tiêu chuẩn1 - Đầu ra tiêu chuẩn2 - Lỗi tiêu chuẩn

27: Tôi muốn đọc tất cả đầu vào cho lệnh từ tệp1 hướng tất cả đầu ra đến tệp2 và lỗi sang tệp 3, làm cách nào tôi có thể đạt được điều này?

lệnh file2 2> file3

28: Điều gì sẽ xảy ra với quy trình hiện tại của tôi khi tôi thực hiện một lệnh bằng thực thi?

"execute" phủ lên quy trình mới được chia nhỏ trên quy trình hiện tại; vì vậy khi tôi thực hiện lệnh bằng cách sử dụng execute, lệnh sẽ được thực thi trên trình bao hiện tại mà không cần tạo bất kỳ quy trình mới nào.

Ví dụ: Thực thi " execute ls " trên dấu nhắc lệnh sẽ thực thi ls và khi ls thoát, quá trình sẽ tắt

29: Bạn sẽ giả lập wc -l bằng awk như thế nào?

awk 'END {print NR} fileName'

30: Cho một tệp tìm số dòng có chứa từ "ABC".

grep -c "ABC" tệp 1

31: Sự khác biệt giữa grep và egrep?

egrep là Extended grep hỗ trợ các tính năng grep được thêm vào như "+" (1 hoặc nhiều lần xuất hiện của một ký tự trước đó), "?" (0 hoặc 1 lần xuất hiện của một ký tự trước đó) và "|" (kết hợp thay thế)

32: Bạn sẽ in tên đăng nhập của tất cả người dùng trên một hệ thống như thế nào?

/ etc / shadow có tất cả người dùng được liệt kê.

awk -F ':' '{print $1}' /etc/shadow|uniq -u

33: Làm thế nào để thiết lập một mảng trong Linux?

Cú pháp trong ksh:

Set -A arrayname= (element1 element2… element)In bashA=(element1 element2 element3… . elementn)

34: Viết lại cú pháp của vòng lặp "for"

Cú pháp:

for iterator in (elements)doexecute commandsdone

35: Làm thế nào bạn sẽ tìm thấy tổng dung lượng ổ đĩa được sử dụng bởi một người dùng cụ thể?

du -s / home / user1… .Ở đây user1 là người dùng có tổng dung lượng ổ đĩa cần được tìm thấy.

36: Viết cú pháp cho câu điều kiện "if" trong Linux?

Cú pháp

If condition is successfulthenexecute commandselseexecute commandsfi

37: Ý nghĩa của $ là gì?

Lệnh $? cung cấp trạng thái thoát của lệnh cuối cùng đã được thực thi.

38: Làm cách nào để xóa tất cả các dòng trống trong tệp?

sed '[(backslash)011(backslash)040]*$/d' file1

trong đó (dấu gạch chéo ngược) 011 là một số bát phân tương đương với khoảng trắng và

(dấu gạch chéo ngược) 040 là một tương đương với hệ bát phân của tab

39: Làm thế nào tôi sẽ chèn một dòng "ABCDEF" vào mỗi dòng thứ 100 của tệp?

sed '100i \ ABCDEF' tệp1

40: Viết chuỗi lệnh để tìm tất cả các tệp được sửa đổi trong vòng chưa đầy 2 ngày và in ra số lượng bản ghi của mỗi tệp.

tìm thấy . -mtime -2 -exec wc -l {} \;

41: Làm cách nào tôi có thể đặt quyền rwx mặc định cho tất cả người dùng trên mọi tệp được tạo trong trình bao hiện tại?

Chúng ta có thể sử dụng:

umask 777

Điều này sẽ đặt quyền rwx mặc định cho mọi tệp được tạo cho mọi người dùng.

42: Làm thế nào chúng ta có thể tìm thấy tên tiến trình từ id tiến trình của nó?

Chúng ta có thể sử dụng "ps -p ProcessId"

43: Bốn thành phần cơ bản của mọi hệ thống tệp trên Linux là gì?

Bootblock, super block, inode block và Datablock là những thành phần cơ bản của mọi hệ thống tệp trên Linux.

44: Khối khởi động là gì?

Khối này chứa một chương trình nhỏ có tên "Bản ghi khởi động chính" (MBR) tải hạt nhân trong quá trình khởi động hệ thống.

45: Siêu khối là gì?

Siêu khối chứa tất cả thông tin về hệ thống tệp như kích thước của hệ thống tệp, kích thước khối được sử dụng bởi số lượng khối dữ liệu miễn phí của nó và danh sách các inode và khối dữ liệu miễn phí.

46: Khối inode là gì?

Khối này chứa inode cho mọi tệp của hệ thống tệp cùng với tất cả các thuộc tính tệp ngoại trừ tên của nó.

47: Làm cách nào để gửi thư có tệp nén dưới dạng tệp đính kèm?

zip file1.zip file1 | mailx -s "chủ đề" Id ​​email người nhận

Nội dung email

EOF

48: Làm cách nào để tạo bí danh lệnh trong shell?

alias Aliasname = "Lệnh có bí danh sẽ được tạo".

49: Trường quyền "c" và "b" của tệp là gì?

Các trường quyền "c" và "b" thường được liên kết với một tệp thiết bị. Nó chỉ định xem một tệp là một tệp ký tự đặc biệt hay một tệp đặc biệt khối.

50: Công dụng của dây chuyền shebang là gì?

Dòng Shebang ở đầu mỗi script xác định vị trí của engine sẽ được sử dụng để thực thi script.