标签 终端 下的文章

在这篇基本命令行教程中,你将学习在 Linux 终端重命名文件和目录的各种方法。

如何在 Linux 终端中重命名文件和目录?你可以使用 mv 命令。

是的,与用于将文件和文件夹从一个位置“移动”到另一个位置的 mv 命令相同。

你可以在“移动文件和目录”时简单地指定文件和目录的新名称。

要重命名文件,请使用:

mv old_file new_file

同样,要重命名目录,请使用:

mv old_dir new_dir

听起来很容易,对吧? 但我将在这里详细讨论文件重命名:

  • 向你展示重命名的实际示例
  • 显示通过结合 findexec 命令批量重命名多个文件的示例
  • 讨论用于批量重命名文件的专用程序

我们来一一看看。

使用 mv 命令重命名文件和目录

使用 mv 命令重命名同一目录中的文件:

mv file1.txt file2.txt

同样,你可以重命名同一位置的目录:

mv dir1 dir2

这是我重命名文件和目录的示例:

如你所见,与 cp 命令 不同,你不必使用递归选项来通过 mv 命令 处理目录。

? 如果你尝试使用相同的名称重命名该文件,你会看到一个错误(显然)。

你还可以在将文件移动到另一个位置时重命名它:

mv old-file-name another_dir/new-file-name

在下面的示例中,我将名为 firefox-quiz.txt 的文件移动到示例目录。在这样做的同时,我将其重命名为 quiz.txt

我将其视为剪切粘贴操作。

? 虽然你可以将多个文件移动到另一个位置(mv file1 file2 file2 dir),但你不能使用 mv 重命名多个文件。为此,你必须采用我在以下部分中讨论的其他策略。

通过组合 mv、find 和 exec 命令重命名与某个模式匹配的多个文件

? 批量重命名此类文件时要格外小心。一步错误的举动就会导致无法挽回的不良结果。

find 命令用于根据文件名、类型、修改时间和其他参数在给定目录中查找文件。exec 命令与 find 结合使用,对 find 命令的结果执行命令。

使用 findexecmv 命令没有固定标准的结构。你可以根据需要组合它们。

假设你想通过在名称中添加 _old 来重命名当前目录中以 .txt 结尾的所有文件。所以 file_1.txt 变成 file_1.txt_old 等等。

find . -type f -name "*.txt" -exec mv {} {}_old ;

这只是一个示例,你的重命名要求可能会有所不同。另外,以上仅适用于不带空格的文件名

专业提示:在处理这样的批量操作时,你可以巧妙地使用 echo 命令来查看将执行什么操作,而不是实际执行它。如果看起来不错,那就采取实际行动吧。

例如,首先查看哪些文件将被重命名:

find . -type f -name "*.txt" -exec echo mv {} {}_old \;

如你所见,实际上没有重命名任何文件。但是,如果你在没有使用回显(echo)命令的情况下运行上述命令,你将看到将执行什么命令。

如果你觉得没问题,请删除 echo 命令并继续进行实际的重命名。

find . -type f -name "*.txt" -exec mv {} {}_old \;

我在 《Efficient Linux 命令行》一书中学到了这个技巧。一本充满了这样的小宝石的优秀书。难怪它已成为 我最喜欢的 Linux 书籍之一。

使用 rename 命令轻松重命名多个文件

有一个名为 rename 的便捷命令行程序,可用于根据给定的 Perl 正则表达式模式批量重命名文件。

该实用程序不是 GNU 工具链的一部分,也不是预安装的。因此,你必须首先使用发行版的包管理器来安装它。

对于 Debian/Ubuntu,命令为:

sudo apt install rename

你可以通过以下方式使用它:

rename [options] perl_regex [files]

选项有:

  • -v : 详细模式
  • -n :无操作,显示将被重命名的文件,但不重命名它们
  • -o : 不覆盖
  • -f : 强制覆盖现有文件
  • -s : 不重命名软链接,只重命名其目标

现在,让我们采用你在上一节中看到的相同示例。将 *.txt 重命名为 .txt_old

rename 's/\.txt$/.txt_old/' **

我不打算在这里解释正则表达式。** 表示查看所有子目录中的所有文件。

正如你所看到的,它按预期工作。

总结

我希望你喜欢这个技巧,它可以帮助你学习在 Linux 命令行中执行基本任务。当然是针对那些想学习和使用命令行的人。桌面用户始终拥有用于此类任务的 GUI 工具。

如果你对 Linux 命令完全陌生,本系列将对你有很大帮助。

终端基础:Linux 终端入门

如果你有疑问或建议,请告诉我。


via: https://itsfoss.com/linux-rename-files-directories/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是 Linux 终端的 VS Code,有可能在年轻一代编程者和 Linux 用户中流行起来。

对于新的终端仿真器的想法,我并不总是怀着兴奋的心情。

