Làm cách nào để nhập dòng tiếp theo trong Terminal?


16

Tôi đang sử dụng Ubuntu 12.10 và muốn chạy một nhóm lệnh trong thiết bị đầu cuối và từ những gì tôi thấy trong hướng dẫn, mỗi lệnh này bắt đầu trên một dòng mới. Tôi không biết làm thế nào để làm điều này trong thiết bị đầu cuối. Tôi không thể tìm thấy phím nào để bấm để thực hiện vận chuyển trở lại dòng tiếp theo.


4
Bạn có thể phân tách các lệnh bằng cách sử dụng dấu chấm phẩy ";", như cd home; thử nghiệm mkdir; ls -la
LnxSlck

9
@LnxSlck: Mặc dù vậy, thường nên tách các lệnh bằng &&thay vì ;. Bằng cách này, nếu một trong các lệnh thất bại, các lệnh còn lại sẽ không được chạy. Vì vậy, bằng cách sử dụng ví dụ của bạn, nếu homekhông tồn tại, bạn sẽ không vô tình tạo một testthư mục trong thư mục hiện tại.
hammar

Câu trả lời:


16

Các lệnh bạn thấy trong mỗi dòng sẽ được thực hiện từng cái một.

Vì vậy, sau khi nhập một dòng, nhấn enter để thực hiện rồi thực hiện lệnh tiếp theo.

Thí dụ:

sudo apt-get update
sudo apt-get upgrade

Đây là hai lệnh được thực hiện từng cái một.

Để thực thi cùng một lúc nó sẽ giống như sudo apt-get update && sudo apt-get upgrade(cũng có các phương thức khác), nhưng những thứ này thường không yêu cầu. Vì vậy, đừng lo lắng. Nhập một dòng và nhấn enter nó sẽ thực hiện công việc của nó.


Cảm ơn bạn rất nhiều vì lời khuyên của bạn ,, tôi ước tôi đã biết điều này sớm hơn !!! Tuy nhiên, chúng tôi vẫn sống và học hỏi :-)
Debbie Poole

4
@ user113090 Nếu Web-E trả lời câu hỏi của bạn, đừng quên đánh dấu câu trả lời của anh ấy là câu trả lời được chấp nhận.
Trưởng khoa

12

Web-E giải thích cách trực tiếp nhất để thực hiện những gì bạn muốn bằng hai lệnh khác nhau, tôi nghĩ rằng tôi đã chỉ ra rằng có một số cách để thực thi nhiều lệnh hoặc tiếp tục lệnh trên một dòng khác mà không thực hiện ngay lập tức.

Tiếp tục các lệnh dài:

1) Cách phổ biến nhất để xây dựng một lệnh dài là nhập các lệnh của bạn, sau đó sử dụng dấu gạch chéo ngược \, nhấn return và sau đó Bash sẽ cung cấp một dấu nhắc khác cho bạn thay vì thực hiện lệnh. Lời nhắc phụ này được gọi là PS2 và chờ đầu vào của bạn:

find /home/mike/Downloads -type f -iname '*.jpg' \
> 

Bạn có thể tiếp tục thêm dấu gạch chéo ngược và nhấn return miễn là bạn muốn, miễn là bạn nghĩ lệnh tổng thể sẽ có ý nghĩa.

Bạn có thể hủy lời nhắc phụ này bằng dấu Ctrl+ thông thường C.

2) Bash nhận ra một số lệnh như vòng lặp (đối với i trong ....) và dấu nhắc sẽ xuất hiện ngay lập tức; giống như nếu bạn bỏ lỡ một dấu ngoặc kép trong một lệnh:

apt-cache search 'libgimp*
> 

Nhiều lệnh :

3) Như Lxnslck ghi chú, bạn có thể tách các lệnh bằng dấu chấm phẩy:

which vlc; whereis vlc

/usr/bin/vlc
vlc: /usr/bin/vlc /etc/vlc /usr/lib/vlc /usr/bin/X11/vlc /usr/share/vlc /usr/share/man/man1/vlc.1.gz

4) Hoặc bạn có thể sử dụng ký hiệu và &&tham gia hai lệnh:

./configure && make

4

Bạn có thể nhấn phím ENTER sau mỗi dòng và nếu lệnh không bị chấm dứt ( forví dụ các lệnh mutiline như vòng lặp), thiết bị đầu cuối sẽ chờ bạn nhập phần còn lại của lệnh. Nếu lệnh bị chấm dứt, nó sẽ được thực thi và bạn nhập lệnh tiếp theo sau, không có vấn đề gì.

Nếu bạn đang sao chép các lệnh từ một hướng dẫn, bạn có thể sao chép toàn bộ nhóm lệnh và dán trực tiếp vào thiết bị đầu cuối và nó sẽ hoạt động.


1

Khi đó là một tập hợp các lệnh bạn muốn sử dụng nhiều lần, bạn nên đặt chúng vào tệp tập lệnh bash . Ví dụ,

xrandr --newmode "1280x960_80.00" 139.25  1280 1368 1504 1728  960 963 967 1008 -hsync +vsync
xrandr --verbose --addmode VGA1 "1280x960_80.00"
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 1280x512 --rotate normal --output DP1 --off --output VGA1 --mode "1280x960_80.00" --pos 0x0 --rotate normal
sleep 3
xfce4-panel -r

không có gì bạn muốn gõ một lần nữa, nhưng tôi tình cờ cần chuỗi lệnh đặc biệt này rất thường xuyên. Vì vậy, nó đi vào một tệp có tên 1280x980-2head.sh, bạn có thể tạo nó với bất kỳ trình soạn thảo nào bạn chọn. Để làm cho tập lệnh đó có thể thực thi được , bạn đặt dòng #!/bin/bashtrước mọi thứ (một shebang ) và đặt quyền thực thi : chmod +x 1280x980-2head.sh. Sau đó, chỉ cần gõ ./128<tab>(tự động hoàn thành) và <enter>thực hiện tất cả các lệnh.


0

Bạn có thể đặt mọi thứ trong ngoặc; ví dụ:

(sudo add-apt-repository ppa:foo/bar
sudo apt-get update
sudo apt-get install my-package)

Các lệnh sẽ được thực hiện lần lượt từng cái trong một vỏ con.

Nếu bạn không muốn chúng được thực thi trong một khung con, bạn có thể đặt dấu chấm phẩy giữa một lệnh và lệnh khác; ví dụ:

sudo add-apt-repository ppa:foo/bar; sudo apt-get update; sudo apt-get install my-package

Thay vào đó, nếu bạn đặt "&&" giữa mỗi lệnh, lệnh đó theo "&&" sẽ được thực hiện chỉ nếu lệnh trước đó đã kết thúc với không có lỗi, vì vậy bạn không cần phải sử dụng nó để lệnh concatenate; sử dụng dấu chấm phẩy thay thế. Ngược lại, nếu bạn đặt "||", lệnh sau sẽ chỉ được thực hiện nếu lệnh đầu tiên thoát có lỗi. Ví dụ: (lệnh "which" kiểm tra xem chương trình có tồn tại không và nếu không thoát có lỗi)

which apt-get && echo "No error" || echo "Error"    # Will print "No error"
which jdhdsd && echo "No error" || echo "Error"  # Will print "Error"
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.