Assignment Help logo
Trò Chuyện Trực Tuyến

Loading...

Score %0 (0 correct0 incorrect20 unanswered)

Câu hỏi 1. Trong ba phương pháp sau, phương pháp nào sẽ sao chép thư mục có tên "photo dir" theo cách đệ quy từ thư mục home của người dùng đến /backups?

cp -R "~/photo dir" /backups #method1
cp -R ~"/photo dir" /backups #method2
cp -R ~/"photo dir" /backups #method3
  • Không có phương pháp nào sẽ mở rộng đến thư mục home của người dùng. Chỉ sử dụng "$HOME/photo dir" sẽ thành công.
  • Chỉ phương pháp 1 sẽ mở rộng "~/" đến thư mục home của người dùng và sau đó thêm vào tên thư mục được trích dẫn bao gồm một khoảng trống.
  • Chỉ phương pháp 2 sẽ mở rộng "~/" đến thư mục home của người dùng và sau đó thêm vào tên thư mục được trích dẫn bao gồm một khoảng trống.
  • Chỉ phương pháp 3 sẽ mở rộng "~/" đến thư mục home của người dùng và sau đó thêm vào tên thư mục được trích dẫn bao gồm một khoảng trống.

Câu hỏi 2. Nếu script.sh được chạy trong thư mục hiện tại, nó sẽ thất bại. Tại sao?

$ ls -1
Beach photo1.jpg
Photo1.jpg
Photo2.jpg
Script.sh

$ cat script.sh
for i in $(ls *.jpg); do
	mv $i ${i}.bak
done
  • ls: không thể truy cập nonexistentfile: Không có tệp hoặc thư mục nào.
  • Vòng lặp for sẽ tách biệt theo các ranh giới từ và Beach photo1.jpg có một khoảng trống trong đó.
  • Lệnh mv sẽ thất bại vì dấu ngoặc nhọn là một ký tự đặc biệt trong Bash và không thể được sử dụng trong tên tệp.
  • Chạy script.sh sẽ thành công vì lệnh ls tạo ra một danh sách các tệp trong thư mục hiện tại và vòng lặp for lặp qua danh sách đó đổi tên các tệp có phần mở rộng .bak.

Câu hỏi 3. Để chạy một lệnh sao chép trong một shell phụ, bạn sẽ sử dụng cú pháp nào?

  • ( command )
  • sh command
  • { command; }
  • (( command ))

tham khảo. Các shell phụ là một cách để người lập trình chụp (thường với ý định xử lý) đầu ra từ một chương trình hoặc tập lệnh. Các lệnh được chạy trong shell phụ được bao bọc bên trong cặp dấu ngoặc đơn và tiền bởi một ký tự đô la: DIRCONTENTS=$(ls -l) echo ${DIRCONTENTS}

Câu hỏi 4. Sử dụng "awk", đầu ra của chuỗi lệnh này sẽ là gì?

echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
  • 6
  • 123
  • 3
  • 600

tham khảo. AWK là một ngôn ngữ lập trình được thiết kế để xử lý dữ liệu dựa trên văn bản, entweder trong các tệp hoặc luồng dữ liệu, hoặc sử dụng ống dẫn shell. Nói cách khác, bạn có thể kết hợp awk với các tập lệnh shell hoặc sử dụng trực tiếp tại một dấu nhắc shell.

Câu hỏi 5. Lệnh dưới đây sẽ tìm kiếm hệ thống tệp gốc để tìm các tệp có tên "finance.db". Trong ngữ cảnh này, thông tin gì được gửi đến /dev/null?

find / -name "finance.db" 1>results.txt 2>/dev/null
  • Tên của các tệp không khớp với finance.db
  • Thông tin được gửi đến lỗi tiêu chuẩn-ví dụ, các lỗi mà lệnh find hiển thị khi chạy
  • Tên của các tệp khớp với finance.db
  • Thông tin được gửi đến đầu ra tiêu chuẩn-đó là đường dẫn đến các tệp lệnh find đã định vị

tham khảo. Cú pháp để chuyển hướng stderr (lỗi tiêu chuẩn) vào một tệp: command 2> errors.txt.

Câu hỏi 6. Để loại bỏ các dòng trống từ vĩnh viễn từ một tệp gọi là textfile, bạn có thể sử dụng lệnh nào?

  • sed -i '/^$/d' textfile
  • sed '/^$/d' textfile
  • cat textfile | sed '/^$/d
  • sed -i 's/^$//' textfile

