标签: bash

仅查找匹配搜索的顶级目录

我正在尝试查找所有 777 的 Web 文件夹。但我只想要顶级文件夹的列表。

因此,如果有一个 img 目录,其中的文件夹也是 777,我不希望它们返回。

基本上,我正在寻找一种在找到 777 的文件夹后找到停止下降的方法。

find /var/www/vhosts/ -type d -perm 777
Run Code Online (Sandbox Code Playgroud)

给我

/var/www/vhosts/example.com/httpdocs/img
/var/www/vhosts/example.com/httpdocs/img/gbl
/var/www/vhosts/example.com/httpdocs/img/ss
Run Code Online (Sandbox Code Playgroud)

我想要的只是第一个

/var/www/vhosts/example.com/httpdocs/img
Run Code Online (Sandbox Code Playgroud)

linux bash command-line-interface find

3
推荐指数
1
解决办法
1045
查看次数

值得花时间学习 awk 吗?

我很擅长使用 bash 脚本编写,而且我正在学习正则表达式和一些 sed 用法。学习 awk 是否仍然值得,因为那里有所有替代方案。意见?

scripting bash awk sed

3
推荐指数
1
解决办法
4246
查看次数

Ubuntu VPS 上 sudo 的 Bash 完成问题

我有一个 Linode 的 VPS。我部署了 Ubuntu 10.04 服务器。我添加了一个用户并将其放在 sudoers 文件中。当我以用户身份写作时

apti <TAB>
Run Code Online (Sandbox Code Playgroud)

它与选项卡一起完成

aptitude <TAB>
Run Code Online (Sandbox Code Playgroud)

但是当我继续

aptitude upd <TAB>
Run Code Online (Sandbox Code Playgroud)

它没有完成,但在我的桌面上效果很好。更糟糕的是,如果我用 sudo 尝试相同的命令

sudo apti <TAB>
Run Code Online (Sandbox Code Playgroud)

不起作用我检查了 .basrc、.profile/.bashrc 和 /etc/bash.basrc 文件,但它们都没有被注释掉,所以出了什么问题。顺便说一句,当我扎根时它可以工作

我的 ~/bashrc

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)

vps bash sudo

3
推荐指数
1
解决办法
1282
查看次数

如何在 bash 脚本中同时运行两个不同的长时间运行的命令?

作为迁移脚本的一部分,我必须 chmod 和 chown 数十万个文件。每个命令大约需要一个半小时才能完成。我意识到这两个操作可以同时运行,从而减少了运行时间,我通过在 shell 中测试证实了这一点。

我知道使用“&”将命令推入后台的技巧,但我需要确保在继续执行脚本的其余部分之前完成两个进程。

谢谢

scripting linux bash

3
推荐指数
1
解决办法
1004
查看次数

如何快捷方式而不是键入“python”?

现在,我输入“python myfile.py”来运行它。

如何输入“py myfile.py”来运行它?或者更好,这样做./myfile.py?

有小费吗?

linux unix shell bash bin

3
推荐指数
1
解决办法
580
查看次数

SCP 的 Bash 脚本——SSH 密钥

我目前是一名程序员,因此需要不断将我的软件上传到远程系统进行测试。我有大约 7 台机器需要接收所有内容的副本。

目前,我有一个简短的 bash 脚本,其中有一个 scp 为每台远程机器执行传输:

echo -e "\nUpdating Taiwan Machine"
scp {file1,file} bschlinker@taiwan:/home/bschlinker/
echo -e "\nUpdating Wisconsin Machine"
scp -P 2400 {file1,file2} bschlinker@wisconsin:/home/bschlinker/
Run Code Online (Sandbox Code Playgroud)

我痛苦地被提示输入每台机器的密码。我知道我可以用 SSH 密钥解决这个问题——但我不想通过密钥对远程机器进行无密码身份验证。因此,我在 SSH 密钥上设置了密码。我读过一次输入密码后,它将在当前终端会话的其余部分保持活动状态。真的吗?如果没有,有什么想法吗?

ssh bash terminal scp passphrase

3
推荐指数
1
解决办法
1465
查看次数

具有永久 ssh 连接的 bash 脚本

我使用运行的 bash 脚本

/usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@34.324.234.23
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 bash 脚本时,它会等待.. 我看到连接出现但脚本没有退出.. 就像它在等待 SSH 进程完成一样,因为当我手动杀死它时,bash 脚本完成为好。