这里有 数不清的用于 Linux 的终端软件。从你的 Linux 发行版中自带的默认终端,到古老的经典版——“ 终结者 Terminator ”,或更 “现代化” 的基于 Rust 且支持硬件加速的那种,如 Rio

在这儿,可选择的软件绝对不匮乏。对我来说,为什么我需要关注另一个新的终端软件呢?

然而,当我发现这款新的终端时,我觉得,它有着引人瞩目的潜力。

让我来解释下为何我会这么说。对于一名经验丰富的 Linux 用户,终端只不过是执行工作的一种工具。真正的能量来源于命令以及如何运用它们。在这里,终端仿真器吸引人的一点是支持多窗口,这也可以通过熟练使用 CLI 工具,比如 screentmux 来实现。

然而,对于一部分 Linux 用户,对他们来说,终端就是一个令人畏惧的地方。他们只会在绝对必要时以及再无他法的情况下才会使用它。就好像一个五岁的小孩夜里去洗手间。

然而,对于后者类型的 Linux 用户来说,这个新终端应该会是一个他们觉得舒适的工具。

看完它的特性后,你就会明白原因。

Wave:为那些不习惯使用命令行的人设计的终端

呃... 这似乎就是这些开发者的初衷。

Wave 终端 主要是为了那些需要不时使用终端部署他们的项目或者调试应用的应用开发者们所打造。

现代化的代码编辑器界面

没错,这是一个终端,而不是代码编辑器。其界面设计类似于 VS Code,你可以把终端会话分组到工作区中。如果你的项目需要运行开发服务器、测试服务器和生产服务器,你可以把它们分组到一个工作区。

不用学任何键盘快捷键就能编辑文件

你可以直接编辑本地系统或远程机器上的文件。这里没有学习的难度。像常规的文本编辑器一样直接使用它即可。

可以查看 Markdown,JSON 或图片

你可以渲染 Markdown 的预览,美观地显示 JSON 文件或以表格形式显示 CSV 文件数据。你还可以查看图片。

保持 SSH 连接持久化并保有通用历史

另一个赞赏的功能就是 Wave 可以保持你的 SSH 连接持久化。不用担心因为闲置一个小时而从远程服务器断开连接。即使远程系统重启了,它也会自动为你重新连接。

此外,你还可以得到合并的历史搜索的功能。不记得在哪个终端会话中运行了哪条命令?没关系。Wave 在这方面已经帮你考虑好了。

? 保存并保持 SSH 连接持久化,把它们分组到工作区,并且在图形界面下编辑文件,这些都是一个开发者成为 Wave 终端粉丝的充足理由。

我使用 Wave 终端的经历

在使用它几个小时后,以下是我体验。

当我首次启动它时,我看到了一个弹出窗口。它默认开启了遥测功能,这是一个典型的 VS Code 式的功能。好吧,我把它禁用了。

下一个问题是服务条款。你必须接受它,但这个界面实际上没有提供阅读条款的途径。然而我可以在 他们的网站 上看到它。它是从 Basecamp 的开源政策 中引用过来的。

我不明白这个条款的必要性,因为这个软件在 Apache 2.0 下是开源许可的。这只会让人困惑。

无论如何,这就是第一次运行时的界面。如你所见,界面就像一个现代化的代码编辑器,它内含一个侧边栏可以让你将终端标签分组到工作区中。你可以为每个标签分配名称、图标和颜色。这在你需要连接到多个远程服务器时大有帮助。

在这方面,你还可以像经典的 Putty 那样保存你的 SSH 连接。

这样的话,你可以预设某个标签在启动时就开始特定的 SSH 连接。

对我来说最大的问题(如果这可以被称为“问题”)是输入字段。这只是底部的一个小输入框。你在这输入命令,它显示输出信息,整个输入命令及其输出都被组成一个框,然后移到上方。

我更习惯于经典的终端输入方式,从上开始输入,然后一行行向下移动(然后滚动)。而在这里,却恰恰相反。

看,这是有意为之的。每条命令及其输出都是一个独立的框,一个独立的元素。你可以复制它、最小化它或从视图中将其存档。

切片面包之后的最好东西

Wave 终端最大的目标就是它让你不会感觉自己在终端里。对于在终端中编辑文件的初学者来说,这就是他们的阿喀琉斯之踵。即使是在终端中使用基础编辑器(比如 Nano),那也要有一段学习曲线。

但是 Wave 不同。它内置了一个编辑器,你可以用 codeedit filename 命令调用,你就能像在图形文本编辑器中那样编辑文件。没错,你可以随意地使用你的鼠标。你还可以从编辑器菜单中选择文件类型。

对于在终端中编辑配置文件感到提心吊胆的人来说,这绝对是个天赐福音。

开发者经常需要处理 Markdown 和 JSON 文件。Wave 终端完全有能力渲染这些文件。

