如何从我的 bash 历史记录中执行一系列命令?例如,如果我想在我的 bash 历史记录中执行编号为 34 到 42 的命令,我尝试过以下操作:
for n in $(seq 34 42); do
exec \!$n;
done
Run Code Online (Sandbox Code Playgroud)
但这并不能解决问题,是吗。有任何想法吗?
谢谢!
我有一堆名称为 srv1.domain.com、srv2.domain.com、...、srv50.domain.com 的服务器
我希望能够通过以下方式连接到这些服务器 ssh srv1
我不想将 50 个配置条目放到我的 .ssh/config 中,例如
HOST srv1
HOSTNAME srv1.domain.com
USER amac
IdentityFile /home/amac/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
我喜欢的是正则表达式匹配,它允许我写一些类似的东西
HOSTNAME (srv[0-9]*).domain.com
HOST \1
USER amac
IdentityFile /home/amac/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
这可能吗?也许通过创建一个 bash 别名将“srv(.*)”的所有实例转换为 srv\1.domain.com,其中 \1 对应于正则表达式匹配的括号中的子字符串?
谢谢。
我有一个支持奇怪的“ssh”的设备。它不支持密钥身份验证,我的问题是我不知道如何提供用户名和密码(-l 或 user@host 不起作用)。它在连接后要求输入登录名和密码,如下所示:
zeratul@antioch:~$ ssh 1.2.3.4
Please login: user
password :
Login incorrect
Run Code Online (Sandbox Code Playgroud)
甚至可以从shell脚本中做到这一点还是我可以忘记它?
提前致谢。
我在 bash 中运行 SQL*Plus 时遇到问题。这是我的代码
#!/bin/bash
#curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql
wget -O script.sql 192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql
set NLS_LANG=_.UTF8
sqlplus /nolog << ENDL
connect login/password
set sqlblanklines on
start script.sql
exit
<<endl
Run Code Online (Sandbox Code Playgroud)
我从我们的内网下载插入语句,将其放入 sql 文件并通过 SQL*Plus 运行它。这工作正常。我的问题是,当我保存文件 script.sql 时,我的编码出错了。所有特殊字符(如 íáš?)都已损坏,这导致将错误的字符插入到我的数据库中。该文件的编码是 UTF-8,我们内网的 XSQL 页面上也设置了 UTF-8。所以我真的不知道哪里有问题。
也欢迎任何关于我的脚本的建议,我是 Linux 脚本的新手:-)
快速提问。编译程序后,我总是必须通过在名称前加上 ./ 来明确告诉它从当前目录运行。例如$ ./testprog -argument1
有没有办法设置某种别名,允许我简单地通过说来调用它$ testprog -argument1,基本上允许我从任何位置运行程序?
环境:
问题:
迪茨:
wget http://iweb.dl.sourceforge.net/project/tmux/tmux/tmux-1.6/tmux-1.6.tar.gz
tar xvf tmux-1.6.tar.gz
cd tmux-1.6/
sudo apt-get install libevent-dev
sudo apt-get install libncurses5-dev
./configure
make
make install
./tmux #version 1.6 worked perfectly
cd ~
tmux #ran old version as expected
sudo apt-get remove tmux
Run Code Online (Sandbox Code Playgroud)
当我尝试从 ~ 运行它时的结果:
~$tmux
-bash: /usr/bin/tmux: No such file or directory
~$which tmux
/usr/local/bin/tmux
~$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud) 我正在制作一个在内部执行一些命令的脚本,这些命令显示一些输出STDOUT(STDERR以及,但这没问题)。我需要我的脚本生成一个 .tar.gz 文件到STDOUT,所以脚本中执行的一些命令的输出也会转到STDOUT,这以输出中无效的 .tar.gz 文件结束。
因此,简而言之,可以将第一个命令输出到屏幕(因为我仍然想看到输出)但不能通过STDOUT? 此外,我想保持STDERR原样,以便那里只显示错误消息。
我的意思的一个简单例子。这将是我的脚本:
#!/bin/bash
# the output of these commands shouldn't go to STDOUT, but still appear on screen
some_cmd foo bar
other_cmd baz
#the following command creates a tar.gz of the "whatever" folder,
#and outputs the result to STDOUT
tar zc whatever/
Run Code Online (Sandbox Code Playgroud)
我试过搞乱exec文件描述符,但我仍然无法让它工作:
#!/bin/bash
# save STDOUT to #3
exec 3>&1
# the output of these commands should go to …Run Code Online (Sandbox Code Playgroud) 有没有人写过一个自我看门狗脚本并且可以分享它的解决方式?我在其中一台路由器上安装了 DD-WRT,并且只能制作一个启动脚本。问题是跑不起来。如果我通过 telnet 登录并手动启动它,效果很好。所以我需要添加一个 cron 规则来运行它,但不能多次运行。我正在考虑使用:
if [`ps | grep [c]ustom.sh` -gt 1]; then
exit;
else
...
fi
Run Code Online (Sandbox Code Playgroud)
你知道有什么其他方法可以做到这一点吗?
在经历了许多版本和托管平台的 CMS 上,我们刚刚遇到了一个带重音的图像文件,它的 url 无法正常工作。所以我 ssh 到盒子上并试图重命名它。
但是,我不知道如何正确输入它的名称。例如,我知道如果一个文件被调用,my file.txt你会做类似的事情,mv my\ file.txt my_new_file.txt但你如何移动一个名为 的文件café.txt?
最后,我使用了通配符并使用了,mv caf*.txt cafe.txt但我仍然想知道为什么这个带重音的图像首先不起作用,以及在 unix 上处理它的正确方法是什么。
我有一个三个文件夹:core,project并与里面的许多文件合并。我想删除merge文件夹内的所有文件和文件夹(包括dot文件),然后将core文件夹中的所有文件(包括dot文件)复制到merge文件夹,同时将project文件夹下的所有文件都合并到merge文件。
情况
rm -rf /path/to/folder/*没有删除文件和文件夹。)tar -cf my.tar path/; tar -xf my.tar)我正在使用 tar,但文件太多,我需要更快的方法。