标签: shell-scripting

将所有文件移动到自己的文件夹

在 linux 机器上有什么方法可以将目录中的每个文件移动到它们自己的子目录中(即创建一个以它命名的目录并将其移入)?

linux files shell-scripting

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

Shell 脚本:在访问日志中查找指定日期时间段内响应 500 的条目

有人可以帮助我使用 shell 脚本来计算指定时间范围内访问日志中 500 个 HTTP 响应条目的数量吗?

shell-scripting

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

使用 utf8 编码执行 bash 脚本的问题

我有一个用 utf8 编码的 bash 脚本。

在脚本中,我使用 sed 命令§作为分隔符。

现在,当我运行执行此脚本时会sed抱怨分隔符。

如果我使用普通字符作为 ex 的分隔符,@那么一切正常。

我已经在 putty[set utf8 in putty] 中查看了脚本,并且字符看起来很好。

还有来自locale命令的Linux 默认字符集显示

 LC_CSET=en_US.UTF-8 
Run Code Online (Sandbox Code Playgroud)

可能出了什么问题?

早些时候,我曾经对 shell 脚本使用 windows-1252 编码,这曾经有效。

bash utf-8 sed shell-scripting

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

在安装脚本中检测失败

我写了一个安装脚本来安装我喜欢的程序和设置后我得到一个新的服务器。

apt-get install git
git clone http://me@myvimsetting.github.com .vim
ln -s .vimrc .vim/vimrc
...
Run Code Online (Sandbox Code Playgroud)

但是,如果在安装过程中发生错误,我该如何中断安装脚本并记录错误?例如,如果github服务器宕机,创建一个指向不存在的vimrc.

(或者您有更好的方法来初始化服务器?)

bash shell-scripting

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

在 .reg 脚本中包含当前目录

我有一个 .reg 脚本:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SeleniumRC\Parameters]
"Application"="C:\\Program Files (x86)\\Java\\jre6\\bin\\java.exe"
"AppDirectory"="D:\\SeleniumRC"
"AppParameters"="-Xrs -jar selenium-server-standalone-2.0b1.jar"
Run Code Online (Sandbox Code Playgroud)

我想从 .bat 文件运行它,但我想传递当前目录而不是 D:\SeleniumRC。我怎样才能做到这一点?

windows windows-registry shell-scripting

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

回声 $? 远程执行时不起作用

当我执行如下命令时,它会按预期给我一个输出,但是当我在远程服务器上运行相同的命令时,它总是给我echo $?作为0.

locally
# <some command>
# echo $?

Remotely
# ssh server " <some command >; echo $? "
Run Code Online (Sandbox Code Playgroud)

现在,在远程执行的情况下,我总是得到0的echo $?输出。

scripting bash shell-scripting

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

在 echo 中抑制 * 的扩展

我正在编写一个脚本,该脚本每天动态执行一些查询。这些查询来自数据库中的一个表。

以下是查询表的示例输出:

+---------------+-------------------------------+---------+
| query_name    | query                         | userid  |
+---------------+-------------------------------+---------+
| All_User      | select * from users LIMIT 10; | jmatthe |
+---------------+-------------------------------+---------+
Run Code Online (Sandbox Code Playgroud)

现在,我必须select * from users LIMIT 10;动态执行查询。我正在读取输出的每一行并存储来自输出的查询。

query_name=$(echo $query | cut -d\| -f1)
query_sql=$(echo $query | cut -d\| -f2)
query_user=$(echo $query | cut -d\| -f3)
Run Code Online (Sandbox Code Playgroud)

现在这里是问题出现的地方。因为我的行中包含一个*字符,所以echo $query扩展*以将其替换为当前目录中的文件。所以基本上,我的query_sql商店是这样的。

select batchemail.sh query_output.txt from tbl_query
Run Code Online (Sandbox Code Playgroud)

我想保留*行中的 ,以便在我的query_sql变量中得到相同的结果。我希望我的query_sql变量存储原始数据。

select * from tbl_query
Run Code Online (Sandbox Code Playgroud)

有人可以指导我吗?

mysql command-line-interface unix-shell echo shell-scripting

3
推荐指数
2
解决办法
192
查看次数

shell脚本中文件名的年月日

我有像下面这样的文件名

