标签: command

清理旧日志文件的命令

我试图用 Cron Jobs 自动清理我的 Ubuntu 系统

我试图简化这个:

sudo find /var/log -type f -name "*.1.gz" -delete
sudo find /var/log -type f -name "*.2.gz" -delete
sudo find /var/log -type f -name "*.3.gz" -delete
sudo find /var/log -type f -name "*.4.gz" -delete
,etc...
Run Code Online (Sandbox Code Playgroud)

像下面这样的一个命令但不起作用,可能是因为我不知道......

for i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的但也没有奏效...:

$i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"
i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"
i=[^0-9]+$; sudo find /var/log -type f -name "*.$i.gz"
Run Code Online (Sandbox Code Playgroud)

我看不到最后四个的任何输出......有人产生错误......

那么正确的命令/语法是什么?
以及任何其他保持我的“迷你”服务器清洁的想法?

其他问题:如果我运行sudo …

command-line cron logs terminal command

4
推荐指数
1
解决办法
4万
查看次数

使用 man 命令一次显示所有页面

假设我运行命令man who,我必须一直按空格或回车才能显示所有内容。有没有办法一次显示所有内容?

man terminal command

4
推荐指数
2
解决办法
948
查看次数

可以在没有 shell 的情况下执行命令吗?

我正在开发一个二进制可执行程序命令来执行程序并将输出返回到文本字段中。

命令的参数涉及命令本身,因为它将在命令行上键入,以及目录。所以执行操作的例程首先切换到目录,然后执行命令。

例如,如果我想some.cmd在目录中执行命令,/home/user参数是command = 'some.cmd'directory = '/home/user'

我发现这some.cmd是行不通的,但如果我将命令更改为/home/user/some.cmd命令有效。但是该命令ls -l有效。我还注意到cd无法识别该命令。如果我通过ssh设置命令远程运行它,ssh user@localhost 'cd /home/user && ./some.cmd'它就可以工作。

似乎在 shell 中执行命令时存在的某些设置在直接运行时不存在,但是通过这样做ssh似乎可以为其创建设置。

对此有什么解释吗?

更新: 经过一些查询,我了解到用于执行命令的 API 没有在 shell 中执行,或者没有在控制台可用的正常环境中执行。使用/bin/sh -c "cd ..."选项执行命令后,问题不再存在。这是ssh user@localhost 'command ...'给我的环境。我不太确定技术细节,但显然,当您在普通 shell 中执行时,可用环境的存在并不总是可用于由操作系统直接执行的命令。

shell ssh command

4
推荐指数
1
解决办法
4545
查看次数

快速将目录更改为类似的目录结构?

在测试环境中,我们有一个日志文件的目录结构,如下所示:

/var/Logs/int/app-id/region-code/log/file-name.log
/var/Logs/sat/app-id/region-code/log/file-name.log
/var/Logs/cat/app-id/region-code/log/file-name.log
Run Code Online (Sandbox Code Playgroud)

每个环境有许多应用程序 ID,每个应用程序 ID 有多个区域代码(取决于应用程序)。

是否有一个命令可以让我将目录从 int 更改为 sat,并使路径的所有其余部分保持不变?类似于以下内容:

$ pwd
/var/Logs/int/abc/01/log
$ cdswap int sat
$ pwd
/var/Logs/sat/abc/01/log
$ cdswap abc def
$ pwd
/var/Logs/sat/def/01/log
Run Code Online (Sandbox Code Playgroud)

如果这也有效,那将是一个奖励:

$ cdswap def/01 ghi/02
$ pwd
/var/Logs/sat/ghi/02/log
Run Code Online (Sandbox Code Playgroud)

如果没有这样的命令,我可以设置一个别名来有效地做同样的事情吗?那会怎样?

谢谢你的帮助!

cd-command command

4
推荐指数
1
解决办法
1037
查看次数

是否有 Unix 命令来引用输入行?

我想知道是否有一个过滤器命令来引用输入行。

所以当管道:

line number 1
line number 2
line number 3
Run Code Online (Sandbox Code Playgroud)

到它,你得到:

"line number 1"
"line number 2"
"line number 3"
Run Code Online (Sandbox Code Playgroud)

我需要这个命令来通过管道传输行以xargs确保xargs将其line number 1视为一个参数而不是三个参数。我相信它还有许多其他用途。

