我使用parted将外部硬盘驱动器(sdc)格式化为ntfs,创建一个主分区(sdc1)。在格式化设备之前,使用命令将SystemRescueCd安装在外部硬盘驱动器上dd
,以便用作可启动 USB。但是,当列出设备时lsblk -f
我仍然得到格式化设备(sdc)的旧FSTYPE(iso9660)和LABEL(sysrcd-5.2.2):
NAME FSTYPE LABEL UUID MOUNTPOINT\nsda \n\xe2\x94\x9c\xe2\x94\x80sda1 ntfs System Reserved \n\xe2\x94\x9c\xe2\x94\x80sda2 ntfs \n\xe2\x94\x9c\xe2\x94\x80sda3 ntfs \n\xe2\x94\x9c\xe2\x94\x80sda4 \nsdc iso9660 sysrcd-5.2.2 \n\xe2\x94\x94\xe2\x94\x80sdc1 ntfs sysrcd-5.2.2 /run/media/user/sysrcd-5.2.2\n
Run Code Online (Sandbox Code Playgroud)\n\n如图所示,lsblk -f
只有分区的FSTYPEsdc1
是正确的,sdc1
分区的LABEL、sdc
块设备的FSTYPE和LABEL都是错误的。nautilus GUI 应用程序还显示旧设备标签 (sysrcd-5.2.2)。
创建新的分区表后,建议我在将设备格式化为ntfsparted
之前重新启动系统,但我决定卸载 sdc 而不是重新启动。
我有一个与 flatpak 一起安装的 okular 别名,设置如下:
alias okular="org.kde.okular"
它可以从终端打开。但是,如果我尝试使用该别名从终端打开文件,例如:
okular document.pdf
那么就不行了。我究竟做错了什么?
有没有办法使用 okular flatpak 在终端中打开文件,而不是使用 GUI?
所以我找到了这个链接:
--file-forwarding 如果指定此选项,则扫描剩余的参数,并且包含在一对“@@”参数之间的所有参数都被解释为文件路径,在文档存储中导出,并传递给命令结果文档路径的形式。'@@u' 和 '@@' 之间的参数被视为 uri,并且任何 file: uri 都会被导出。导出是非持久性的,并且具有应用程序的读写权限。
当然,这并不意味着使用 okular flatpak 在终端中打开文件的唯一方法是执行以下操作:
flatpak run okular.kde.org --file-forwarding @/home/user/documents/document.pdf@
我无法对每个要打开的 pdf 都执行此操作。如何将其添加为别名,以便在打开不同的 pdf 时不需要键入很长的命令?
我想在列表中找到三个模式。我试着打字
$ pip3 list | grep -ei foo -ei bar -ei baz
Run Code Online (Sandbox Code Playgroud)
但是外壳会抛出一个broken pipe error
和一个大的Traceback
.
我如何处理grep
从通过管道传输到的列表中传递的多个模式grep
?
我发现在将文本作为另一个程序的输入写入时,预期文本中双引号中的任何命令替换都会被 shell 解释和扩展
此处答案中的链接指出单引号可用于防止参数扩展或命令替换。但是我发现用单引号括起命令替换也无法阻止 shell 扩展命令替换
您如何防止 shell 解释旨在作为文本而不是要执行的命令的命令替换?
$ echo "`wc -l *`"
Run Code Online (Sandbox Code Playgroud)
尝试计算当前目录中所有文件的行数
$ echo "'`wc -l *`'"
Run Code Online (Sandbox Code Playgroud)
结果相同,即计算当前目录下所有文件的行数
更新从这个演示中我发现问题似乎是我引用了单引号。我认为将单引号和`
(反引号)括在双引号中可以保留(即抑制)单引号的字面意义,但不会保留引入命令替换的反引号(即反引号)的字面含义。
在我的用例中,需要引用另一个命令的输入。这份文件说:
单引号内不能出现单引号
当单引号命令替换在(双)引号字符串中时,如何防止单引号命令替换被扩展?除了使用反斜杠转义之外,应该有办法做到这一点
在程序中,我使用将任务描述分成单独行的唯一方法是用双引号将描述括起来:
$ task add "first line doesn\'t say much
Second line says a lot but part of this line does not appear in the resulting description 'truncate -s0 !(temp_file | temp_dir)' truncates all files to 0 bytes as shown by: '`wc -l *`'"
Run Code Online (Sandbox Code Playgroud)
结果描述:
first …
Run Code Online (Sandbox Code Playgroud) 我正在使用终端编写 Java 程序printf
并将其输出重定向到.java
文件,但printf
无法解释水平反斜杠选项卡 ( \t
),并且当我在字符串中有感叹号 (!) 时,它甚至不打印并失败这个错误:
bash: !": event not found
如何强制 printf 包含水平制表符?
以及如何在不出现上述错误的情况下包含感叹号?
$ printf "%s\n" "public class {" "\tpublic static void main(String[] args) {" "dogBark()" "}" "public static void dogBark() {" "System.out.println("Woof")" "}" "}" > barkingDog.java
Run Code Online (Sandbox Code Playgroud)
.java
文件输出$ less barkingDog.java
public class {
\tpublic static void main(String[] args) {
dogBark()
}
public static void dogBark() {
System.out.println(Woof)
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试匹配包含两个文本模式的文件名,但匹配过程应该忽略大小写。以下正则表达式都不起作用:
将 awk 变量 'IGNORECASE' 设置为非零值(如 中推荐的那样info awk
),以便所有正则表达式和字符串操作忽略大小写,然后使用两个正则表达式构建逻辑“与”操作将打印所有文件:
$ ls -R | awk 'IGNORECASE = 1;/bingo/ && /number/;'
Run Code Online (Sandbox Code Playgroud)
$ ls -R | awk 'tolower($0) ~ /(?=.*bingo)(?=.*number)/'
Run Code Online (Sandbox Code Playgroud)
awk 或正则表达式语法的哪一部分是错误的(或缺少什么),以及仅当附加模式出现在同一行时才成功的独立于大小写的搜索的正确方法是什么?
从跑步开始
$ ls -R | awk '/bingo/'
Run Code Online (Sandbox Code Playgroud)
似乎awk
可以在每个文件中的输出进行针对行中的匹配ls -R
由于不包含字符串常量“宾果”由相匹配的文件名awk
。如果是这种情况,您如何获得awk
与grep
从(即通过)管道接收输出时相同的行为?