对你来说,这个问题有点奇怪。我有一台旧的二合一笔记本平板电脑,运行良好,只是触摸屏驱动程序偶尔会崩溃,导致无法使用。我有一个简单的脚本可以重启它,但当它没有连接到键盘时,重启起来会很麻烦。我建议的解决方案是,当我同时按下两个物理音量键时运行脚本(这两个按钮是我唯一可靠连接的其他输入设备)。我使用的是 Fedora Wayland。这看起来可行吗?如果可行,该如何操作?
我有一个脚本和补丁,我带着它去某处编译图像(linux build root),我添加了一些行,现在我在修补期间收到一个错误,错误如下:
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate
index fecf82fcaa..fff80d6efc 100755
--- a/package/base-files/files/bin/config_generate
+++ b/package/base-files/files/bin/config_generate
@@ -312,10 +312,10 @@ generate_static_system() {
问题似乎出在数字上 -312,10 +312,10
主意?
谢谢
编辑:这里还有一些信息,在 OpenWrt 编译期间,我想自动添加一些更改,这些更改将包含在脚本中,它将在某些文件中应用补丁。即:那部分
generate_static_system() {
uci -q batch <<-EOF
delete system.@system[0]
add system system
set system.@system[-1].hostname='OpenWrt'
set system.@system[-1].timezone='EST5EDT,M3.2.0,M11.1.0'
set system.@system[-1].zonename='America/New York'
set system.@system[-1].ttylogin='0'
set system.@system[-1].log_size='384'
set system.@system[-1].urandom_seed='0'
到:
generate_static_system() {
uci -q batch <<-EOF
delete system.@system[0]
add system system
set system.@system[-1].hostname='james_router2'
set system.@system[-1].timezone='EST5EDT,M3.2.0,M11.1.0'
set system.@system[-1].zonename='America/Toronto'
set system.@system[-1].ttylogin='0'
set system.@system[-1].log_size='384'
set system.@system[-1].urandom_seed='0'
这是一个更大文件的一部分,位于:
package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate
我使用Spectrespectre-cli
的交互式钱包,这种代币的设计与 Kaspa 类似。当我想要手动获取钱包余额时,我需要
在 中运行,然后运行。所有这些看起来都像这样:spectre-cli
connect
open
spectre-cli
spectre-cli
Spectre Cli Wallet v0.3.16 (type 'help' for list of commands)
$ connect
Connected to Spectre node version 0.3.16 at ws://127.0.0.1:19110
$ open
Enter wallet password:
Your wallet hint is: This is a hint.
$ $
• ****************
• [********]: 4.47042578 SPR 1 UTXOs
spectre:******************************************************
[********] • 4.47042578 SPR $
我编写了一个预期脚本来帮我完成这些步骤(这样我唯一需要输入的就是我的密码):
#!/usr/bin/expect -f
# Set a timeout (in seconds) for how long to wait for each prompt
set timeout 5
spawn spectre-cli
expect "$ "
send "connect\r"
expect "$ "
send "open\r"
interact
我从脚本中得到不一致的输出。大约 70% 的时间我得到:
./get_balance_works.exp
spawn spectre-cli
Spectre Cli Wallet v0.3.16 (type 'help' for list of commands)
$ connect
connectopen
command not found: connectopen
$
其余时间脚本都按预期工作:
./get_balance_works.exp
spawn spectre-cli
Spectre Cli Wallet v0.3.16 (type 'help' for list of commands)
$ connect
$ open
Connected to Spectre node version 0.3.16 at ws://127.0.0.1:19110
Enter wallet password:
Your wallet hint is: This is a hint.
$ $
• ****************
• [********]: 4.47042578 SPR 1 UTXOs
spectre:******************************************************
[********] • 4.47042578 SPR $
有没有办法让脚本以一致的方式按预期工作?
PS 我在使用 Ubuntu LTS。
我想让它自动以无光标启动:startx -- -nocursor
这可行,但这是命令..我想自动启动到用户:kiosk..(但我不想使用“unclutter”)
我不明白我可以在哪里添加脚本或文件配置无光标的 startx.. .xinitrc?或其他文件配置..
我使用带有 openbox 的 opensuse 15.6
所以我在这里问,我希望找到你的帮助手代码.. :-)
谢谢
使用find
,我将检查目录中是否存在任何最小大小为 1 字节的文件in
,如果不存在则退出。
我尝试过类似的东西,但它不起作用
find ./in/ -type f -iname '*' -size 1c &> /dev/null
if [ "$?" != 0 ]
then
echo file size is under 1 byte, aborting...
fi
我在 MX Linux 23.2 上使用 zsh。
多年来我一直试图弄清楚为什么像这样的命令
find . -depth -type f -execdir rename 's/_720p//' {} \;
跳过文件。
我知道我的文件管理器无法显示更改,因此我通过ls
在终端中输入进行检查。你瞧!那里列出了名称中仍带有“_720p”的文件。
我尝试将进程发送到后台并使用wait
,但我得到了相同的结果。我唯一发现的是类似的东西
while [ ! .(NF) ]; do
filename=$(find . -type f -print0 -quit)
rename 's/_720p//' $filename
mv $filename $HOME/Videos
done
我从来没有见过另一个问题与这个问题有一点相似。我是 Linux 宇宙中唯一一个做不到这一点的人吗?问题是什么?
我很乐意将分号、换行符和与号放在需要的地方。但什么是“正确”的方法呢?这只是风格/个人喜好的问题,还是其中一个在某些方面比另一个更好?
while true; do
cmd1
cmd2
cmd3
done
while true; do
cmd1;
cmd2;
cmd3;
done
第二个使用更多的墨水/电子,但你可以简单地连接线,它仍然可以:
while true; do cmd1; cmd2; cmd3; done
我正在寻找一个tmux
命令来获取最后一个焦点窗格的当前目录 ( #{pane_current_path}
),不需要切换到它并切换回来。
以下作品:
tmux last-pane
echo "$(tmux display-message -pF "#{pane_current_path}")"
tmux last-pane
但是我想知道是否有一种方法可以做到这一点而不必调用tmux last-pane
两次(也许是一个包含最后一个窗格的 ID 的变量?)。
与此相关:
https://unix.stackexchange.com/a/754252/582781
解决方案一:
free -g -s2 | sed -u -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p' >> memory.log
有没有办法将 Swap 添加到其中,以便我记录已用 Mem 和 Swap 的总和?
在zsh中
echo 'a string' > test.txt
echo $?
0
和
[[ $(echo 'a string') ]]
echo $?
0
然而
[[ $(echo 'a string' > test.txt) ]]
echo $?
1
另一个例子
curl -so 'curl-8.2.1.tar.gz' https://curl.se/download/curl-8.2.1.tar.gz
echo $?
0
或者
[[ $(curl -so 'curl-8.2.1.tar.gz' https://curl.se/download/curl-8.2.1.tar.gz) ]]
echo $?
1
我的问题:
- 这是因为输出重定向吗?如果不是,是什么原因造成的?
- 命令执行成功:
a string
出现在test.txt
并且curl将文件下载到我指定的输出文件中,为什么评估结果为false
? - 在脚本中是否有一种明智的方法来处理这个问题?假设我想执行某个命令,如果前一个命令执行成功(但
false
仍然返回),应该如何执行?我可以添加第二次检查来查看该行是否出现或文件是否已下载,但首先就不需要评估命令是否成功执行。
更多完整性示例(可读性与“正确性”?):
if ( $(echo 'a string' > text.txt) ); then echo yes; else echo no;fi
yes
if (( $(echo 'a string' > text.txt) )); then echo yes; else echo no;fi
no
if $(echo 'a string' > text.txt); then echo yes; else echo no;fi
yes
if echo 'a string' > text.txt; then echo yes; else echo no;fi
yes