添加菜单方法
cd /home/username/.local/share/nautilus/scripts touch Menu1
刷新文件管理器,打开右键菜单,即会出现名为 脚本>Menu1的菜单
签名
vi GPG-Encrypt
#!/bin/bash
gpg -u YOURUID -a --detach-sign "$@"
加密
vi GPG-Encrypt继续阅读“Ubuntu添加GPG右键菜单”
#!/bin/bash
gpg -r 接收人证书名 -s -e "$@"

xuenhua’s 站点
cd /home/username/.local/share/nautilus/scripts touch Menu1
刷新文件管理器,打开右键菜单,即会出现名为 脚本>Menu1的菜单
vi GPG-Encrypt
#!/bin/bash
gpg -u YOURUID -a --detach-sign "$@"
vi GPG-Encrypt继续阅读“Ubuntu添加GPG右键菜单”
#!/bin/bash
gpg -r 接收人证书名 -s -e "$@"
背景
我们有一堆文件,在文件夹A中,需要按照文件列表list.txt 复制文件到B中,A中文件和list.txt 中文件均较多
1、文件列表
list.txt类似如下
mnist_test_644.png
mnist_test_2180.png
mnist_test_122.png
mnist_test_2816.png
2、bash
b=`sed ‘r/g’ list.txt`
for i in $b;
do
cp -r “A/”$i “B/”;
done
3、zsh
for i (${(s: :)$(<list.txt)});
do
cp -r “A/”$i “B/”;
done
或者(不推荐,如果txt每行有空格,导致错误,上面兼容更好)
fl=$(<list.txt)
for i (${(f)fl});
do
cp -r “A/”$i “B/”;
done
4、awk 拼接语句管道执行
awk ‘{print “cp -r A/”$1″ B/;” }’ list.txt |sh
fl.txt文件
12
34
56
78
Bash
1、IFS定义分隔符,默认空格、tab、换行、回车
bash-3.2$ a="a b c d"
bash-3.2$ for i in $a;
> do
> echo $i","
> done
a,
b,
c,
d,
bash-3.2$ b=`sed 'r/g' fl.txt`
bash-3.2$ for i in $b; do echo $i","; done
12,
34,
56,
78,
a="a,b,c,d"
#换行符分割
IFS=$'\n'
bash-3.2$ a="a,b,c,d"
bash-3.2$ for i in $a;
> do
> echo $i;
> done
a,b,c,d
设置分隔符为逗号
bash-3.2$ IFS=$','
bash-3.2$ for i in $a; do echo $i; done
a
b
c
d
2、使用分割符生成数组
bash-3.2$ aa="hello,shell,split,test"
bash-3.2$ array=(${aa//,/})
bash-3.2$ for i in ${array[@]}
> do
> echo $i
> done
Helloshellsplittest
bash-3.2$ array=(${aa/\n/,/})
bash-3.2$ for i in ${array[@]}; do echo $i; done
hello
shell
split
Test
bash-3.2$ echo ${array[0]}
hello
bash-3.2$ echo ${array[1]}
Shell
Zsh
Zsh 不会默认使用空格、tab、换行、回车分割
1、(f)按行分割
str=$(<fl.txt)
% echo $str
12
34
56
78
for i (${(f)str}){
echo $i"#"
}
12#
34#
56#
78#
注意,写在一起这样不行
for i (${(f)$(<fl.txt)});
do
echo $i",";
done
12 34 56 78#
直接输出和使用变量行为不一致
echo $(<fl.txt)
12 34 56 78
aa=$(<fl.txt)
echo $aa
12
34
56
78
需要使用(s:chr:)方式
for i (${(s: :)$(<fl.txt)});
do
echo $i",";
done
或者使用sed读取
aa=`sed 'r/g' fl.txt`;
for i (${(f)aa});
do
echo $i",";
Done
2、(s:chr:)
s='foo,bar,baz'
#仅s也可,见过p w @,:可以用其他符号代替
for i in ${(ps:,:)s} ; do
echo "$i END"
done
foo END
bar END
baz END
awk
bash-3.2$ aa=`awk '{print $1}' fl.txt`
bash-3.2$ for i in $aa
> do
> echo $i
> done
12
34
56
78
1、升级操作系统
sudo do-release-upgrade
2、打开摄像头,提示 NO Camera Found
检查更新
sudo apt update
重启pipewire
systemctl --user restart pipewire
启动摄像头
snapshot
有时某软件依赖高版本的另一个软件,但有时不提供二进制安装包,还要make编译,配置编译环境就可以劝退99%的人。可以试试能否通过添加源进行升级,实在不行再编译源码安装。以升级git为例,介绍一下操作命令。
1、检查更新
apt update
2、查看是否有更新
apt list –upgradable
如果有更新,执行下面的命令更新
apt install git
3、但是如果运行了发现没有更新
添加ppa源
add-apt-repository ppa:git-core/ppa
4、执行更新
apt update
5、再试一下
apt install git