SSH 的连接是永久的。再也不用厌烦地频繁从远程服务器上断开连接了。Wave 完美地处理了它。

你可以从其 文档页面 进一步探索它的特性。

在 Linux 上安装 Wave 终端

你可以直接从他们的网站上下载 zip 文件。

下载 Wave

解压它后,你会发现,它有一个命名为 Wave 的可执行文件,这个文件可以用来启动应用程序。

试试它,如果你喜欢它,那就把整个文件夹移到 /opt 目录,为它创建一个新的桌面文件,这样它在系统菜单中就可以被搜索到了。我目前就不详述了。

现在还没有像 deb/rpm 这样针对某些特定发行版的安装文件。目前也暂时没有 Snap 或 Flatpak 的包。这是一个新应用。给它一些时间。

源代码在 GitHub 上可供参考。如果你喜欢,能够给它打一个星标。

Wave Terminal 的 GitHub 仓库

总结

如你所见所觉,这是一个为应用开发者所创造出来的应用程序 —— 那些在编程上花费更多时间,并且需要通过命令行来部署或调试他们的应用的人。

从设计上就看得出,这款产品是为 macOS 用户量身定做的。从界面到键盘快捷键,每一样都带有 macOS 的气息。

但是没关系。只要 Wave 在 Linux 上可用,那对 Linux 用户来说就不重要了。

我只希望它不会转为闭源且成为将来的付费工具。如果真的那样,那的确很扫兴。


via: https://news.itsfoss.com/wave-terminal/

作者:Abhishek 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本篇文章作为终端基础教程系列的一部分,介绍如何在 Linux 命令行中,利用绝对路径和相对路径实现目录切换。

Linux 的 cd 命令让你可以轻松切换文件夹(即目录)。只需提供你要切换到的文件夹路径即可。

cd path_to_directory

然而对于 Linux 新人来说,可能会在路径的指定上有所困扰。

首先,让我们解决这个问题。

理解 Linux 中的路径

在 Linux 文件系统中,路径是用来追踪文件位置的信息。所有的路径都从根目录开始,然后向下延伸。

你可以通过下面的方式查看当前所在的位置:

pwd

结果可能是类似于 /home/username 的输出。注意,这里的 username 将会是你自己的用户名。

你可以注意到,路径是由 / 符号和目录名组成的。比如路径 /home/abhishek/scripts, 表示 scripts 是在文件夹 abhishek 之内,而文件夹 abhishekhome 文件夹之内。要注意,第一个 '/' 是指根目录(即文件系统的开始处),后面的 '/' 则作为目录的分隔符。

Path in Linux

?️ 在终端中键入 ls /,然后按回车。你将会看到根目录下的所有内容,试试看!

接下来,让我们学习两种常见的路径指定方式:绝对路径和相对路径。

绝对路径:这种路径从根开始,然后一直扩展到你需要的位置。如果一个路径是以 / 开头,那就说明它是一个绝对路径。

相对路径:这是相对于你文件系统中当前位置的路径。如果我当前位置在 /home/abhishek,并且我需要去 /home/abhishek/Documents, 我只需要简单地切换到 Documents,而不需要指定整个绝对路径 /home/abhishek/Documents

在我演示这两种路径的区别之前,有必要先熟悉两个特殊的目录标识:

  • . (单点)表示当前目录。
  • .. (双点)表示上一级目录,也就是当前目录的母目录。

这里有一张图形化的表示。

Absolute path vs relative path

利用 cd 命令变更目录

在你已对路径概念有所了解之后,我们来了解如何切换目录。

?️ 如果你仅键入 cd 并按回车键,无论当前位置在哪,系统都会将你带回主目录。试一试吧。

敲入以下命令,你就能看到主目录里的所有文件夹:

ls

这是我看到的情况:

abhishek@ituxedo:~$ ls
Desktop    Downloads  Pictures  Templates  VirtualBoxVMs
Documents  Music      Public    Videos

你的情况可能与此类似,但未必完全一样。

假如你希望跳转到 Documents 文件夹。由于它就在当前目录下,这里使用相对路径会比较方便:

cd Documents
? 注意,大部分 Linux 发行版预设的终端模拟器会在提示符本身显示出当前所在的位置。因此你不必频繁使用 pwd 指令来确认自己的位置。

Most Linux terminal prompts show the current location

假如你希望切换到位于主目录里的 Templates 文件夹。

你可以使用相对路径 ../Templates.. 会让你返回到上层目录,即 /home/username,然后你就可以进入 Templates 文件夹了)。

但这次我们尝试使用绝对路径。请把下面的 abhishek 替换成你的用户名。

cd /home/abhishek/Templates

此刻你已经在 Templates 文件夹里了。如何前往 Downloads 文件夹呢?这次我们再使用相对路径:

cd ../Downloads