任何想法如何解决这个问题?

更新: 我已经编写了这个脚本..cron 进程是一个变成僵尸的进程.. 实际的脚本运行得很好,抱歉,使用 ps -auxf 我得到:

root       597  0.0  0.7   2372   912 ?        Ss   Jul12   0:00 cron
root      2595  0.0  0.8   2552  1064 ?        S    02:09   0:00  \_ CRON
1001      2597  0.0  0.0      0     0 ?        Zs   02:09   0:00      \_ [sh] <defunct>
1001      2603  0.0  0.0      0     0 ?        Z    02:09   0:00      \_ [cron] <defunct>
Run Code Online (Sandbox Code Playgroud)

当我杀死 ssh 时,不复存在的人消失了..为什么他们会不复存在?

scripting linux ubuntu ssh bash

3
推荐指数
1
解决办法
5624
查看次数

Bash:如何使用触摸和正则表达式复制时间戳?

由于这更像是一个 Bash 问题,我认为这比超级用户更适合服务器故障,即使我在谈论媒体文件。

我不得不对几个媒体文件进行批量转换,所有输出文件都有一个新的时间戳。

/somedir/
    file1.mpg     (correct timestamp)
    file1.mpg.m4v (wrong timestamp)
    file2.mpg     (correct timestamp)
    file2.mpg.m4v (wrong timestamp)
    ...
Run Code Online (Sandbox Code Playgroud)

我想要做的是时间戳的批处理副本,以便每个 *.mpg.m4v 获得相应 *.mpg 文件的时间戳。

从我的搜索来看,看起来我需要使用touch -r一些带有替换的正则表达式来处理这个问题。

我是否在正确的轨道上,是否有人对我需要如何做正则表达式(我的正则表达式知识,不好,不好,不好)有什么建议来处理这个问题?

bash regex timestamp

3
推荐指数
1
解决办法
2808
查看次数

使用 WGET 从 FTP 服务器传输文件的问题

我使用 wget 从 FTP 服务器获取文件。我这样做:

wget ftp://username:Password@XXX.XXX.XX.XX/public_html/images/audiothumbs/* .
Run Code Online (Sandbox Code Playgroud)

下载大约 1600 个文件后,出现此错误:

--2010-09-07 01:36:51--  http://./
Resolving .... failed: Name or service not known.
wget: unable to resolve host address `.'
FINISHED --2010-09-07 01:36:52--
Downloaded: 1998 files, 20M in 3m 31s (95.7 KB/s)
Run Code Online (Sandbox Code Playgroud)

我是否与其他服务器断开连接?

其次,如果像这样使用 no-clobber 选项:

wget -r -nc ftp://username:Password@XXX.XXX.XX.XX/public_html/images/audiothumbs/* .
Run Code Online (Sandbox Code Playgroud)

为什么它的文件仍然被覆盖?

感谢大家的帮助

linux bash command-line-interface centos

3
推荐指数
2
解决办法
2999
查看次数

如何从 $(who am i) 中提取主机名

我尝试从以下字符串(使用创建who am i)中提取主机名:

username pts/0        2010-10-05 17:30 (www.example.com)
Run Code Online (Sandbox Code Playgroud)

我需要一个解决方案,如果 (www.example.com) 不存在(当我在本地登录时就是这种情况),它也可以工作。此外,该解决方案还必须在who am i返回以下字符串的 Mac 上运行:

username ttys006      Oct  5 16:47 (www.example.com)
Run Code Online (Sandbox Code Playgroud)

问题是 mac 在日期中放置了空格,这使得它难以使用cut。我认为,必须有一个sed用于提取子字符串的解决方案,但是我在弄清楚如何正确使用时遇到了问题sed

更新:疯狂的方法

这种方法只有在实际存在括号时才有效。如果不是,则会发生以下情况:

$ who am i | cut -f2 -d '(' | tr -d ')'
username ttys006      Oct  5 16:47
Run Code Online (Sandbox Code Playgroud)

linux bash sed strings

3
推荐指数
2
解决办法
1921
查看次数

标签 统计

bash ×10

linux ×6

scripting ×3

command-line-interface ×2

sed ×2

ssh ×2

awk ×1

bin ×1

centos ×1

find ×1

passphrase ×1

regex ×1

scp ×1

shell ×1

strings ×1

sudo ×1

terminal ×1

timestamp ×1

ubuntu ×1

unix ×1

vps ×1