由于我犯的一个愚蠢的错误,我刚刚丢失了我的音频收藏的一小部分。:-( 很
高兴我有一个相当新的备份,但它仍然很烦人。除了你的真实之外,另一个做恶作剧的罪魁祸首是mv,它将显示如下:
音频文件有一定的方案:
ARTIST - Some Title YY.mp3
Run Code Online (Sandbox Code Playgroud)
其中YY是 2 位数年份规范。
mkdir 90<invisible control character>
Run Code Online (Sandbox Code Playgroud)
(直到此刻,我都不知道我实际上输入了三分之一看不见的多余字符......!)
我希望将所有 1990 年代的音乐都放在一个目录中,而不是将所有内容都放在一个目录中。所以我输入:
find . -name '* 9?.mp3' -exec mv {} 90 \;
Run Code Online (Sandbox Code Playgroud)
不难明白发生了什么,嗯?:->
(灾难性的)结果是一个名为“90 something ”的原始空目录(某些东西是“隐形”控制字符)和一个名为“90”的单个文件,被覆盖了n次。
所有文件都不见了。:-(( (明显地)
Wishmv会及时检查目标“文件”的签名(请记住 *NIX: Everything Is A File)是否以d------(例如drwxr-xr-x)开头。而且,当然,目的地是否存在。有上述情况下,当你只是一个变种忘到mkdir的目录第一。(当然,你假设它在那里......)
甚至我们以大写字母W开头的讨厌的操作系统也会这样做。如果您要求,甚至会提示您指定目标类型(文件?目录?)。
因此,我想知道我们 *NIXers …
我有一个非常大的 csv 文件。你将如何,用 sed (或类似的)删除最后一个?
...
[11911,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11912,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11913,0,"BUILDER","2014-10-15","BUILDER",0,0],
]
Run Code Online (Sandbox Code Playgroud)
期望输出
...
[11911,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11912,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11913,0,"BUILDER","2014-10-15","BUILDER",0,0]
]
Run Code Online (Sandbox Code Playgroud)
以下 sed 命令将删除每行的最后一次出现,但我想要每个文件。
sed -e 's/,$//' foo.csv
Run Code Online (Sandbox Code Playgroud)
这也不起作用
sed '$s/,//' foo.csv
Run Code Online (Sandbox Code Playgroud) 273 <keybind key="W-Return">
274 <action name="Execute">
275 <command>lxterminal</command>
276 </action>
277 </keybind>
278 <keybind key="W-Up">
279 <action name="ToggleMaximizeFull"/>
280 </keybind>
281 <keybind key="W-Left">
282 <action name="MoveToEdgeWest"/>
283 </keybind>
284 <keybind key="W-Right">
285 <action name="MoveToEdgeEast"/>
286 </keybind>
Run Code Online (Sandbox Code Playgroud)
我在默认的 last</keybind>和</keyboard>我的~/.config/openbox/rc.xml文件之间添加了这些行(行号来自 vim)。但是,无论是重新启动 X 还是发出命令都不会openbox --reconfigure应用这些设置。
我究竟做错了什么?我将 Arch 与所有默认的 LXDE 包一起使用。
巧合的是,我不得不使用我的 ATA-ID-to-device-name 脚本(在这里找到:https : //serverfault.com/questions/244944/linux-ata-errors-translating-to-a-device-name/ 426561#426561 ) 在只读 /分区上。如果你好奇,它是一个 Ubuntu 恢复控制台,它可以让你访问你的/分区,但默认情况下它会以只读方式挂载。我对此很高兴,因为否则我可能永远不会发现我的脚本由于特定行而在 R/O 系统上表现得很奇怪,这个:
IFS=: read HostMain HostMid HostSub <<< "$HostFull"
Run Code Online (Sandbox Code Playgroud)
这并不会在没有写权限的工作。不过,我不会认为它会失败。但显然<<<操作员确实需要将一些临时文件写入某个地方。
但是有没有办法绕过临时文件的创建,或者,有没有办法指定文件的写入位置?在 Ubuntu 恢复控制台中,有——奇怪的是——对/run目录的写权限,如果我能以某种方式“告诉”read将临时文件写入其他地方而不是平常,那就可以了。
假设我有五个 mp3 文件:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
05-trackxyz.mp3
Run Code Online (Sandbox Code Playgroud)
现在我快速收听文件(只有控制台上的 mplayer 可以解决问题),我发现曲目顺序错误。05实际上是02,其余的必须重命名。所以首先我会做一个临时重命名:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
00-trackxyz.mp3
Run Code Online (Sandbox Code Playgroud)
现在我们需要一个“转变”:02 应该变成 03,03 应该变成 04,04 应该变成 05。为了尽量减少混淆,ex-05(现在是 00)稍后会被mv编辑。
我的方法是这样的:(perl rename,Larry Wall,Debian 上的默认设置)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' *Run Code Online (Sandbox Code Playgroud)
以及(稍后,经过一些更多的 RTFM'ing)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' *Run Code Online (Sandbox Code Playgroud)
它们都/e[val]不起作用,特别是因为修饰符除了评估之外不接受任何其他内容,并且一旦您尝试将评估与字符串结合起来就会抛出错误。该bash能做到这一点就好了,例如, foo$((1+6))将被评估到foo7。
那么我该怎么做(首选单行,不打算为此编写一个完整的独立脚本)?
我有一个 init 脚本/etc/init.d/myservice用于初始化这样的服务:
...
start() {
...
daemon /usr/sbin/myservice
...
}
stop() {
...
pgrep myservice
pidof myservice
ps -ef | grep myservice
...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试停止服务时,这是输出:
10000 10001
10000
root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice
root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop
root 10001 9791 1 10:06 pts/1 00:00:00 /bin/sh /etc/init.d/myservice stop
root 9805 9796 0 10:06 pts/1 00:00:00 grep myservice
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?为什么pidof只返回我想要停止的服务的正确 PID 并pgrep返回服务 PID 和 init 脚本的 …
我想我现在在按列排序方面很有经验;但是,到目前为止,我还没有找到任何如何对连续行进行排序的信息。
假设我们有一个看起来像这样的文本文件:(当然非常简化)
Echo
Alpha
Delta
Charlie
Golf
Bravo
Hotel
Foxtrot
Run Code Online (Sandbox Code Playgroud)
现在,是否可以分别按每个块的字母数字对行进行排序?我的意思是,结果看起来像这样:
Alpha
Charlie
Delta
Echo
Bravo
Foxtrot
Golf
Hotel
Run Code Online (Sandbox Code Playgroud)
从我在sort手册页中找到的内容来看,内置的 UNIXsort命令可能无法做到这一点。或者甚至可以在不必求助于外部/第三方工具的情况下完成?
假设我有如下情况,一个典型的商用 PC 情况:
drwxr-xr-x 1 whatever whoever 3 Oct 3 16:40 invoices2009
drwxr-xr-x 1 whatever whoever 4 Oct 3 16:40 invoices2010
drwxr-xr-x 1 whatever whoever 2 Oct 3 16:40 invoices2011
-rwxr-xr-x 1 whatever whoever 440575 Oct 3 16:40 tax2010_1
-rwxr-xr-x 1 whatever whoever 461762 Oct 3 16:40 tax2010_2
-rwxr-xr-x 1 whatever whoever 609123 Oct 3 16:40 tax2010_3
Run Code Online (Sandbox Code Playgroud)
现在让我们偷懒,输入:
$ ls -l *2010*
Run Code Online (Sandbox Code Playgroud)
假设有是什么东西在invoices2010目录,按预期的方式将无法正常工作。由于目录名称也包含2010年,ls因此也会列出invoices2010中的文件,尽管我只想列出当前目录中的文件。更有趣的是:想象一下 tax2010* 文件根本不存在,也没有示例中的那三个目录,而是其中的 50 个。是的,我已经试过了:ls甚至不会指出 …
基本上,它xclock是一个很棒的工具,每个基本的 X 设置都会“内置”它。但是,在保持活动状态的同时配置 xclock(模拟)绝对不适合胆小的人。特别是,初学者将没有机会在不深入研究领域的情况下配置模拟时钟,因为您在命令行中设置的所有内容都将仅用于非渲染模式(需要 option )并且默认情况下会被忽略(这意味着,即正在使用)。另外,关于它的文档非常糟糕,而这实际上例子处理与比较少见,因为母鸡的牙齿。因此,我决定开始我自己的方法。XRender.Xresource-norenderXRenderXRender
我希望有一种更简单的方法来完成这一切,但显然没有。首先,这个问题可能会帮助新用户指导如何为“他们的”进行设置xclock;另一方面,我也想问你们是否有任何方法可以改进我的“配置文件”(注意引号)。奇怪的是,它.Xresources被广泛认为是“过时的”和“上个世纪”,但是如果您使用的应用程序确实依赖于老式的方式,使用xrdb,.Xresources以及整个堆?
我个人喜欢“夜间设计”,因为它非常适合我的桌面风格。所以这就是我所做的:
$ touch ~/.Xresources
$ vi ~/.Xresources
XClock*foreground: #fbfbfb
XClock*background: #000018
XClock*update: 1
XClock*geometry: 210x210+1020+12
XClock.Clock.majorColor: rgba:f0/f0/19/7b
XClock.Clock.minorColor: rgba:a0/c0/f0/c0
XClock.Clock.hourColor: rgba:c9/66/11/72
XClock.Clock.minuteColor: rgba:00/82/9f/72
XClock.Clock.secondColor: rgba:50/93/30/6f
Run Code Online (Sandbox Code Playgroud)
rgba代表“红色、绿色、蓝色、alpha” - 其中第四个参数 alpha将以十六进制表示法表示不透明度级别:a00将使时钟指针或刻度线不可见;aff将关闭任何不透明度。
到现在为止还挺好。由于我们不想重新启动X服务器以使这些事情生效,我们将简单地将我们的设置合并到那些可能(或者像往常一样,可能不存在)已经存在的设置中:
$ xrdb -merge …Run Code Online (Sandbox Code Playgroud) 有趣的是,这tmux对某些人来说也是一个问题:http :
//daemonforums.org/showthread.php?t=7311
但目前我坚持使用screen,我想知道如何screen在这方面做出“行为”。
除非线条长于窗格的宽度,否则用鼠标选择文本是没有问题的。我已经尝试过:width, 有和没有-w选项。(包装是打开的,否则会看起来像一团糟(:+wrap))
哦,:width对设置非常挑剔。如果你设置的width太高,长的线会导致整个终端来回移动(即如果你的bash提示是user@host $它只会显示为r@host $),看起来非常难看。
选择一条分成几倍窗格宽度的长线将导致以下行为:
|(!),尝试继续该行,就好像它是一个多行脚本(结果bash: syntax error near unexpected token '|':)啊。即使使用鼠标,这也不能以某种方式工作吗?