下面的图片会回顾一下你刚才学到的所有或有关目录切换的范例。

cd command example

? 别忘了你还可以使用终端的 tab 键自动补全功能。只需要键入命令或者文件夹名称的前几个字母,然后敲击 tab 键,系统就会尝试自动地补全命令或文件夹名称,或者给你显示出所有可能的选项。

故障解决

在 Linux 终端操作切换目录的过程中,你可能会遇到一些常见的错误。

文件或目录不存在

如果在你尝试切换目录时,出现类似下面的错误信息:

bash: cd: directory\_name: No such file or directory

那么你可能在路径或目录名称上犯了误解。这里有几点你需要注意的:

  • 请确定你输入的目录名中没有拼写错误。
  • Linux 系统对大小写敏感,因此,Downloadsdownloads 会被识别为不同的目录。
  • 你可能未正确指定路径。可能你所在的位置与你预期的不同?或者你遗漏了绝对路径中的开头的 / 字符?

Common examples of "no such file or directory" error

非目录错误

如果你看到像下面这样的错误提示:

bash: cd: filename: Not a directory

这表示你尝试使用 cd 命令对一个文件进行操作,而不是一个目录(文件夹)。很明显,你不能像进入文件夹那样“进入”一个文件,因此会出现这样的错误。

Not a directory error with the cd command

参数过多

这是 Linux 新手常犯的另一个错误:

bash: cd: too many arguments

cd 命令只接受一个参数。也就是说,你只能对命令指定一个目录。

如果你指定了超过一个的参数,或者在路径中误加了空格,你就会看到这个错误。

Too many arguments error in Linux terminal

?? 如果你输入 cd -,它将会把你带到前一个目录。当你在两个相隔较远的地方切换时非常方便,可以避免再次输入长路径。

特殊目录符号

在结束这个教程之前,我想快速告诉你关于特殊符号 ~。在 Linux 中,~ 是用户主目录的捷径。

如果用户 abhi 运行它,~ 就会代表 /home/abhi,如果用户 prakash 运行,~ 就意味着 /home/prakash

总结一下你在这个基础教程系列中学到的所有特殊目录标识:

符号描述
.当前目录
..上级目录
~主目录
-前一个目录

测试你的知识

下面是一些简单的练习,用来测试你刚刚学到的关于路径和 cd 命令的知识。

移动到你的主目录,并使用这个命令创建一个嵌套的目录结构:

mkdir -p sample/dir1/dir2/dir3

然后,一步步来试试这个:

  • 使用绝对路径或相对路径进入 dir3
  • 使用相对路径移动到 dir1
  • 使用你能想象到的最短路径进入 dir2
  • 使用绝对路径切换到 sample 目录
  • 返回你的主目录
? 想知道你是否全都做对了吗?欢迎分享你的答案。

现在你知道如何切换目录,是不是应该学习一下如何创建它们呢?

我强烈推荐你阅读这篇文章,了解一些关于终端和命令的小技巧。

如果你想了解 Linux 命令行的基础知识,记得关注我们的 Linux 终端基础系列教程的更多章节。


via: https://itsfoss.com/change-directories/

作者:Abhishek Prakash 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

掌握这些极致实用的快捷键,让你的 Linux 终端操作效率大幅提升。

学习 Linux 命令无疑是你的首要任务,但当你能熟练 运用命令行 之后,有另一样东西值得你去关注。

那就是终端快捷键!

如果你不知道如何利用它们提升终端会话的效率,那你就无法真正理解它们的重要性。

在本教程中,我将为你详细讲解顶级的终端快捷键,并且举例说明它们的用法。

在我逐一解释快捷键之前,先来看一下这个备忘录,它对我将在本教程中讨论的内容进行了概览:

快捷键功能描述
Ctrl + A光标快速跳至行首。
Ctrl + E光标快速跳至行尾。
Ctrl + U删除光标至行首的所有内容。
Ctrl + K删除光标至行尾的所有内容。
Ctrl + W删除光标前的一个单词。
Ctrl + L清空整个终端屏幕。
Ctrl + C停止正在执行的进程或命令。
Ctrl + D注销或退出终端。
Ctrl + Z暂停正在执行的进程(之后可恢复执行)。
Ctrl + R在命令历史中进行逆向搜索。
上箭头 从命令历史中显示先前的命令。
下箭头 从命令历史中显示后续的命令。
!!重复执行最近的命令。
!n重复执行命令历史中的第 n 条命令。
Tab自动补全命令,文件名或目录名。
连续按 Tab 两次列出所有可能的补全选项。
Ctrl + Shift + C复制所选文本或命令。
Ctrl + Shift + V粘贴已复制的文本或命令。
Ctrl + Shift + N打开新的终端窗口。
Ctrl + Shift + T在当前终端中打开新的选项卡。
Ctrl + TabCtrl + PageDown在终端的选项卡之间切换。
? 虽然我在这篇文章中用的是大写字母,但实际上我们不需要使用大写来输入它们。比如 Ctrl+A,意思是同时按下 Ctrl 键和 A 键,并不意味着需要同时按下 Shift 键和 a 键来输入大写的 A

