我们如何从大型 tar.gz 文件中提取特定文件?我在这个问题中找到了从 tar 中提取文件的过程,但是,当我在那里尝试提到的命令时,出现错误:
$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
然后我如何从中提取文件tar.gz?
如何重命名特定目录中的所有文件,其中文件的名称中包含空格和特殊字符($ 和 @)?
我尝试使用以下rename命令将所有空格和特殊字符替换为 _:
$ ls -lrt
total 464
-rwxr-xr-x. 1 pmautoamtion pmautoamtion 471106 Jul 17 13:14 Bharti Blocked TRX Report Morning$AP@20150716.csv
$ rename -n 's/ |\$|@/_/g' *
$ ls -lrt
total 464
-rwxr-xr-x. 1 pmautoamtion pmautoamtion 471106 Jul 17 13:14 Bharti Blocked TRX Report Morning$AP@20150716.csv
$
Run Code Online (Sandbox Code Playgroud)
该命令有效,但不会对文件名进行任何更改,也不会返回任何错误。如何解决这个问题,还有其他方法吗?
有时在访问各种目录时,大多数情况下我会记住我们 Linux 系统下目录的名称或至少部分名称。但是有些目录以第一个字符大写或名称中间的一个字符开始命名为大写。
任何人都可以建议我如何在cd命令 case INSENSITIVE之后设置参数,这样如果我执行cd BackupDirectory或cd backupdirectory它可以输入目录名称 BackupDirectory。
当然,我不想为其他用户搞砸,所以如果上述是可能的,那么更改是否可能仅应用于我正在使用的会话而不影响其他用户?
好的,我试过了 set completion-ignore-case,但这不起作用。如果我输入cd b和/Tab或Esc Esc填充目录名称而忽略大小写,它只会有所帮助。但是,我需要的是,如果我执行 a cd backupdirectory,它只会忽略大小写并BackupDirectory自行进入。
我正在尝试使用useradd使用 root 凭据的命令创建新用户,但当我使用 PuTTY 控制台使用其凭据登录新创建的用户时,我可以输入用户名,但是当我提供密码时,它挂在那里很长时间,直到 PuTTY 窗口会话超时发生并且窗口关闭。但是,当我使用 root 凭据时,它会很快进入会话。
我尝试检查AllowUsers下文件,/etc/ssh/sshd_config但没有找到任何匹配的条目,因此,我手动尝试添加我创建的用户名AllowUsers temipuser在哪里temipuser。从另一个 PuTTY 控制台发布此更改后,我再次尝试输入此用户名,但它再次相同。我完全不知道为什么会发生这种情况。
另一件事是,如果我向文件中temipuser的AllowUsers条目添加任何用户,比如说只是,sshd_configroot 用户仍然可以访问还是无法访问?我不想在这里搞砸事情。我了解AllowUsers只允许指定用户并拒绝其他用户。
我想使用 shell 脚本从另一台服务器拉取文件。我已经编写了一个脚本,我可以在其中执行此操作,但我希望该脚本以非交互方式工作,这样它就不会提示我输入密码,并且如果我对其进行硬编码并让脚本具有所需的内容,则它会自动工作。
FTP然而,我之前已经这样做了,在新服务器中,FTP连接被阻止,我们只能使用SCP或SFTP。我之前的脚本是这样的,它曾经使用过FTP并且在不要求密码的情况下很好地完成了工作:
#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT
Run Code Online (Sandbox Code Playgroud)
我SFTP在脚本中尝试了类似的 for并且它适用于交互模式,但就像FTP我无法使用SFTP. 以下是我从远程机器获取特定文件的代码:
#!/bin/bash -vx
path="/tmp/testanks"
sftp username@100.XXX.XX.XXX <<EOT
cd $path
get Bharti*
quit
EOT
Run Code Online (Sandbox Code Playgroud)
我如何以一种可以为该脚本提供用户名和密码以使其非交互式的方式更改上述代码。
我知道提供硬编码密码是一个安全问题,但现在我更关心的是立即获取文件。如果我能获得安全的方法以及我想要的答案,我将非常感激。
我在 Linux 中有一些应用程序,它们每个创建大约 41 MB 的日志文件。一旦这 41MB 在文件中完成,应用程序就会从 切换log.1到log.2并开始覆盖。log.2log.1
我想备份这些文件,只要新文件log.2的大小超过 1MB,它就会备份(gzip 并存储在另一个位置)其他文件(log.1)。
我一直在使用一个脚本,它在文件达到 41MB 时进行备份,但这里的问题是有时这个 41MB 文件备份由脚本处理,而数据仍在以巨大的速度写入同一个文件。由于丢失了几秒钟的日志数据,这就是我尝试在新文件达到 1MB 或其他文件时备份其他文件的替代方法的原因,以便我确定其他文件已完成写入。
知道我该怎么做吗?
我有一个 CSV 文件,我想进行多次检查以从 CSV 文件中检索数据。我有以下条件需要注意,我正在尝试在 shell 脚本中使用 awk 来满足这些条件:
if ( ColD == "TRX" || ColD == "TX" )
{
if (ColJ == "BTS INT UNAFF" || ColJ == "LOCAL MODE")
{
if (ColL !="OPER" && ColL != "") #Second Value shouldn't be blank
{
if (ColU != "2000")
{
if (ColA != "*_*") # Should not contain _ in the value.
then
print all the resulting filtered columns of this csv file
Run Code Online (Sandbox Code Playgroud)
这里 ColA、ColB 等是我用作 $1、$2 等的列号。
现在我知道单个 if …
我写了一个脚本,我需要用同一个脚本传递几个参数,脚本在使用 cron 一段时间后执行。为了确保没有运行脚本的多个实例,我进行了检查以检查脚本的进程是否正在使用ps -ef | grep -v grep | grep Connection_Manager.sh
当我使用ps -ef. 如何检查脚本运行过程中正在使用的参数?
我有一个 while 循环,它从具有城市名称的文件中读取数据:
城市名称:
COIMBATORE
MADURAI
PONDICHERRY
SALEM
TRIPUR
TIRUCHI
TIRUNELVELI
TUTUCORIN
VELLORE
Run Code Online (Sandbox Code Playgroud)
并awk在while循环中使用命令并尝试在awk语句中再次读取 while 循环体中定义的变量,但是,这不起作用并给我错误。我知道awk需要为其主体单独定义变量,以便awk了解变量用法并可以读取其值。
我的 while 循环如下所示:
while read city
do
awk -F, '{
if ( $1 == "ACTIVE" ) &&
( $2 == "$city" )
print $1
}' siteDBName >> count
SUM=`awk '{ sum += $1 } END { print sum }' count`
done < city_name
Run Code Online (Sandbox Code Playgroud)
其中 siteDBName 文件包含多列数据,如下所示:
站点数据库名称:
ACTIVE,COIMBATORE,MGT500,1,5,7....
INACTIVE,MADURAI,GT500,5,6,7...
ACTIVE,SALEM,TR600,6,4,6...
ACTIVE,COIMBATORE,GT500,4,5,6...
..
..
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试使用 …
我正在尝试在 bash 脚本中复制一些文件名中带有空格和$,@符号的文件,但该脚本无法复制文件,说明它找不到该文件。我可以看到它将文件名中的每个空格分隔的单词视为另一个文件名,这就是它失败的原因。以下是我的代码:
cp "$TRX_SOURCE_PATH/*TRX*" $DEST_PATH
Run Code Online (Sandbox Code Playgroud)
错误:
cp: cannot stat `/pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/*TRX*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我做一个ls我可以看到文件名:
# ls -lrt /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/*TRX*
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report Morning$UW@20150801.xls
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report Morning$KK@20150801.xls
-rw-r--r--. 1 root root 856064 Jul 27 11:54 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report Morning$HP@20150801.xls
-rw-r--r--. 1 root root 1254400 Aug 1 04:43 /pmautomation/PM/Report_Output/CFBLOCKTRUMNG/2015-08-01/Bharti Blocked TRX Report Morning$AP@20150801.xls
-rw-r--r--. …Run Code Online (Sandbox Code Playgroud)