我想在条件语句中使用用户输入的特殊字符。我试过了:
read -p "press arrow up" foo
if [ $foo == "^[[A" ]; then echo yes; fi
它没有做我想让它做的事情。
我想在条件语句中使用用户输入的特殊字符。我试过了:
read -p "press arrow up" foo
if [ $foo == "^[[A" ]; then echo yes; fi
它没有做我想让它做的事情。
sed
我可以使用编辑器在当前行下方附加文本:
$ foo=bar
$ echo "some text"|sed "a\bar"
some text
bar
但是,当我尝试从当前行下方的变量中追加文本时,使用sed
,我无法做到这一点:
$ foo=bar
$ echo "some text"|sed "a\$foo"
some text
$foo
在我的文件“foo”中有第一行:“a b”,第二行:“c d”:
$ cat foo
a b
c d
我想在终端循环打印这两行:一个接一个:
$ for i in $(cat foo); do echo $i; done
但是在输出中,'echo' 命令破坏了顺序,所以不是:
a b
c d
我实际上有:
a
b
c
d
我模拟了变量值为 的bar
情况$foo
。foo
也是一个变量,其值为hello
。
$ foo=hello
$ bar=$(echo "\$foo")
$ echo $bar
$foo
我怎么能得到hello
,给定 foo="hello"
和bar="$foo"
?
我试过了:
$ echo $(echo $bar)
但输出仍然是:
$foo
我需要在文本文件中找到所有以“.txt”结尾的字符串。我试过了:
grep 'txt$' myFile
但它给出了整行,而不仅仅是以 '.txt' 结尾的字符串
我尝试使用奶酪录制视频+音频。视频被录制,音频 - 不是。我试图修复:
alsamixer -c1
并将音量提高到 100%这是输出pacmd list-cards
:
2 card(s) available.
index: 0
name: <alsa_card.usb-Sonix_Technology_Co.__Ltd._USB_Live_camera_SN0001-02>
driver: <module-alsa-card.c>
owner module: 7
properties:
alsa.card = "1"
alsa.card_name = "USB Live camera"
alsa.long_card_name = "Sonix Technology Co., Ltd. USB Live camera at usb-0000:00:14.0-1.4, high speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "pci-0000:00:14.0-usb-0:1.4:1.2"
sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.2/sound/card1"
udev.id = "usb-Sonix_Technology_Co.__Ltd._USB_Live_camera_SN0001-02"
device.bus = "usb"
device.vendor.id = "0c46"
device.vendor.name = "WaveRider Communications, Inc."
device.product.id = "64ab"
device.product.name = "USB Live camera "
device.serial = "Sonix_Technology_Co.__Ltd._USB_Live_camera_SN0001"
device.form_factor = "webcam"
device.string = "1"
device.description = "USB Live camera "
module-udev-detect.discovered = "1"
device.icon_name = "camera-web-usb"
profiles:
input:analog-stereo: Analog Stereo Input (priority 60, available: unknown)
input:iec958-stereo: Digital Stereo (IEC958) Input (priority 55, available: unknown)
off: Off (priority 0, available: unknown)
active profile: <input:analog-stereo>
sources:
alsa_input.usb-Sonix_Technology_Co.__Ltd._USB_Live_camera_SN0001-02.analog-stereo/#4: USB Live camera Analog Stereo
ports:
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: unknown)
properties:
device.icon_name = "audio-input-microphone"
iec958-stereo-input: Digital Input (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
properties:
index: 1
name: <alsa_card.pci-0000_00_1b.0>
driver: <module-alsa-card.c>
owner module: 8
properties:
alsa.card = "0"
alsa.card_name = "HDA Intel PCH"
alsa.long_card_name = "HDA Intel PCH at 0xd0810000 irq 97"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:00:1b.0"
sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
device.bus = "pci"
device.vendor.id = "8086"
device.vendor.name = "Intel Corporation"
device.product.id = "0f04"
device.product.name = "Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller"
device.form_factor = "internal"
device.string = "0"
device.description = "Built-in Audio"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
profiles:
input:analog-stereo: Analog Stereo Input (priority 60, available: no)
output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6060, available: unknown)
output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: unknown)
output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 5460, available: unknown)
off: Off (priority 0, available: unknown)
active profile: <output:analog-stereo+input:analog-stereo>
sinks:
alsa_output.pci-0000_00_1b.0.analog-stereo/#0: Built-in Audio Analog Stereo
sources:
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#1: Monitor of Built-in Audio Analog Stereo
alsa_input.pci-0000_00_1b.0.analog-stereo/#2: Built-in Audio Analog Stereo
ports:
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
properties:
device.icon_name = "audio-input-microphone"
analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
properties:
device.icon_name = "audio-headphones"
hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: yes)
properties:
device.icon_name = "video-display"
在每个目录中都有一个指向该目录本身的链接:
ls -a <any dir> | head -2
$.
$..
问题:为了什么目的“。” aka 自身的链接是否存在?
$ cat x
cat: x: No such file or directory
$ cat y
This is y.
$ cat x y 1> hold 2>&1
cat: x: No such file or directory
This is y.
为什么stder也被重定向到hold?在将 stdout 重定向到 hold后, stder 被声明为 stdout ,并且在声明发生后没有更多的重定向。
我想将 for 循环中的 grep 的结果写入文件,保持原始文件结构。原始文件:
$cat newtest1
some_text
/homes/myself/joz
ivan petrov - 20/10/19
new customer:
/homes/myself/silvia
john smith - 30/11/19
old customer:
some_text
我在 for 循环中使用 grep 并获得以下信息:
$for i in `cat newtest1 | grep customer -B2`; do echo $i; done
/homes/myself/joz
ivan
petrov
-
等文件的结构发生了变化。我尝试了 printf - 结果相同。问题:如何在 for 循环中使用 grep 保持文件的结构?
细绳:
34 /foo/bar_11,,,
我想插入“34”而不是第二个逗号。所以我的字符串应该是这样的:
/foo/bar_11,34,
我该怎么做?
下面的例子不起作用:~/test 是空的。
foreach i (`ls`)
foreach echo $i > ~/test
foreach end
这也不起作用(与 bash 不同):
foreach i (`ls`)
foreach echo $i
foreach end > ~/test
我有两个 for 循环:
for i in 0 1 2 3; do echo $i;done
for j in a b c d; do echo $j;done
0
1
2
3
a
b
c
d
我希望输出是:
0
a
1
b
2
c
3
d
怎么做?
有一个字符串,其名称中包含数字和字母。符号 '_' 分隔字符串的不同部分。
X23X_1XY4_XXXX_Y12Y_YYX2_XXYY
我只想有第二、第三和第四部分:
1XY4_XXXX_Y12Y
使用 cut one 可以:
echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' | cut -d'_' -f2,3,4
如何用 sed 做到这一点?
在许多 Linux 书籍中都写到“重定向在命令之前执行”。让我们考虑一下:
$ cat bar
hello
$ ecno "foo" > bar
bash: ecno: command not found
$cat bar
但是它并没有将任何输出复制到bar中(因为没有输出),所以应该说'重定向在命令之前部分执行',因为'>'的一部分在这里不起作用,即复制输出将命令放入文件栏中。这样对吗?
这是一本 Linux 教科书中的练习:举一个输入和输出重定向的例子。我在网上找到了答案:
grep \$Id < *.c > id_list
但是这个 *.c 似乎是问题所在。这个答案可以解决吗?
在我最喜欢的一本 Linux 教科书中,我发现了一个声明,即ls
实用程序无法解释模棱两可的文件引用。参数或多或少是这样的:“首先ls
使用参数调用?old
。shell 扩展?old
为匹配的文件名,hold
并将该名称传递给ls
。第二个命令与第一个命令相同,除了?
受保护'\'
. shell 不将此问号识别为特殊字符并将其传递给ls
.ls
也无法解释它:
$ ls ?old
hold
ls \?old
ls: ?old: No such file or directory
我的问题:这是因为反斜杠而无法解释的 Shell。因此,此示例仅显示带有反斜杠的 shell 既不能解释也ls
不能解释模棱两可的文件引用。它并不能证明没有反斜杠ls
就不能解释模棱两可的文件引用。我在这里做错了什么?
有一个选项可用于grep -f MY_FILE
让它搜索从文件中获取的模式,而不是直接在命令行上指定。
是否可以选择对命令执行类似操作find
并让它读取模式以从输入文件中搜索?
移动实际上是在新位置创建文件的副本,然后从之前的位置删除文件。由于不可能同时拥有两个相同的 inode 编号,因此 inode 编号应该在复制后和删除旧文件之前更改(短时间)。但是,我发现 inode 编号在mv
命令后并没有改变。那么,被删除文件的inode号是否重新分配给复制的文件?
我有一个文件。
$ cat file
"bar": false
"foo": false
我只需要在模式false
中替换这个词。问题是引号和空格。true
"foo": false
我想了两个办法:
2 选项的示例尝试:
$ sed -i 's/\(.*foo\)/false/true\1/g' file
它失败了。
该grep
命令给出退出状态:
$echo "foo.bar" | grep -o foo
foo
$echo $?
0
$echo "foo.bar" | grep -o pop
$echo $?
1
但我需要使用sed
,我意识到它没有退出状态:
$echo "foo.bar" | sed 's/bar.*$//'
foo.
$echo $?
0
$echo "foo.bar" | sed 's/pop.*$//'
foo.bar
$echo $?
0
我知道我应该玩这个-q
选项,但我没有成功。