接下来,我们更详细地看看这些快捷键如何使用。

1、Ctrl + A:光标切换至行首

当你在终端中按下 Ctrl + A 组合键,光标就会迅速跳到命令的起始处。这个功能在你需要修改一条长命令序列起始部分的时候十分实用。

例如,在以下示例中,你可以看到无论光标处在何位置,只需按下 Ctrl + A,光标就会立刻跳转至行首:

使用 Ctrl + A 快捷键在 Linux 终端内前往行首

2、Ctrl + E:光标切换至行尾

在使用终端的过程中,如果你想迅速跳到当前行的末尾,直接按下 Ctrl + E 组合键就可以了。

在下面的示例中,我使用了一段样本文本,并按下 Ctrl + E 来快速移动到行尾:

使用 Ctrl + E 在 linux 终端内前往行尾

3、Ctrl + U:删除光标位置至行首的内容

有些时候,你可能需要删除从光标位置到行首的所有内容。

此时,你只需使用左箭头键将光标移动至你想要开始删除的位置,然后按下 Ctrl + U

使用 Ctrl+U 从光标位置删除到行首的内容

? 在输完 sudo 命令输入密码时,不确定是否输入正确?没必要用退格键一路删除,只需简单地使用 Ctrl+U 快捷键重新开始输入密码即可。

4、Ctrl + K:从光标删除至行尾

如你所猜想,当你按下 Ctrl + K ,它会移除光标至行尾的所有内容(光标位置右侧的所有)。

使用这种快捷操作时,你先要把光标放在你想从那里开始删除的位置,然后按下 Ctrl + K,如下图展示的那样:

在 Linux 终端利用 Ctrl + K 删除光标至行尾的内容

5、Ctrl + W:删除光标前的一个词

我日常常用该快捷键,因为我时常打错命令,需要删除命令的一部分,这个时候只需要简单地按 Ctrl + W 就可以了。

当你按下 Ctrl + W 键时,它只会删除光标前的一个词:

在 Linux 终端通过按 Ctrl + W 删除光标前的一个词

6、Ctrl + L:清理终端显示(或者理解为整理显示内容)

按下 Ctrl + L 并不会彻底地 清空终端显示,但它可以整理显示内容。如果你向上滚动,你还能找到之前的命令和执行记录。

它与 clear 命令有所不同。clear 命令会消除历史记录,而且你会在命令历史中找到 clear 命令的执行。

但是当你按下 Ctrl + L 时,它只是整理当前屏幕的显示内容,并不会出现在历史记录中,因为它本身并不是一条命令。

比如在这个示例中,我执行了历史命令,随后按下 Ctrl + L 键进行了屏幕清理:

利用 Ctrl+L 清理 Linux 终端屏幕显示

7、Ctrl + C:终止当前进程/执行

有没有想要 停止进行中的命令,却不知所措,最后只好关闭终端呢?解决办法其实很简单,按下 Ctrl + C 就行了。

当你按下这一组键时,它将发送 SIGINT 信号以终别过程。

例如,在这里,我结束了正在执行的命令进程:

利用 Ctrl+C 终端快捷键来中止运行中的命令

最后,你会看到 ^C 符号,表示你按下了 Ctrl + C 来中止当前执行。

但是,有些进程可能不会被 Ctrl + C 信号所中止,此时,你可以使用 Linux 中的其他 中止信号 来终止。

如何在 Linux 中使用 SIGINT 和其它中止信号

8、Ctrl + D:退出登录或者退出终端

你总是可以使用 exit 命令来关闭 Shell 会话和终端。你也可以选择使用 Ctrl+D 快捷键。

当你按 Ctrl + D 时,如果你正在 SSH 中使用,它会结束会话,如果再次按下,它将直接关闭终端:

利用 Ctrl+D 来关闭会话

9、Ctrl + Z:暂停当前进程

总是杀掉命令并不是个好主意,因为你有可能需要重新启动过程。

这种情况下,你可以按 Ctrl + Z 来暂停当前的进程,然后可以从之前暂停的地方继续。

例如,在这里,我暂停了更新进程:

利用 Ctrl+Z 挂起一个进程

你想更多地了解 如何暂停命令及如何恢复它们 吗?这里有一篇为此准备的详细指南:

如何在 Linux 中暂停并稍后恢复一个进程

10、Ctrl + R:搜索命令历史

当你按 Ctrl + R 时,它会打开一个搜索模式的提示,从中你可以键入命令的任何部分,并将找到匹配你输入的字符串的命令。

一旦你找到那个命令,只需按 Enter 键,它就会执行那个命令。

