我有一个shell脚本,可以在这样的文件夹中打印appimage文件名
#! /bin/bash
Dir="$HOME/Applications/"
Dir2="$HOME/Downloads/"
cd -P "$Dir"
for f in *.AppImage; do
z=$(echo $f | head -n1 | awk '{print $1;}')
echo $z
done
现在输出如下:
Altus-4.8.5-x86_64.AppImage
GitHubDesktop-linux-3.2.0-linux1.Ap
假设我有一个名为file的文件:
$ cat file
Hello
Welcome to
Unix
我想在文件的最后一行末尾添加and Linux。如果我这样做,echo " and Linux" >> file将被添加到一个新的行。但我想要最后一行Unix and Linux
因此,为了解决这个问题,我希望删除文件末尾的换行符。因此,如何删除文件末尾的换行符以便向该行添加文本?
使用下面的脚本,如果我点击return,一切都正常。当我退出的时候,一切都是正常的。 但是,如果我等待超时触发,那么在退出并返回到终端提示符时,我会得到我期望的回声。linux提示符搞得一团糟,我在线路上看到多个终端提示符,并且看不到我键入的命令。 #!/bin/bash
read -t 5 -e -p "INFO: Do you want to do more stuff? [n]: " RESPONSE
if [ "$RESPONSE" != "y" ] ; then
echo "INFO: Not doing anything
update.sh
for item in *
do
if [ -d "$item" ]; then
echo processing $item
cd $item
git pull
echo finish $item
printf "\n------------------------------------\n\n"
cd ..
fi
done
该函数将列出当前目录并输入每个目录来执行git拉,它在Windows中工作时使用git,但在我的Linux
这在任何Linux上都能很好地工作:
$ echo foo bar | sed -n '/foo/{/bar/{;p;}}'
foo bar
但在OSX古老的BSD变体上却失败了:
❯ echo foo bar | sed -n '/foo/{/bar/{;p;}}'
sed: 1: "/foo/{/bar/{;p;}}": extra characters at the end of } command
我是不是错过了什么魔法咒语?有办法用便携的方式写吗?
我不想恢复到grep | grep | grep命令的管道。
更新:低代表在这里,
我想在批处理文件中嵌套一个for循环来删除回车。我试过了,就像你在下面看到的那样,但它不起作用。
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (Listfile.txt) do (
set /a N+=1
set v!N!=%%a
)
for /l %%i in (1, 1, %N%) do (
echo !v%%i!
for /r "tokens=* delims=" %%i in (windows.cpp) do (
我刚接触过stuck脚本和Linux,现在我被困住了。我将编写一个简单的程序,允许我搜索我想要的安迪文件扩展名,然后显示其中有多少。
我一直在网上搜索,读我的书,但我就是搞不懂。
到目前为止,我得到的是:
#!/bin/bash
#Program to search for how many of specific file extension there is in this directory.
echo "Write the file extension you want to search for:"
read n
for n in `ls *.txt` ; d
我是刚开始攻击Linux的。我试图简单地迭代目录中的文件,该目录可以是链接或可执行文件。在链接中我提到链接和其他文件获取文件版本
for i in *; do
if test -f "$i"
then
if test -L "$i"
then
echo "File $i,Link"
else
echo "File $i," readelf -a -W $i |grep SONAME
fi
fi
done
它只在链接上工作。我该怎么做才能正确?还有一些例子提到..。而不是测试。有什么不同吗?