tham khảo
sed : sed là một trình chỉnh sửa luồng. Một trình chỉnh sửa luồng được sử dụng để thực hiện các biến đổi văn bản cơ bản trên một luồng đầu vào.
-i[SUFFIX] : Tùy chọn này chỉ định rằng các tệp sẽ được chỉnh sửa tại chỗ.
'/^$/d' : regex được đặt trong //. ^ là đầu dòng, $ là cuối dòng. ^$ có nghĩa là bắt đầu và kết thúc không có gì ở giữa.
d : Xóa không gian mẫu; ngay lập tức bắt đầu chu kỳ kế tiếp.
Cảnh báo, ví dụ trên sẽ không hoạt động trên terminal của mac vì các hương UNIX khác nhau. Có một cách để làm cho nó hoạt động trên một cờ mac bổ sung -e, hoặc thậm chí chỉ là -- (được tìm thấy trên StackOverflow): sed -i -e '/^$/d' textfile.txt

Câu hỏi 7. Giả sử user1 tồn tại, kết quả của chuỗi lệnh này sẽ là gì?

awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
  • Nó sẽ hiển thị tên người dùng, UID và thư mục home của user1 được phân tách bằng dấu hai chấm.
  • Nó sẽ in ra UID, GID và thư mục home của user1 được phân tách bằng dấu gạch ngang.
  • Nó sẽ in ra UID, bình luận và thư mục home của user1 được phân tách bằng dấu gạch ngang.
  • Nó sẽ hiển thị tên người dùng, UID và thư mục home của user1 được phân tách bằng dấu gạch ngang.

tham khảo. Truyền thống, tệp /etc/passwd được sử dụng để theo dõi mọi người dùng đã đăng ký có quyền truy cập vào một hệ thống. Tệp /etc/passwd là một tệp được phân tách bằng dấu hai chấm chứa các thông tin sau đây: 1-Tên người dùng, 2-Mật khẩu, 3-User ID (UID), 4-Group ID (GID), 5-Thông tin ID người dùng (GECOS), 6-Thư mục home, 7-Lệnh/shell

Câu hỏi 8. Điều gì sẽ xảy ra nếu bạn sử dụng "set -e" trong một kịch bản Bash?

  • Nó sẽ khiến Bash thoát nếu một hàm hoặc shell con trả về mã trạng thái khác không bằng không.
  • Nó sẽ khiến Bash thoát nếu một điều kiện trả về mã trạng thái không bằng không.
  • Nó sẽ khiến Bash thoát nếu các phân bổ local, declare hoặc typeset trả về mã trạng thái khác không bằng không.
  • Nó sẽ khiến Bash thoát nếu một lệnh, danh sách các lệnh, lệnh hợp thành hoặc có thể là một ống dẫn trả về mã trạng thái khác không bằng không.

tham khảo. Tùy chọn set -e chỉ dẫn bash thoát ngay lập tức nếu bất kỳ lệnh [1] nào có mã thoát khác không. Bạn không muốn đặt điều này cho shell dòng lệnh của bạn, nhưng trong một tập lệnh nó rất hữu ích. Trong tất cả các ngôn ngữ lập trình được sử dụng rộng rãi, một lỗi runtime không được xử lý - dù đó là một ngoại lệ được ném trong Java, hoặc một lỗi phân đoạn trong C, hoặc một lỗi cú pháp trong Python - sẽ ngay lập tức dừng thực thi của chương trình; các dòng tiếp theo không được thực thi.

Câu hỏi 9. Từ khóa _ tạm dừng kịch bản để nhận đầu vào từ đầu vào tiêu chuẩn.

  • get
  • argument
  • read
  • input

Câu hỏi 10. Nếu tệp file.sql chứa các câu lệnh SQL để được thực thi, điều gì sẽ xuất hiện trong file.txt?

mysql < file.sql > file.txt
  • Một bản sao của nội dung của file.sql
  • Một lỗi chỉ ra rằng cú pháp này không hợp lệ
  • Đầu ra lỗi của lệnh MySQL
  • Đầu ra không phải là lỗi của lệnh MySQL

Lưu ý: Kiểm tra câu hỏi dưới đây để xem biến thể.

Câu hỏi 11. Sự khác biệt giữa đầu ra trên màn hình và nội dung của out.txt sẽ là gì

mysql < file.sql > out.txt
  • Đầu ra trên màn hình sẽ giống như out.txt
  • Không có đầu ra trên màn hình vì nó được chuyển hướng đến out.txt.
  • Đầu ra trên màn hình sẽ giống như out.txt cộng thêm số dòng.
  • Tệp out.txt sẽ giữ STDERR và STDOUT sẽ đi đến màn hình.

Lưu ý: Kiểm tra câu hỏi phía trên để xem biến thể.