有这样的命令吗?这叫什么?

shell bash xargs command

4
推荐指数
2
解决办法
1374
查看次数

如何将一系列文件并排连接在一起而不会看到输出中的列之间有任何间隙?

如何将多个文件连接在一起,以使最终输出中的列之间没有任何间隙?例如,如果以下是两个输入: input1.txt

22211 21111 11111 
22222 22222 11111
22222 11111 23211
Run Code Online (Sandbox Code Playgroud)

输入2.txt

22211 21111  
22222 20002 
22222 11111 
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是这样的:

22211 21111 11111 22211 21111 
22222 22222 11111 22222 20002 
22222 11111 23211 22222 20002 
Run Code Online (Sandbox Code Playgroud)

但问题是当我使用这个命令时:

paste input1.txt input2.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

然后 out.txt 上有一个空白,其中两个文件连接在一起,例如:

22211 21111 11111     22211 21111 
22222 22222 11111     22222 20002 
22222 11111 23211     22222 20002
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能看不到这个差距?我应该提到我有 37 个 txt 文件(hap1.txt hap2.txt ..hap37.txt),我希望将它们并排连接在一起。请问有什么建议吗?

linux command

4
推荐指数
1
解决办法
209
查看次数

在 .csv 文件中转换字符编码的 Unix 命令

我需要一个 Unix 命令来将 UNICODE 格式的 .csv 文件转换为 ANSI 格式。

该文件是从 Cognos 环境导入的,我无法对 cognos 中的格式进行任何更改。

character-encoding command

4
推荐指数
1
解决办法
2万
查看次数

如何执行使用 echo 和 sed 生成的 shell 命令?

我试过这样做:

echo " mv /server/today/logfile1 /nfs/logs/ && gzip /nfs/logs/logfile1" | sed 's|logfile1|logfile2|g'
Run Code Online (Sandbox Code Playgroud)

它打印:

mv /server/today/logfile2 /nfs/logs/ && gzip /nfs/logs/logfile2
Run Code Online (Sandbox Code Playgroud)

这是一个 bash 命令。我怎样才能让它被执行,而不仅仅是打印它?

bash sed command

4
推荐指数
1
解决办法
4万
查看次数

管道输出以什么格式从一个命令/程序发送和接收到另一个命令/程序?

当一个命令以什么方式或以什么格式通过管道传输到另一个命令时,管道输出存在/发送?是临时文件吗?是字符串吗?接收管道输出的命令如何解码/读取该输出?


例子:

echo "Someone string" | ./program | tail
Run Code Online (Sandbox Code Playgroud)

程序“ program”是否echo以文件形式接收输出?程序将如何读取该输入?

linux pipe executable command

4
推荐指数
1
解决办法
411
查看次数

ls -ad */ 不会显示隐藏目录

pwd是我的主目录。ls */ -d显示目录。

~$ ls */ -d
Blog/  Desktop/  Documents/  Downloads/  Music/  Pictures/  Public/  Templates/  Videos/
Run Code Online (Sandbox Code Playgroud)

ls -a显示所有隐藏的目录和文件。隐藏目录- .cache.local等等。

$ ls -a
.                        .cache      .gnupg       .xsession-errors.old
..                       .config     .gtkrc-2.0   Templates
.bash_history            Desktop     .gtkrc-xfce  Pictures      .themes
.bash_logout             .linuxmint   .pki          Videos
.bashrc                  Documents   .local       .profile      .viminfo
Blog                     Downloads   .mozilla     Public        .Xauthority
Music        .ssh          .xsession-errors
Run Code Online (Sandbox Code Playgroud)

但是当我运行时ls -ad */,它不会显示任何隐藏目录。有人愿意解释吗?

$ ls -ad */ 
Blog/  Desktop/  Documents/  Downloads/  Music/  Pictures/  Public/  Templates/  Videos/
Run Code Online (Sandbox Code Playgroud)

linux command-line ls command

4
推荐指数
2
解决办法
948
查看次数

标签 统计

command ×10

linux ×3

bash ×2

command-line ×2

shell ×2

terminal ×2

cd-command ×1

character-encoding ×1

cron ×1

executable ×1

logs ×1

ls ×1

man ×1

pipe ×1

sed ×1

ssh ×1

xargs ×1