例如,在这里,我搜索了 update,返回的结果是在 Ubuntu 中的仓库更新命令(sudo apt update):

利用 Ctrl + R 快捷键从历史记录中搜索命令

? 如果你对历史记录中的任何建议都不满意,可以使用 Ctrl+C 退出搜索模式。

11、上箭头:呈现命令历史中的上一条

当你按下上箭头 键时,命令历史中之前执行过的命令将会按次序逐一显示:

使用箭头键向下遍历历史记录

12、下箭头:呈现命令历史中的下一条

当你按下上箭头 键时,它会展示先前的命令,但在有些情况下,你可能无意间点击了多次,这时你希望展示之前已显示过的命令。

这个时候,你可以使用下箭头 键。

在以下图示中,我首先多次按下了上箭头键,然后为了返回到先前显示的命令,我按下了下箭头键:

使用箭头键向下遍历历史记录

? Page UpPage Down 键也可以用于同样的目的。

13、!!:重复最后一条命令

有时候,你可能需要重复执行一次或多次最近的命令,此时你只需要输入 !!(两个感叹号)即可:

!!

比如,在这里,我执行了一个 echo 命令,随后我用了 !! 来重复执行相同的命令:

!! 命令能够重复执行你最近在终端输入的命令

但是,这个快捷键最常用且最实用的场景是,当你忘记给命令加上 sudo。这样你无需重新输入整个命令,只需使用 sudo !! 就可以了

在 Linux 终端中使用 !! 快捷键的实践应用

? 一个类似的键盘快捷键是 Alt+.,这个快捷键会给你提供上一条命令的最后一个参数或部分。假设你刚使用了 ls /etc/apt/sources.list.d,现在你想进入这个目录。只需输入 cd 然后使用 Alt+. 就可以。这就如同你输入 cd /etc/apt/sources.list.d 一样。

14、!n:重播历史中的第 n 条命令

你可以通过执行 Bash 的 history 命令来查看命令历史,每个命令都会有一个相应的索引号:

history

从历史中选择命令

现在,假设我想要执行倒数第二个 echo 命令,我会这样使用:

!1998

15、Tab:命令自动补全

我认为这应是终端快捷键列表的首个条目。

在输入长命令时,你可以输入一部分,然后点击 Tab 键,它将为你进行自动补全。

例如,这里,我通过 Tab 键来自动完成我的脚本执行:

点击 Tab 来查看命令,选项与参数建议

16、Tab(连击两次):列出所有可能的自动补全

如果按 Tab 键无效果,那可能是因为当前输入的命令存在多种可能。

在这种场合,你可以连击两次 Tab 键,以列出所有可能的补全选项:

连击两次 Tab 键可列出所有可能的自动补全建议

✋ 接下来的一些快捷键取决于终端的模拟器。虽然这些快捷键应该适用于大多数的终端应用,但不能完全确定。

17、Ctrl + Shift + C:复制所选文本

复制终端中的文本,你需要先用鼠标选取文本,然后按下 Ctrl + Shift + C 来复制选中的内容:

按下 Ctrl+Shift+C 进行复制

18、Ctrl + Shift + V:粘贴已复制的文本

当你通过选取和按下 Ctrl + Shift + C 复制了文本后,你可以通过按下 Ctrl + Shift + V 在任何地方粘贴:

在终端按下 Ctrl+Shift+V 进行粘贴

19、Ctrl + Shift + N:打开新的终端窗口

当你按下 Ctrl + Shift + N 时,会打开一个新的终端窗口,且新窗口的工作目录与之前那个窗口内的工作目录相同:

20、Ctrl + Shift + T:开启新的终端标签页

就像使用网络浏览器一样,终端也支持开启多个标签页来进行不同的任务。要开启一个新的标签页,只需按下 Ctrl + Shift + T 就可以了:

21、Ctrl + Tab 或 Ctrl + PageDown:切换标签页

如果你按照之前的方式创建了多个标签页,你或许需要在它们之间进行切换。

为此,你可以使用 Ctrl + TabCtrl + PageDown

? 这可能更多是 Ubuntu 的功能。你可以通过 按下 Ctrl+Alt+T 键来打开新的终端窗口

接下来:必知的 Linux 命令

你喜欢这个“必备”键盘快捷键列表吗?可能你会对 最基本却必备的 Linux 命令列表 也感兴趣:

31 个最基本却必备的 Ubuntu Linux 命令

我明白起初你可能不容易记住所有这些终端快捷键。但通过不断实践,它们会逐渐深入你的肌肉记忆。

另外,你有一些没有在这里列出的钟爱的快捷键吗?欢迎在评论区分享。

(题图:MJ/992e3559-4ed7-4529-9aea-85d52484cccf)


via: https://itsfoss.com/linux-terminal-shortcuts/

