标签: bash

根据登录凭据更改 bash 提示符中显示的主机名

我在一台服务器上托管多个域。

我希望能够更改 bash 提示符中显示的主机名,以指示我在 ssh 进入服务器时选择的主机名。

我的提示如下:

\u@\h
Run Code Online (Sandbox Code Playgroud)

这显示为:

user@hostname
Run Code Online (Sandbox Code Playgroud)

我如何更改\h以显示我登录的域(blah.net、hmm.com 等)?

ssh bash hostname

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

从远程 FTP 服务器删除超过 x 天的文件

我有一个远程 FTP 服务器,我通过 cronjob 存储一些备份。

问题是我只有一点空间,所以我进行增量备份。我想将备份保留大约 14 天。

除了 FTP 之外,我没有任何其他访问服务器的权限,而且我现在不知道如何删除超过 x 天的文件。每个文件都有一个名称,其中包含日期

yxzNamezxy-date-y-m-d.tar.bz2 (datev-20100111.tar.bz2(
Run Code Online (Sandbox Code Playgroud)

希望在这里得到一些帮助。

干杯并感谢您希望得到的答案,

丹尼斯

/编辑

我正在尝试使用这部分代码的答案中提到的curl 东西

curl ftp://$FTP_SERVER --user $FTP_USER:$FTP_PASS --list-only > files.tmp
declare -a aFiles
let iCount=0
exec < files.tmp
while read sLine
do
        aFiles[$iCount]=$sLine
        ((iCount++))
done

echo -e "\n Files: \n\n\n"
echo ${aFiles[@]}

echo -e "\nfor ...\n\n\n"
for sFile in $aFiles
do
        echo -e "\nFile:" $sFile
done
Run Code Online (Sandbox Code Playgroud)

但第二个循环没有给我超过 1 个文件名

干杯,

丹尼斯

linux bash ftp

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

如何阻止 PHP 执行 shell 命令?

如何阻止apache执行bash脚本?任何 php 脚本都无法在 bash 中执行命令(例如将添加链接到我的 php 和 html 文件的命令)。有没有办法做到这一点??

编辑:我脑子里有任何 bash 命令,而不仅仅是 .sh 文件

security php bash apache-2.2

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

使用 -c 标志以交互方式执行 bash 代码

我正在尝试使用解释器运行 shell 片段bash。使用该-c标志允许我直接向命令行提供命令,而无需写入文件。这是我的使用所必需的。

工作示例:

$ bash -c 'free -m'
Run Code Online (Sandbox Code Playgroud)

问题是我想要运行的实际 shell 片段中有单引号。

find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' 
Run Code Online (Sandbox Code Playgroud)

我认为简单地转义引号就可以了:

$ bash -c 'find / -type f -size +50M -exec ls -lh {} \; | awk \'{ print $9 ": " $5 }\''
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。它不执行该命令。

此外,同样的问题,我需要能够从命令行执行 Node.js,而不写入文件。

$ node -e 'console.log("hello");'
Run Code Online (Sandbox Code Playgroud)

上面的方法有效,但是:

$ node -e 'console.log('hello');'

and

$ node -e 'console.log(\'hello\');'
Run Code Online (Sandbox Code Playgroud)

两者都打破。

有想法吗?谢谢。

linux bash escaping

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

ubuntu 中 /proc/diskstats 的输出

谁能告诉我 /proc/diskstats 中的第 11 个字段吗?文档说它是对 I/O 花费的毫秒数进行加权。是不是像一秒钟内 DiskIO 花费的毫秒数?

我每 200 毫秒记录一次该值,并从中减去前一个值,观察到该值高达 7000。我需要绘制一张显示磁盘 IO 速率的图表。这是脚本:

#!/bin/bash

PREV_TOTAL=0

echo "" >> $1
while true; do

  numbers=( $(tail -3 < /proc/diskstats | head -2 | awk '{print $14}' ) )  ; 
  let "TOTAL=$((${numbers[0]} + ${numbers[1]}))"
  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
  time=`date +%s%N`
  echo "$time $DIFF_TOTAL" >> $1
  PREV_TOTAL="$TOTAL"
# Wait before checking again.
  sleep 0.2
done
Run Code Online (Sandbox Code Playgroud)

有人能解释一下这个领域吗?

linux ubuntu bash hard-drive

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

如何在从文件中获取的内容中转义双引号

statusfile.logto添加内容时,我试图转义双引号statusfile_truncated.log

我环顾四周,只是越来越困惑。你将如何实现它?

这是我到目前为止得到的:

#!/bin/bash

statusfile="statusfile.log"
statusfile_truncated="statusfile_truncated.log"
tail -n 50 $statusfile >> $statusfile_truncated
Run Code Online (Sandbox Code Playgroud)

statusfile.log 的内容:

2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
Run Code Online (Sandbox Code Playgroud)

statusfile_truncated.log 的内容应该是:

2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 …
Run Code Online (Sandbox Code Playgroud)

bash

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

$$ 和 $! 和有什么不一样?使用 /bin/bash -c 时

我试图理解@sysfault 在此评论中的“oneliner” :

/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &

我尝试了以下变化......

不同的 $$ 内外:

/bin/bash -c 'echo $$ && exec sleep 5' ; echo $$
14408
29700
Run Code Online (Sandbox Code Playgroud)

相同的pid(但在后台):

$ /bin/bash -c 'echo $$ && exec sleep 5' & echo $! 
[1] 8309
8309
$ 8309

[ 1 ]+  Done  /bin/bash -c 'echo $$ && exec sleep 5'
Run Code Online (Sandbox Code Playgroud)

$$ 和 $ 的不同 pid!:

/bin/bash -c 'echo $$ && exec sleep 5 & echo $!'                                 
6504
6503
Run Code Online (Sandbox Code Playgroud)

Kill …

php bash

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

如何从 bash 中的 base64 编码字符串运行命令?

我想从 bash 中的 base64 编码字符串运行命令。例如bHMgLWwgLwo=将等于ls -l。我该怎么做呢?

bash

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

除法在 bash 中不起作用

我想从文件中计算一些信息,但除法不起作用。如果我将 更改/为 a+-,则此计算正确。有任何想法吗?

#!/bin/sh
    FILE=/tmp/stats

    for EMPTY in $(cat $FILE |sed '1!d'); do (echo "Empty Servers $EMPTY | Empty-Servers=$EMPTY;"); done
    for SERVERS in $(cat $FILE |sed '2!d'); do (echo "Total Servers $SERVERS | Total=$SERVERS;"); done

    PERCENT=$(((EMPTY / SERVERS)*100))
    echo $PERCENT
Run Code Online (Sandbox Code Playgroud)

linux bash

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

如何快速测试 bash 中的路径以确定它的任何部分是否是符号链接?

如果我有这样一个带有符号链接的路径:

/this/one/two/three

是否有一个快速的单行代码来确定路径中的另外一个段是否是符号链接?例如,我想检测上面示例中的thisonetwothree是否是符号链接。

一种方法是将包含符号链接的路径与readlink -f <path>. 想知道是否有更快的方法。

bash symbolic-link

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

标签 统计

bash ×10

linux ×4

php ×2

apache-2.2 ×1

escaping ×1

ftp ×1

hard-drive ×1

hostname ×1

security ×1

ssh ×1

symbolic-link ×1

ubuntu ×1