Câu hỏi 12. SUID hoặc setuid làm thế nào ảnh hưởng đến các lệnh có thể thực thi?

  • Khi lệnh tạo ra các tệp, chúng sẽ thuộc sở hữu của chủ sở hữu nhóm của lệnh.
  • Bit SUID cho phép bất kỳ ai cũng có thể thực thi lệnh bất kể quyền truy cập khác được thiết lập.
  • Khi lệnh được thực thi, đặc quyền chạy của nó nâng cao lên chủ sở hữu người dùng của lệnh.
  • Khi lệnh được thực thi, đặc quyền chạy của nó nâng cao lên chủ sở hữu nhóm của lệnh.

tham khảo. Cờ truy cập Linux và Unix setuid và setgid (viết tắt của set user identity và set group identity) [1] cho phép người dùng chạy một lệnh thực thi với quyền hệ thống tệp của chủ sở hữu hoặc nhóm của lệnh tương ứng và thay đổi hành vi trong thư mục.

Câu hỏi 13. Để trích xuất văn bản từ cột đầu tiên của tệp gọi là textfile, bạn sẽ sử dụng lệnh nào?

  • cat {$1,textfile}
  • cat textfile | awk [print $1]
  • cat textfile | awk '{print $1}'
  • awk textfile {print $1}

Câu hỏi 14. Phím tắt bàn phím nào được sử dụng để gọi lên tìm kiếm lịch sử Bash như được hiển thị dưới đây?

(reverse-i-search)`':
  • Esc + R
  • Ctrl + H
  • Ctrl + R
  • Alt + R

Lưu ý: Trên Mac nó sẽ hiển thị bck-i-search: thay vì (reverse-i-search).

Câu hỏi 15. Biểu thức số học nào sẽ cho kết quả chính xác nhất?

  • var=$( expr 10 / 8 )
  • (( var= 10 /8 ))
  • var=$(( 10 / 8 ))
  • var=$(echo 'scale=2; 10 / 8' | bc)

tham khảo. Lệnh bc được sử dụng cho máy tính dòng lệnh. Nó tương tự như máy tính cơ bản bằng cách sử dụng nó, chúng ta có thể thực hiện các phép tính toán cơ bản. Phép chia với 2 chữ số chính xác sẽ được chuyển đến bc, được đánh giá và gán cho biến.

Câu hỏi 16. Kết quả của kịch bản này sẽ là gì?

txt=Penguins
[[ $txt =~ [a-z]{8} ]]; echo $?
  • 0, đại diện cho 'true', vì biến "txt" chứa tám chữ cái
  • 0, đại diện cho 'true', vì mọi người đều thích chim cánh cụt!
  • 1, đại diện cho 'false', vì biến "txt" dài hơn tám ký tự
  • 1, đại diện cho 'false', vì biến "txt" không chứa tám chữ cái thường giữa a và z

Câu hỏi 17. Bạn sẽ làm thế nào để thay đổi dấu nhắc shell Bash của mình thành sau đây?

HAL>
  • SHELL="HAL\>"
  • SHELL="HAL>"
  • export PS1="HAL>"
  • PS1="HAL\>"

Câu hỏi 18. Đầu ra của mã này sẽ là gì?

  • /website.com/html/
  • /html/website.com/html/
  • /var/www/html/website.com/
  • Không có gì sẽ được phản ánh trên màn hình.

tham khảo Điều gì đang xảy ra ở đây là trích dẫn đặc điểm của POSIX shell: ${parameter#[word]}. Loại bỏ Mẫu Tiền Tố Nhỏ Nhất. Từ khóa sẽ được mở rộng để tạo ra một mẫu. Mở rộng tham số sau đó sẽ dẫn đến tham số, với phần tiền tố nhỏ nhất khớp với mẫu đã bị xóa.
Ví dụ ${VAR#?} mở rộng thành giá trị của $VAR với ký tự đầu tiên bị xóa. Và ${VAR#\*/html} mở rộng để bao gồm tất cả các ký tự đến và bao gồm văn bản /html sẽ bị xóa khỏi biến tạo ra đầu ra của /website.com/html/

Câu hỏi 19. Nếu được nhắc nhập văn bản tại đầu vào tiêu chuẩn, bạn có thể cho biết lệnh bạn đã hoàn thành nhập văn bản với tổ hợp phím nào?

  • Ctrl + A (Windows) hoặc Command + A (Mac)
  • Ctrl + E (Windows) hoặc Command + E (Mac)
  • Ctrl + Z (Windows) hoặc Command + Z (Mac)
  • Ctrl + D (Windows) hoặc Command + D (Mac)

Câu hỏi 20. Đoạn script này sẽ tạo ra một lặp vô hạn. Làm thế nào để thoát ra khỏi nó?

  • Nhấn Ctrl + C
  • Nhấn Ctrl + D
  • Nhấn Ctrl + Z
  • Nhấn Ctrl + Z sau đó nhập kill %1 để kết thúc lệnh đang chạy.