我想删除字符串的最后一个字符,我尝试了这个小脚本:
#! /bin/sh
t="lkj"
t=${t:-2}
echo $t
Run Code Online (Sandbox Code Playgroud)
但它打印“lkj”,我做错了什么?
我在脚本中有一个名为 file1 的文件,每当它发生变化时,就做一些事情,实际上是发出哔哔声。我怎么做?
在使用时的选项字符串中getopts
,来自http://wiki.bash-hackers.org/howto/getopts_tutorial
如果选项字符串的第一个字符是 :(冒号),这通常是无意义的,因为它前面没有选项字母,getopts 会切换到“静默错误报告模式”。在生产脚本中,这通常是您想要的,因为它允许您自己处理错误而不会被烦人的消息打扰。
我想知道以下是什么意思:
“静默错误报告模式”
“它允许您自己处理错误而不会被烦人的消息打扰”?
你能举一些例子吗?
我的输出中有一些奇怪的消息dmesg
:
[ 7.588762] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready
[ 7.589616] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready
[ 7.591897] IPv6: ADDRCONF(NETDEV_UP): eno1: link is not ready
[ 7.827124] IPv6: ADDRCONF(NETDEV_UP): eno1: link is not ready
Run Code Online (Sandbox Code Playgroud)
一般来说我不需要ipv6并且它被禁用:
~$ cat /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)
eno1
甚至还被拔掉电源。那么为什么我在dmesg
输出中看到这些消息以及如何修复它?
我已经读过:有没有办法就地修改文件?
我很好奇是否有办法使用不会创建临时文件的命令来修改文件。假设我创建了一个目录
mkdir read_only
,然后在 read_only 中创建了一些文件。当我愉快地完成创建文件时,我运行chmod 555 read_only
. 现在是否可以在不使用临时文件的情况下修改任何文件?具体来说,我想要一个可以从 bash 脚本完成的解决方案。我不想知道是否有可能;我也在寻求解决方案。到目前为止,我使用 bash/unix 命令管理的所有想法都会创建临时文件。
编辑:我相信我的问题不是Can a file be edit with 'write' permission on it 但不是在其父目录上的重复?出于以下原因:
对于测试显示,我需要显示单色全屏,并快速从一种颜色切换到下一种颜色。这可以从终端完成吗?
像这样的东西:
DISPLAY=:0 color #ff0000
Run Code Online (Sandbox Code Playgroud) 在某些应用程序中,输入大写字母的作用类似于按 ESC 键。
再现:
此时,新文件夹的创建被取消。(如 ESC 键被击中)
这种行为也存在于许多不同的程序和游戏中。
使用xev
(按 Shift+d)分析情况
# xev
KeyPress event, serial 37, synthetic NO, window 0x4c00001,
root 0x259, subw 0x0, time 994702, (15,-13), root:(987,197),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 37, synthetic NO, window 0x4c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 37, synthetic NO, window 0x4c00001, …
Run Code Online (Sandbox Code Playgroud) 我有一个httpd
配置文件,我想从中删除整个块:
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files. …
Run Code Online (Sandbox Code Playgroud) 我有一个类似这样的文件:
H|ACCT|XEC|1|TEMP|20130215035845 849002|48|1208004|100|||1 849007|28|1208004|100|||1 T|2|3
请注意,文件末尾有额外的空行。
我想在所有行中用第 4 列的值替换第 5 列的值,除了第一行和最后一行非空行。
我不能依赖字段的数量,因为最后一行的字段可能与其他字段一样多,而且要修改的行也总是以数字开头。
我试过下面的代码:
awk 'BEGIN{FS="|"; OFS="|"} {$5=$4; print}' in.txt
Run Code Online (Sandbox Code Playgroud)
输出是:
H|ACCT|XEC|1|1|20130215035845
||||
849002|48|1208004|100|100||1
||||
849007|28|1208004|100|100||1
||||
T|2|3||
||||
||||
||||
Run Code Online (Sandbox Code Playgroud)
预期输出:
H|ACCT|XEC|1|TEMP|20130215035845| 849002|48|1208004|100|100||1 849007|28|1208004|100|100||1 T|2|3
如何跳过第一个和最后一个非空行进行更改?我也想跳过空行。