让\xe2\x80\x99s 说我有 50 个 USB 闪存驱动器。
\n我想他们一定会/dev/sda的/dev/sdz。之后会发生什么/dev/sdz?
我正在处理一个嵌入式系统,它有一些可以通过文件描述符访问的内存(我不知道我在说什么,所以如果我错了,请纠正我)。
该内存为 32 kB,我想用 0x00 到 0xFFFFFFFF 填充它。我知道文本文件是这样的:
exec {fh} >> ./eeprom;
for i in {0..32767}; do echo $i >& $fh; done; $fh>&-;
Run Code Online (Sandbox Code Playgroud)
这将写入 ASCII 字符 0 到 977。
如果我这样做,hexdump eeprop | head我会得到:
0000000 0a30 0a31 0a32 0a33 0a34 0a35 0a36 0a37
0000010 0a38 0a39 3031 310a 0a31 3231 310a 0a33
0000020 3431 310a 0a35 3631 310a 0a37 3831 310a
0000030 0a39 3032 320a 0a31 3232 320a 0a33 3432
0000040 320a 0a35 3632 320a 0a37 3832 320a 0a39 …Run Code Online (Sandbox Code Playgroud) 我需要找出给定搜索字符串第一次出现的行号,该搜索字符串应该位于文本文件中行的开头,并将其存储在我的 bash 脚本中的变量中。例如我想找到第一次出现的“c”:
abc
bde
cddefefef // this is the line that I need its line number
Casdasd // C here is capital, I dont need it
azczxczxc
b223r23r2fe
Cssdfsdfsdf
dccccdcdcCCDcdccCCC
eCCCCCC
Run Code Online (Sandbox Code Playgroud)
我想出了这个,但正如你所见,存在很大的问题
trimLineNum=$(cat "${varFileLog}" | grep -m1 -n "c")
echo "c is at line #"${trimLineNum}
Run Code Online (Sandbox Code Playgroud)
输出将是:
c is at line #1:abc
Run Code Online (Sandbox Code Playgroud)
问题:
我应该改变什么来解决这些问题?
我有一个 32GB 的 SD 卡,其中包含一些 pi 小工具的 Armbian 安装。我想将内容克隆到 16GB 卡中。使用 GParted,我将分区缩小到小于 16GB,这里是 SD 卡的状态,如 中所示fdisk。有2个分区,一个是Armbian,一个是FAT32小分区,用来和windows共享文件。
Disk /dev/sdk: 29,74 GiB, 31914983424 bytes, 62333952 sectors
Disk model: USB3.0 CRW-SD/MS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x22563e30
Device Boot Start End Sectors Size Id Type
/dev/sdk1 8192 25690111 25681920 12,3G 83 Linux
/dev/sdk2 25690112 26509311 819200 …Run Code Online (Sandbox Code Playgroud) 我有一个嵌入式系统开发设置,应该限制用户访问任何系统文件夹。
在 USB 记忆棒上,我创建了一个指向“/”(根文件夹)的符号链接,当我在文件浏览器中单击它时,它将把文件管理器带到根目录。
是否有任何选项可以给 mount 命令来禁用符号链接,就像不遵循符号链接一样?
如果是这样,所有文件系统都一样吗?主要是fat32、NTFS和EXT3/4?
我创建了一个 bash 脚本来运行一些具有自定义环境变量的其他程序。这是我的第一个脚本,run-hello.sh名为/home/user
#!/bin/bash
export PATH=$PATH":/home/user/cool/path"
hello.sh
exit 0
Run Code Online (Sandbox Code Playgroud)
/home/user/cool/path我有脚本hello.sh:
#\!/bin/bash
echo Hello from $(pwd)
Run Code Online (Sandbox Code Playgroud)
运行第一个脚本 (run-hello.sh) 会产生:
Hello from /home/user
Run Code Online (Sandbox Code Playgroud)
我的问题:
第一个脚本中的调用export仅在脚本处于活动状态期间有效?如果运行脚本后我echo $PATH将看不到脚本添加的路径...这是预期的行为吗?我怎样才能让它至少在终端的持续时间内存在?
为什么打印结果/home/user而不是/home/user/cool/path?
我有一组相当复杂的文件需要找到并做出反应(例如复制到文本文件的路径):
例如:
find / \( -iname "*ssh*" -or -iname "*scp*" \) \( -not -path -"/run" -not -path "/rw/*" -and -not -path "/home/*" -and -not -path "*/qml/*" \) >> ~/files.txt
Run Code Online (Sandbox Code Playgroud)
在这里我想找到与“ssh”和“scp”相关但不在 /run 或 /rw 目录中的所有文件或文件夹。
我将为此添加更多条件,但命令太长了。我怎样才能用正则表达式做到这一点?
我有一个 Bash 脚本,具有记录带有时间和状态的消息的功能,并且我只想保留我的脚本 80 列:
#!/bin/bash
log_message() {
echo "[$(date)]-[$1] : $2" >> log.txt
}
varName="John Doe"
# line break to not exceed 80 columns
log_message "WARNING" "I am "${varName}" and i want to limit this line \
to 80 columns"
Run Code Online (Sandbox Code Playgroud)
日志文件中的结果不符合预期:
[Fri Jun 24 13:50:12 CEST 2022]-[WARNING] : I am John
Run Code Online (Sandbox Code Playgroud)
在 Bash 中执行此操作的正确方法是什么?