作者:Sagar Sharma 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在终端基础知识系列的这一部分中,学习如何在 Linux 中使用命令行复制文件和目录。

复制文件是你经常执行的最基本但最重要的任务之一。

Linux 有一个专门的 cp 命令用于复制文件和目录(文件夹)。

在终端基础知识系列的这一部分中,你将学习在终端中复制文件和文件夹。

? 回想一下,以下是你迄今为止在本终端基础知识系列中所学到的内容:

让我们继续该系列的第七章。

在 Linux 命令行中复制文件

让我向你展示一些复制文件的示例。

将文件复制到另一个目录

要将一个文件复制到另一目录,你所要做的就是遵循给定的命令语法:

cp 源文件 目标目录

例如,在这里,我将名为 Hello.txt 的文件复制到名为 Tux 的目录中:

copy file to another directory in linux command line

正如你所看到的,文件已成功复制到 Tux 目录中。

复制文件但重命名

你可以选择在复制文件时重命名该文件。只需为“目标文件”指定一个不同的名称即可。

cp 源文件 改名的文件

作为参考,在这里,我将名为 Hello.txt 的文件复制到同一目录,并将其重命名为 Renamed_Hello.txt

rename a file while copying in a same directory in linux terminal

为什么要这么做? 比如说,你必须编辑配置文件。一个好的做法是在编辑配置文件之前在同一位置对其进行备份。这样,如果事情没有按计划进行,你可以恢复到旧配置。

将多个文件复制到另一个位置

要将多个文件复制到另一个目录,请按以下方式执行命令:

cp File1 File2 File3 FileN Target_directory

在这里,我将多个文件复制到新位置。

copy multiple files using the cp command in linux

? 当你复制多个文件时,仅使用 cp 命令无法重命名它们。

复制时处理重复文件

默认情况下,如果目标目录中存在同名文件,cp 命令将覆盖该文件。

为了避免覆盖,你可以在 cp 命令中使用 -n 选项,它不会覆盖现有文件:

cp -n 源文件 目标目录

例如,在这里,我尝试复制目标目录中已有的两个文件,并使用 -v 选项来展示该命令正在执行的操作:

cp -n -v itsFOSS.txt LHB.txt LU.txt ~/Tux

how not to override files while copying in linux using the cp command

交互式复制文件

但是,当你想要覆盖某些文件,而某些文件应该保持不变时该怎么办?

好吧,你可以使用 -i 选项在交互模式下使用 cp 命令,它每次都会询问你是否应该覆盖该文件:

cp -i 源文件 目标目录

how to use cp command in interactive mode

?️ 自己练习上述所有示例。你已经了解如何创建文件和文件夹,因此请重新创建所有内容。

在 Linux 命令行中复制目录

mkdir 命令用于创建新目录,rmdir 命令用于删除(空)目录。但没有用于复制目录的 cpdir 命令。

你必须使用相同的 cp 命令,但使用递归选项 -r 将目录及其所有内容复制到另一个位置:

cp -r 源目录 目标目录

例如,在这里,我将名为 IF 的目录复制到 LHB

how to copy a directory in linux command line

但它复制了整个目录。?

那么,当你只想复制目录内容而不是目录本身时该怎么办?

你可以执行以下操作:

仅复制目录的内容(不是目录)

要仅复制目录的内容,而不复制目录本身,请在源目录名称的末尾附加 /.

cp -r 源目录/. 目标目录

在这里,我想复制名为 IF 的目录的内容,其中包含以下三个文件:

check the file contents of directory using the tree command

我将执行以下命令将 IF 目录的文件内容复制到 LHB

cp -r IF/. LHB

copy the file contents of directory not a directory itself in linux command line