adn_DF9D_20140515_0001.log
adn_DF9D_20140515_0002.log
adn_DF9D_20140515_0003.log
adn_DF9D_20140515_0004.log
adn_DF9D_20140515_0005.log
adn_DF9D_20140515_0006.log
adn_DF9D_20140515_0007.log
Run Code Online (Sandbox Code Playgroud)

我想从文件名中获取年、月、日并创建目录

前任: [[ ! -d "$BASE_DIR/$year/$month/$day" ]] && mkdir -p "$BASE_DIR/$year/$month/$day";

如何实现这一目标并分享您的想法/脚本

scripting awk shell-scripting

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

寻找一种包装命令并提供自己的外壳的方法

我正在使用命令行按照相同的模式手动执行相同的命令多次。现在我正在寻找一种方法来简化它,只需输入一次命令即可。

让我们看一个普通的 docker 示例:

docker ps
docker ps -a
docker ps -l
docker stop x 
docker start x 
docker start y 
docker logs y
docker logs -f z
Run Code Online (Sandbox Code Playgroud)

此示例也适用于更多命令,例如 git、brew、gulp、gcloud。

现在我正在寻找某种命令包装外壳,它允许我编写with docker将任何命令包装在嵌套/子外壳中的命令。

然后我不需要在docker命令前面加上命令,只需调用:

>ps
# does docker ps and displays result 
>stop x
# prepends docker so docker stop x is actually executed   
CTRL+C # to exit the command wrapper 
Run Code Online (Sandbox Code Playgroud)

像这样的东西已经存在了吗?我在谷歌上搜索它,但无法正确描述它,因此我没有找到任何东西。

linux shell command-line-interface shell-scripting

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

将 curl 与 cookie 结合使用

我希望有人可以帮助我解决这个问题。我已经尝试了一段时间了,有各种各样的变化,似乎无法让它发挥作用。

我正在尝试编写一种方法来登录https://login.three.ie/以从 */My_account_balance 检查帐户余额

我已经尝试了各种 wget 命令,但从我读到的内容来看,curl 更有可能完成这项任务。

我一直在尝试我在网上遇到的变体,包括从这里开始的 stackoverflow,但似乎没有任何效果。

这是我尝试的最后一个:

    curl -X POST -c cookies.txt -u "Uern@me:P@ssw0rd" https://login.three.ie/
Run Code Online (Sandbox Code Playgroud)

这确实将 cookie 文件保存在此处:

    $ cat cookies.txt

    Netscape HTTP Cookie File

    #http://curl.haxx.se/docs/http-cookies.html
    This file was generated by libcurl! Edit at your own risk.
    HttpOnly_login.three.ie        FALSE   /       FALSE   1433988274
    laravel_session eyJpdiI6IkFZWmxvZ2oyXC9NNGVIbHVpejZwRWp3PT0iLCJ2YWx1ZSI6Imxkd25UKzBoMldiQlhYZVJnVUpuNUVsblZ1cGJYZWcwM2E1bTtIWHRiQ2pwV0VwemJ4NFlYcDlzTndSeFRNanpwdDhMMTIrS2RGZGdGd0RNZU1yREJ3PT0iLCJtYWMiOiI0NWUwYzc1TY4ODI3ZmY3ODY5NjliODkxODMyODIzMjQwNmNkNjljNTE2NzQxNmQ4MzhhNDljNTdjM2QwZGY1In0%3D
Run Code Online (Sandbox Code Playgroud)

但是当我尝试重新使用 cookie 时,它​​看起来像是重定向或其他东西,因为这就是我得到的:

    $ curl -b cookies.txt  https://my3account.three.ie/My_account_balance
    <html><head><title>302 Moved Temporarily</title></head>
    <body bgcolor="#FFFFFF">
    <p>This document you requested has moved temporarily.</p>
    <p>It's now at <a href="https://sso.three.ie/mylogin//login?auth-        
    required=seamless&amp;service=https&#37;3A&#37;F&#37;                   
    2Fmy3account.three.ie&#37;2FMy_account_balance">https://sso.three.ie/mylogin//login?auth-required=seamless&amp;service=https&#37;3A&#37;2F&#37;2Fmy3account.three.ie&#37;2FMy_account_balance</a>.</p>
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么。有没有人知道出了什么问题,或者更好,如何解决这个问题?

谢谢

scripting bash wget curl shell-scripting

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