我想开启一个讨论,积累您的 Linux 命令行 (CLI) 最佳实践和技巧。
我一直在寻找这样的讨论来分享以下评论,但没有找到,因此发表了这篇文章。
我希望我们都能从中吸取教训。
欢迎您分享您的 Bash 技巧、grep、sed、AWK、/proc 以及所有其他相关的 Linux/Unix 系统管理、shell 编程最佳实践,以造福我们所有人。
答案1
使用屏幕,由 GNU 项目开发的免费终端多路复用器,可以让您在一个终端中拥有多个终端。
您可以开始一个会话,即使连接丢失,您的终端也会被保存,因此您可以稍后或在家中继续。
答案2
SSH!
SSH 是神命令——我认为它是最值得学习的命令。这些选项可能相当令人生畏,但我似乎在不断学习使用我从未想过会用到的 SSH 新命令行选项。我可能已经用过它们了。
你用得越多,你对它的了解就越多。你可以用它做一些令人惊奇的事情。
注意:所有这些操作都可以远程完成,除了运行 ssh 服务器外,不需要在您的服务器上进行任何设置。
通过互联网挂载文件系统
在网上搜索 SSHFS
转发命令。
SVN+SSH 协议是从远程客户端到没有运行 DEAMON 的服务器的 Subversion!SVN 命令通过 ssh shell 启动服务器,并通过现有管道来回传递信息。rsync 程序执行相同的操作,通过 SSH 启动一个 rsync 守护进程,在没有 rsync 守护进程的服务器上运行。编写自己的 bash 文件来执行类似的技巧很容易。
通过防火墙的链条
我一直用它通过我家里的 Linux 服务器跳转到我的 Mac。
转发端口:
似乎只是适度有用,直到您意识到您可以通过家庭防火墙反弹并在家中配置路由器,就像您在家庭网络内进行配置一样)。
转发 X 请求:
这又是一个令人惊奇的功能。无论远程系统上是否运行着 X 服务器,您都可以运行 x-windows 程序,并且窗口将显示在您的本地屏幕上。只需使用开关 -X,就这么简单!
由于您不必在远程服务器上运行 X 服务器,因此对服务器的 CPU 影响很小,您可以拥有一个 TINY Linux 服务器,它可以为运行 Windows 和 cygwin/X 的强大游戏 PC 提供大型应用程序。
当然,VI 和 EMACS 可以通过 SSH 工作,但当我在家运行时,有时我需要更多。我使用 ssh -X 来启动 Eclipse 的副本!如果您的服务器比笔记本电脑更强大,那么您的笔记本电脑上就有 GUI,但编译是在服务器上完成的,因此不必担心系统负载。
在批处理文件中运行
(意思是运行一个在其他系统上“执行操作”的本地批处理文件):
有两件事结合起来让这个很酷。一是您可以使用(更安全的)加密密钥来消除密码提示。二是您可以在 SSH CLI 上指定命令。我以一些有趣的方式使用它——例如,当远程服务器上的编译失败时,我会让它通过 SSH 进入我的计算机并播放声音文件)。
请记住,您可以重定向远程命令的输出并在本地批处理文件中使用它,这样您也可以在本地跟踪在服务器上运行的编译。
内置于 Mac
服务器和客户端都内置在 Mac 和 Linux 中。对于 Mac 和 Ubuntu,启用服务器就像找到正确的复选框一样简单。
在 PC 上安装 cygwin 或 cygwin/X(cygwin/X 允许您将 x-window 输出从 Linux 机器转发到 Windows PC——它会安装一个 X 服务器)
重要提示/配置文件
切勿在防火墙上使用端口 22。您会遇到很多黑客攻击,这不值得。只需让防火墙将其他端口转发到您的服务器即可。
有大量的配置选项,可让您大大简化 ssh 命令。以下是我工作中的一个例子:
Host home
hostname billshome.hopto.org
Port=12345
user=bill
LocalForward=localhost:1025 mac:22
当我输入“ssh home”(没有其他内容)时,它就像我输入了以下内容一样:
ssh -p 12345 [email protected]
然后将我的本地端口 1025 转发到我家里的系统“mac”。这样做的原因是,我的文件中还有另一个条目:
Host mac
hostname localhost
port=1025
这样,一旦我完成了“ssh home”并且窗口仍然打开,我就可以输入“ssh mac”,这里工作的计算机实际上会尝试连接到它自己的端口 1025,该端口已被其他命令转发到“mac:22”,所以它将通过防火墙连接到我家里的 Mac。
编辑-很酷的脚本!
我找到了一个我非常喜欢的旧脚本——不得不回来发布它,以便任何可能感兴趣的人都可以在这里找到它。该脚本名为“authMe”
#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
echo 'id_dsa.pub does not exist, creating'
ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
如果您的主目录中有此脚本,并且有一个您可以连接的主机(通过 ssh),那么您可以输入“./authMe hostName”。
如果有必要,它会为您创建一个公钥/私钥对,然后它会通过 ssh 连接到另一台机器并复制您的公钥(ssh 命令会提示您输入密码...)
此后,SSH 命令在连接到远程系统时不再要求您输入密码,它将使用公钥/私钥对。
如果您的远程计算机并不总是安全的,您应该考虑在提示时设置“密码”。
您可能还想配置远端的 ssh 服务器以不允许使用文本密码(仅密钥)来增加安全性。
答案3
我喜欢用
cd -
切换到上一个目录。非常有用!