你还可以在此处使用 源目录/*

复制多个目录

要复制多个目录,你必须按以下方式执行命令:

cp -r 目录1 目录2 目录3 目录N 目标目录

例如,在这里,我将两个名为 IFLU 的目录复制到 LHB

cp -r IF LU ~/LHB

copy multiple directories using the cp command in linux command line

当你想要从多个目录复制文件但不复制目录本身时,你可以执行相同的操作:

cp -r 目录1/. 目录2/. 目录3/. 目录N/. 目标目录

copy files from multiple directories but not directories their self using the cp command

?️ 你还可以像重命名文件一样重命名目录。

测试你的知识

现在,让我们看看你对到目前为止所学到的知识还记得多少。

  • 创建一个名为 copy_practice 的目录。
  • 将文件 /etc/services 复制到这个新创建的文件夹。
  • 在此目录下创建一个名为 secrets 的文件夹,并将文件 /etc/passwd/etc/services 复制到其中。
  • copy_practice 中的 services 文件复制到 secrets 文件夹中,但不要覆盖它。
  • secrets 文件夹复制到你的主目录。
  • 删除 secretscopy_practice 目录。

这会给你一些练习。

到目前为止进展顺利。你已经学到了很多东西。在下一章中,你将了解如何使用 mv 命令移动文件和文件夹。


via: https://itsfoss.com/copy-files-directory-linux/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你可能已经看到一些同事或 UP 主们在一个终端窗口中运行多个终端会话。

一些专业的 Linux 用户会使用 screentmux 命令 来分割多个窗格。这些命令可以在任何终端应用程序中使用,但需要较大的学习曲线。

如果你想要在同一应用窗口中拥有多个终端会话而不涉及 tmuxscreen 命令 的复杂性,“终结者” 是你的好帮手。

不,我指的不是那个“终结者”。是这个 ?

terminator htop neofetch cmatrix

你的系统上安装的 终端仿真器 可能具有多标签支持。而 Terminator 支持多个可调整大小的终端面板。

它模拟了类似平铺窗口管理器的功能,并将终端面板平铺在单个窗口中。

在本文中,我将向你展示如何在 Ubuntu 和其他 Linux 发行版中安装和使用 Terminator。

但在此之前,让我们快速了解一下 Terminator 提供的功能。

Terminator 可在同一窗口中提供多个终端会话

Terminator 是一个基于 GNOME 终端的 GTK 应用程序,使用了 VTE3(GTK3 虚拟终端仿真器小部件)。

作为一个基于 GNOME 终端的应用程序,它与 GNOME 桌面环境相关联,因此有一些依赖性。

然而,即使有 GNOME 的依赖性,我发现该应用程序相对轻巧。可能在其他桌面环境中使用它不会成为问题。

从外表上看,Terminator 可能与其他终端仿真器相似。但是,Terminator 具有无限可能性,我将在后面的章节中向你展示它们。

terminator htop multiple

功能特点

让我总结一下 Terminator 的一些主要功能:

  • 平铺布局的终端
  • 支持多个标签页
  • 拖拽终端面板(出色的鼠标支持)
  • 类似于平铺窗口管理器的键盘快捷键
  • 可以保存布局和配置文件,以便快速启动
  • 通过插件可扩展功能

安装 Terminator

安装 Terminator 就像安装其它软件包一样简单,因为它在你能想到的所有主流发行版的官方软件源中都可用。

为了方便起见,我在下面列出了一些主要发行版的命令。

对于基于 Ubuntu 和 Debian 的发行版,请执行以下命令安装 Terminator:

sudo apt install terminator

对于基于 Fedora 和红帽的发行版,请使用以下命令:

sudo dnf install terminator

对于基于 Arch 和 Manjaro 的发行版,请执行以下命令更新并安装 Terminator:

sudo pacman -Syu terminator

注意:某些长期支持版本的发行版软件源中可能没有最新版本的 Terminator。

你还可以使用发行版提供的图形包管理器来安装 Terminator。但是,通过图形界面安装终端仿真器是无趣的。

使用 Terminator

当你启动 Terminator 时,默认窗口看起来就像一个简单的终端窗口。但是,经过一些耐心,它可以在一个窗口内像平铺窗口管理器一样工作。

terminator default window

Terminator 允许你使用鼠标通过水平和垂直分割来创建新的面板。

terminator right click option

然而,使用键盘快捷键会更快。你需要一些时间来适应这些键,但最终你会掌握它们的。

在这里,我在第一个面板中打开了 htop,如下图所示。

terminator htop

要在右侧创建一个新的终端面板,只需按下 Ctrl + Shift + e 快捷键。其次,我在右侧面板中使用了 neofetch,如下图所示。

terminator htop neofetch

最后,我使用 Ctrl + Shift + o 快捷键在带有 neofetch 的面板下方创建了另一个面板,并在此处启动了 cmatrix。这是其中一个无用但 有趣的 Linux 命令

terminator htop neofetch cmatrix

上面是在本指导中完成的操作的最终屏幕截图。现在你明白我为什么说 Terminator 在一个窗口中创建了类似平铺窗口管理器的环境了吧。

如果你需要在不安装平铺窗口管理器的情况下打开多个终端,这种平铺功能将非常方便。Terminator 也支持标签页,但我认为平铺功能是该应用程序的特点。

Terminator 是少数几个配有出色文档的应用程序之一。如果你需要更多信息,请参阅其 文档

结论

我相信所有终端仿真器都支持标签页界面。但是,当你需要同时关注多个会话时,必须在标签之间切换并不方便。

Terminator 可能不像 BlackboxGNOME Console 那样好看。但它拥有老练的 Linux 用户喜爱的功能。

它提供的功能可能并不是每个 Linux 用户都需要或想要的。我将把决定权交给你,你来决定它是否值得你投入时间。

(题图:MJ/0b403aa1-810a-4f9f-9e52-1d42d8fe2b6a)


via: https://itsfoss.com/terminator/

作者:Anuj Sharma 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出