我有一个包含以下内容的文件:
6 192.168.0.4
13 192.168.0.2
2 192.168.0.9
Run Code Online (Sandbox Code Playgroud)
第一个数字是右侧 IP 尝试从同一网络内登录我的机器 (ssh) 的次数。目标是在尝试次数超过 3 次时使用 netfilter 阻止该 IP。这里,有 2 个条目符合条件。注意:可能有 3 个以上的条目。
我想不出一种方法来逐行排序这个文件(我对 BASH 非常陌生)。这是我尝试过的:
#!/bin/bash
file="/home/foo/documents/iptxt"
while IFS='' read line || [[ -n "$line" ]]; do
char1=`awk '{ print $1 }' $file`
char2=`awk '{ print $2 }' $file`
if $char1 -gt 3
then
echo "$char2 has tried to login $char1 times
fi
done <$file
Run Code Online (Sandbox Code Playgroud)
这给出了指向第 5 行(if 语句)的“未找到命令”错误。难怪,因为我回应了 $char1_attempt 并且它给出了:
6 13 2
6 13 2
6 13 2
Run Code Online (Sandbox Code Playgroud)
目前,J …
我想从我编写的 bash 脚本中设置一个环境变量。所以我创建了一个 bash 脚本并将其命名为set.sh. 其内容如下:
#!/bin/bash
export DEV_SRC="/home/m/mydata/sourecCode"
echo $DEV_SRC
Run Code Online (Sandbox Code Playgroud)
当我运行这个脚本时,输出是
/home/m/mydata/sourecCode
Run Code Online (Sandbox Code Playgroud)
但是,如果我在运行上述脚本的同一终端上运行此代码,
echo $DEV_SRC
Run Code Online (Sandbox Code Playgroud)
我看不到任何值,因此我认为该值未导出。
为什么不导出值?
我想从我的目录中删除在 04/29/2018 下午 4:00 之前创建的文件。
谢谢
我正在编写一个使用 psql (Postgresql) 的 bash 脚本。
DATABASE='scifi'
sudo -u postgres psql
count=SELECT COUNT(*) FROM (SELECT datname FROM pg_catalog.pg_database WHERE lower(datname)=lower($DATABASE)
Run Code Online (Sandbox Code Playgroud)
我想删除数据库(如果存在)并使用相同的名称重新创建并分配给用户。
还有其他与 psql 相关的操作。
我的问题是,一旦我输入 psql,我就无法传递 bash 命令和检索信息。我有点理解为什么(因为我正在从 bash 转移到 psql),但我必须找到解决方案。
目前,我正在使用一个 shell 脚本并制作一个系统,我在其中编写一个 shell 脚本,main.sh并且在同一个目录中有一个包含其他 shell 脚本的目录。结构是:
root_directory
|___scripts
| |___script1.sh
| |___script2.sh
| |___script3.sh
|
|___main.sh
Run Code Online (Sandbox Code Playgroud)
现在main.sh是基本文件。在此,main.sh我将脚本称为
bash ./scripts/script1.sh
bash ./scripts/script2.sh
Run Code Online (Sandbox Code Playgroud)
等等。
当我main.sh从root_directory目录运行文件时,一切正常。但是我想全局安装整个系统,因为我可以main.sh从任何地方运行文件并且它可以找到scripts子文件夹。
如果有任何疑问,请随时发表评论。
我今天开始为秒表使用 Python 脚本,并注意到我打开的所有其他东西(Firefox、Sublime Text、终端)都显着变慢。系统监视器告诉我我的秒表脚本使用了大约 24% 的 CPU。如此琐碎的事情使用这么多资源似乎很奇怪。
我能得到一些关于如何改进这一点的建议吗?我真的很想在后台运行它并跟踪我花在各种事情上的时间。
这是脚本:
#! /usr/bin/env python3
import tkinter
import time
import datetime
import numpy as np
import subprocess
class StopWatch(tkinter.Frame):
@classmethod
def main(cls):
tkinter.NoDefaultRoot()
root = tkinter.Tk()
root.title('Stop Watch')
root.resizable(False, False)
root.grid_columnconfigure(0, weight=1)
root.geometry("200x235")
padding = dict(padx=5, pady=5)
widget = StopWatch(root, **padding)
widget.grid(sticky=tkinter.NSEW, **padding)
icon = tkinter.PhotoImage(file='stopwatch.ico')
root.tk.call('wm', 'iconphoto', root._w, icon)
root.mainloop()
def __init__(self, master=None, cnf={}, **kw):
padding = dict(padx=kw.pop('padx', 5), pady=kw.pop('pady', 5))
super().__init__(master, cnf, **kw)
self.grid_columnconfigure(0,weight=1)
self.__total = 0
self.start_time=datetime.datetime.now().strftime("%H:%M")
self.start_date=datetime.datetime.now().strftime("%m/%d/%Y")
self.start_dt=tkinter.StringVar(self, self.start_time+" …Run Code Online (Sandbox Code Playgroud) 我有一个 bash 脚本从 .vcf 文件中提取一些信息。我如何以某种方式更改此脚本以同时处理一堆 .vcf 文件,并为每个文件返回单独的 .txt 输出?
这是我的脚本
#!/usr/bash
#outfilename
outname=$(echo $1".parsed.txt")
#Header for output file
echo -e "Chrom"'\t'"Position"'\t'"Ref"'\t'"Alt"'\t'"TumorReadCount"'\t'"TumorVariantAlleleCount"'\t'"TumorReferenceAlleleCount"'\t'"NormalReadCount"'\t'"NormalVariantAlleleCount"'\t'"NormalReferenceAlleleCount"'\t'"VAF" > $outname
while read -r line ;
do;
#Basic information
chrom=$(echo $line | sed 's/ /\t/g' | cut -f 1) #&& echo $chrom;
Pos=$(echo $line | sed 's/ /\t/g' | cut -f 2) #&& echo $Pos;
Ref=$(echo $line | sed 's/ /\t/g' | cut -f 4)
Alt=$(echo $line | sed 's/ /\t/g' | cut -f 5)
#Tumor sample read, …Run Code Online (Sandbox Code Playgroud) 您好,我有一项任务是查找域过期的剩余天数。的输出应保持的天数(整数),所以我试图这样我可以通过域作为参数
例如:- 我的域 - www.xplosa.com
脚本文件:- ./domain-exp.sh
执行方法:- ./domain-exp.sh www.xplosa.com
#!/bin/bash
target=$1
# Get the expiration date
expdate="$(whois $1 | egrep -i 'Registrar Registration Expiration Date:' | head -1)"
# Turn it into seconds (easier to compute with)
expdate=("$expdate" +%s)
# Get the current date in seconds
curdate=$(date +%s)
# Print the difference in days
echo ($expdate - $curdate) / 86400
Run Code Online (Sandbox Code Playgroud)
这不是我期望的输出,请帮助我解决这个问题,谢谢。
我想启用或禁用终端中的麦克风。我该怎么做?例如,我sudo modprobe -r uvcvideo用来禁用网络摄像头并sudo modprobe uvcvideo启用它。是否有对麦克风进行相同操作的命令?
我在运行 Ubuntu 的 VM 实例中使用 ffmpeg 将从各种流媒体站点下载的一些视频编码到 HEVC。目前我使用 bash 脚本来转换目录中的所有这些文件。这些视频的总体比特率在 300 kb/s 到 1500 kb/s 之间变化。在我的测试中,对所有这些视频使用相同的 CRF 会在高比特率视频的情况下产生更大的输出文件,或者在低比特率的情况下产生低质量的视频。目前我手动检查比特率并将类似的比特率文件移动到一个目录并每次都相应地更改 CRF。这是我用来检索比特率的命令:
find . -name "*.mp4" -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' "
Run Code Online (Sandbox Code Playgroud)
这是 bash 脚本。
#!/bin/bash -e
for i in ~/ffmpeg/*.mp4;
do
ffmpeg -i "$i" -c:v libx265 -crf 26 -c:a libopus -b:a 48k -vbr on -compression_level 10 -frame_duration 60 -application audio "${i%.*}.mkv"
mv "${i%.*}.mkv" ~/ffmpeg/hevc …Run Code Online (Sandbox Code Playgroud) scripts ×10
bash ×8
command-line ×7
18.04 ×1
date ×1
encoding ×1
ffmpeg ×1
files ×1
microphone ×1
postgresql ×1
python ×1
rm ×1
tkinter ×1