如何在终端的下一行输入内容?


16

我正在使用Ubuntu 12.10,并希望在终端中运行一组命令,根据我在说明中看到的内容,这些命令每个都从新行开始。我不知道如何在终端中执行此操作。我找不到按什么键可以执行回车键返回到下一行。


4
您可以使用分号“;”来分隔命令,例如cd home;。mkdir测试;ls -la
LnxSlck

9
@LnxSlck:不过,通常最好用&&而不是来分隔命令;。这样,如果其中一个命令失败,则其余命令将不会运行。因此,以您的示例为例,如果hometest目录不存在,则不会在当前目录中意外创建目录。
hammar

Answers:


16

您在每一行中看到的命令将一个接一个地执行。

因此,在输入一行后,按Enter键即可执行,然后执行下一条命令。

例:

sudo apt-get update
sudo apt-get upgrade

这是两个要一一执行的命令。

立即执行就像sudo apt-get update && sudo apt-get upgrade(还有其他方法)执行,但是通常不需要这些东西。所以不用担心 键入一行,然后按Enter键即可完成。


非常感谢您的建议,我希望我早点知道!!!尽管如此,我们仍然生活和学习:-)
Debbie Poole

4
@ user113090如果Web-E回答了您的问题,请不要忘记将其答案标记为已接受的答案。
院长

12

正如Web-E解释用两个不同的命令执行所需操作的最直接的方法一样,我想我会表明有很多方法可以执行多个命令或将命令继续执行到另一行而无需立即执行它们。

继续执行长命令:

1)构造一个长命令的最常见方法是输入命令,然后使用反斜杠\,按回车键,然后Bash会为您提供另一种提示,而不是执行命令。该辅助提示称为PS2,它等待您的输入:

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

只要您认为整体命令有意义,就可以继续添加反斜杠并按回车键。

您可以使用通常的Ctrl+ 取消此辅助提示C

2)Bash可以识别一些命令,例如for循环(for i in ....),并且提示将立即出现;就像您错过命令中的引号一样:

apt-cache search 'libgimp*
> 

多个命令

3)如Lxnslck所述,您可以使用分号分隔命令:

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)或者,您可以使用&符&&连接两个命令:

./configure && make

4

您可以在每行之后按ENTER键,如果命令没有终止(for例如,像循环这样的通用命令),终端将等待您输入其余命令。如果命令被终止,它将被执行,然后您输入下一个命令,没问题。

如果要从教程中复制命令,则可以复制整个命令组并将其直接粘贴到终端中,这样就可以了。


1

如果您希望使用一组以上的命令多次,则应将它们放到bash中 脚本文件中。例如,

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

您再也不想键入什么了,但是我碰巧经常需要这种特殊的命令序列。因此它存在于一个名为的文件中1280x980-2head.sh,您可以使用任意选择的编辑器来创建该文件。为了使该脚本可执行,您将代码行放置在#!/bin/bash所有内容的前面(shebang),然后设置执行权限:chmod +x 1280x980-2head.sh。然后,只需键入./128<tab>(自动完成)并<enter>执行所有命令。


0

您可以将所有内容放在方括号中;例如:

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

这些命令将在子外壳中一个接一个地执行。

如果您不希望它们在子外壳程序中执行,则可以在命令和另一个命令之间放置一个分号。例如:

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

相反,如果在每个命令之间放置“ &&”,则在上一个命令没有错误完成的情况下,执行“ &&”之后的命令,因此您不必使用它来串联命令。请改用分号。相反,如果输入“ ||”,则仅当第一个错误退出时才执行以下命令。示例:(“哪个”命令检查程序是否存在,以及是否不因错误退出)

which apt-get && echo "No error" || echo "Error"    # Will print "No error"
which jdhdsd && echo "No error" || echo "Error"  # Will print "Error"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.