我需要显示的是定期刷新的日志。这是一个大约 10 行文本的块。我正在使用 |tee,它现在可以工作。然而,表现却不太令人满意。它等待一段时间,然后从多次刷新中输出几块文本(特别是当程序刚刚启动时,需要相当长的时间才能开始在控制台上显示任何内容,我第一次看到这个时,我以为程序挂了)。另外,它在最后一个块的中间随机断裂,因此呈现起来相当难看。
有没有办法改善这一点?(也许每次输出更少,并更频繁地在输出文件和控制台之间切换?)
更新:这是我的 bash 脚本中的内容:
tail -f /var/log/syslog | egrep --line-buffered "my search string" > tmp.txt & python script.py | tee result.log
我在使用 SSH 共享连接时遇到以下问题:
# Set up a shared connection
ssh -f -N -M -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST"
# I can scp *without* the shared connection
scp root@"$ONE_HOST":/etc/hosts /dev/null
# I can execute a remote command *with* the shared connection
ssh -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST" "date"
# But I can't scp *with* the shared connection
scp -vvv -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .
Run Code Online (Sandbox Code Playgroud)
该脚本给出以下输出:
hosts 100% 59 67.8KB/s 00:00
Wed Feb 28 08:23:10 MST 2018
Executing: program /home/myUser/ssh_sharing_socket host myHost.example.com, user root, command scp -v …Run Code Online (Sandbox Code Playgroud) 我在 Linux 中遇到了 youtube-dl 的问题,所以我想创建一个 bash\n脚本,让我下载一个播放列表并将所有视频放入\n具有该播放列表名称的单独文件夹\n这是我的尝试:
\n\n#!/bin/bash\n\necho \'Enter the URL of the playlist : \'\nread url\ntitle = youtube-dl -o "%(title)s \\"$url\\""\nmkdir "$title"\ncd $title\nyoutube-dl --download-archive archive.txt $url\nRun Code Online (Sandbox Code Playgroud)\n\n但它总是给出这个错误:
\n\n[gerzal@dhcppc1 Videos]$ ./try.bash\nEnter the URL of the playlist :\nff\nyoutube-dl -o %(title)s "ff"\n./try.bash: line 6: title: command not found\nmkdir: cannot create directory \xe2\x80\x98\xe2\x80\x99: No such file or directory\nRun Code Online (Sandbox Code Playgroud)\n\n预先感谢您的帮助,我们将不胜感激。
\n\n更新信息:
\n\n我联系了一位 youtube-dl 开发人员,他在一个命令行中给了我解决方案,而没有添加 mkdir 命令,这是命令行:
\n\nyoutube-dl --download-archive archive.txt -o \'%(playlist_title)s/%(title)s-%(id)s.%(ext)s\' "$url"\nRun Code Online (Sandbox Code Playgroud)\n 我需要通过 creatbyproc.d 监视从未知应用程序到已知目录的写入。我将不得不让它启动并运行长达 36 小时,如果没有任何过滤器而不填满整个 HDD,这是不可能的。
这些日志很快就会变得非常大,我需要一种方法来只记录特定信息。
目前我的命令是:
sudo creatbyproc.d > /Users/MyUser/output.txt
Run Code Online (Sandbox Code Playgroud)
一个好的答案是按文件夹过滤: /private/tmp/
一个很好的答案将允许通配符过滤: /private/tmp/*.txt
这是我的代码:
#!/bin/bash
if [[ -d ~/viwiki ]]; then
cd ~/viwiki
else
mkdir ~/viwiki
cd ~/viwiki
fi
if ! [[ -d ./log ]]; then
mkdir log
mkdir log/log
mkdir "log/wget"
elif ! [[ -d ./log/log ]]; then
mkdir log/log
elif ! [[ -d "./log/wget" ]]; then
mkdir "log/wget"
fi
Run Code Online (Sandbox Code Playgroud)
运行时,出现错误:
tuankiet65@UbuntuPC:~$ sh viwik/test2.sh
viwik/test2.sh: 2: viwik/test2.sh: [[: not found
viwik/test2.sh: 8: viwik/test2.sh: [[: not found
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我有两个文件,一个包含模式列表,另一个需要根据这些模式进行更改。到目前为止,我一直在尝试
cat patterns.txt| xargs -n1| sed 's/patternfromfile/subtitution/'
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将 xargs 输入到 's/here//'
谢谢
我写了一个脚本来转换文件夹中的图像。该脚本使用 for 循环:
我=“1”
对于 *.jpg 格式的文件;做
outputFile=$(echo "image"$(echo $i))
转换 "$file" -resize 50x50 $outputFile
i=$[i+1]
完毕
我想要做的是允许脚本在多个文件类型扩展名上运行。现在我试过这样做:
对于 *.jpg *.JPG *.jpeg 格式的文件;做 .... 完毕
我遇到的问题是,如果您在一个包含所有 *.JPG 而没有 *.jpg 的文件夹中,即使没有图像,脚本仍然会碰撞 i+1,因为它无论如何都会运行 for 循环,但找不到任何 *.jpg 都会转到 *.JPG。
如何定位多个文件扩展名而不按类型自行运行?例如,它们的语法是这样的:
用于 [*.jpg | 中的文件 *.JPG]; 做 ...
?
这样我的输出文件夹总是包含像这样标记的图像:
image1.jpg
image2.jpg
image3.jpg
等等。而不是以
一个文件夹缺少 image1.jpg 结束,因为它没有 *.jpg 首先运行。
如何find列出每个文件但从搜索中排除少数目录?
find / -type f -not -path "./foo*" -not -path "/bar*" -print
Run Code Online (Sandbox Code Playgroud)
我在其他 stackexchanges 上看到过示例,例如./,但我尝试过的似乎都不起作用。
这有点有效:
find / -type f -not -path "*foo*" -not -path "*bar*" -print
Run Code Online (Sandbox Code Playgroud)
但事实并非如此;它还从搜索结果中排除名为“foo”和“bar”的文件。
有没有办法在字符串变量的开头和结尾插入引号?
我有这个变量说:
string="desktop/first folder"
Run Code Online (Sandbox Code Playgroud)
如果我回应这个,它会显示:
desktop/first folder
Run Code Online (Sandbox Code Playgroud)
我需要将字符串存储为:
"desktop/first folder"
Run Code Online (Sandbox Code Playgroud) 我有一个 Zip 文件,其名称开头带有一个连字符,比方说 '- stuff.zip'
如果我需要移动或复制文件,这意味着我需要使用双连字符,这样文件名就不会被解释为一个选项:
cp -- '- stuff.zip' '- stuff2.zip'
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试对这个文件使用解压缩,那是行不通的:
unzip -l -- '- stuff.zip'
error: -fn or any combination of -c, -l, -p, -t, -u and -v options invalid
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有我能想到的简单和双引号、反斜杠、变量中的文件名的组合,但我无法让它工作。我无法重命名文件,因为脚本将在只读文件系统上运行。
有效的一件事是使用 find :
find -maxdepth 1 -name '- stuff.zip' -exec unzip -l {} \;
Run Code Online (Sandbox Code Playgroud)
但是非常不方便。