我想知道运行脚本的最快方法是什么,我一直在读到在终端上显示脚本的输出与将其重定向到文件或/dev/null
.
因此,如果输出不重要,那么让脚本更快地工作的最快方法是什么,即使它是 minim 。
bash ./myscript.sh
-or-
bash ./myscript.sh > myfile.log
-or-
bash ./myscript.sh > /dev/null
Run Code Online (Sandbox Code Playgroud) 命令dmesg | grep console
返回:
Kernel command line: console=ttys6,115200 root=/dev/mmcblk1p2
rootwait rw
console [ttys6] enabled
Run Code Online (Sandbox Code Playgroud)
我想在启动后将其更改为 ttys3。是否可以?
我有一个 web 应用程序,它访问运行 Linux 的远程存储以获取一些文件,问题是远程存储当前有 300 万个文件,因此访问正常方式有点棘手。
所以我需要编写一个脚本,让它更容易使用,这个脚本将根据文件的创建日期和特别是它们的名称将文件重新组织到多个文件夹中,我制作了脚本并且它起作用了挺好的,本来打算做它想做的,但是太慢了,12个小时才能完全完成(12:13:48 to be precise)
。
我认为这是缓慢的从多来cut
,并rev
呼吁我做。
例子:
我ls
使用 for 循环的命令获取文件名,对于每个文件,我获取父目录,并且根据父目录,我可以获得正确的年份:
case "$parent" in
( "Type1" )
year=$(echo "$fichier" | rev | cut -d '_' -f 2 | rev );;
( "Type2" )
year=$(echo "$fichier" | rev | cut -d '_' -f 2 | rev);;
( "Type3" )
year=$(echo "$fichier" | rev | cut -d '_' -f 1 | rev | cut -c 1-4);;
( "Type4" …
Run Code Online (Sandbox Code Playgroud) 我正在使用脚本根据创建文件的年份复制一些文件,它适用于没有空格的文件,但对于有空格的文件,stats 命令有问题,例如我有这个文件: file with spaces.pdf
stat -c %y ./path/to/file\ with\ spaces.pdf|cut -d '-' -f 1
Run Code Online (Sandbox Code Playgroud)
返回年份,例如:2017
但是在脚本中使用时:
year=$(stat -c %y $pathfile | cut -d '-' -f 1)
Run Code Online (Sandbox Code Playgroud)
这似乎不是工作,如果我采取了以下输出:
echo "stat -c %y file | cut -d '-' -f 1"
Run Code Online (Sandbox Code Playgroud)
并在终端中复制它它确实有效,在所有情况下错误都是一样的,就像忽略文件名的这一部分with\ spaces.pdf
::
stat: cannot stat './path/to/file\': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我试过在路径中添加引号,但它似乎不起作用:
year=$(stat -c %y "$pathfile" | cut -d '-' -f 1)
Run Code Online (Sandbox Code Playgroud)
我在某处看到我需要将统计信息放在一个函数中,我这样做了:
makestats () {
$(stat -c %y $1|cut -d '-' -f 1)
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,如果你能给我你的帮助,我会得到同样的错误。
在我的 linux 脚本上使用 curl 时遇到问题:
#!/bin/bash 用户名=“用户”; 密码=“密码”; 租户名称=“租户”; commande="curl -X POST -H \"Content-Type: application/json\" -H \"缓存控制:无缓存\" -H \"邮递员-令牌:111131da-8254-21b3-1b95-9c12954152c9\" -d '{\"auth\":{\"tenantName\":\"$tenantName\",\"passwordCredentials\": {\"用户名\":\"$userName\",\"密码\":\"$passWord\"}}}' \"http://controller:5000/v2.0/tokens\""
当变量 commande 的输出被复制粘贴到 shell 中时,它可以工作,但是当我使用时:
res= $(eval $commande) #或者 res=`$commande`
这些命令都不起作用,这是我通常得到的输出错误:
第 11 行:{"access":: 命令未找到
PS:如果我这样做
回声 $commande
然后我将结果复制到它可以工作的外壳上,如果有人可以帮助我,那就太好了!