我最近将我的系统从 Etch 升级到 Lenny。现在,当我使用自动完成功能时,文件名(而不是目录)会在命令行中以斜杠结尾。
它似乎与多个(所有?)命令有关。我尝试了一些:
aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Ubuntu 10.04ls可以显示 unicode 字符,但tree不能显示,即使使用tree --charset unicode或utf8。有没有办法解决。 echo可以解释转义字符,除非cat list.txt | echo -e不起作用(list.txt来自 tree > list.txt)
更新:tree -H www.somewhere.com可以输出unicode(应该是UTF-8)但现在看来这是唯一的方法——作为一个网页。
$ ls -R
.:
list2.txt list.txt ????????????????.txt ??
./??:
??2.txt ??.txt
$ tree --charset unicode
.
|-- list2.txt
|-- list.txt
|-- \344\271\205\346\234\252\345\234\250\351\201\212\350\241\214\345\240\264\345\220\210\351\234\262\351\235\242\347\232\204\345\211\215\347\270\275\347\265\261\346\235\216\347\231\273\350\274\235.txt
`-- \351\201\212\350\241\214
|-- \345\244\247\345\256\2662.txt
`-- \345\244\247\345\256\266.txt
1 directory, 5 files
$ tree --charset utf8
.
??? list2.txt
??? list.txt
??? \344\271\205\346\234\252\345\234\250\351\201\212\350\241\214\345\240\264\345\220\210\351\234\262\351\235\242\347\232\204\345\211\215\347\270\275\347\265\261\346\235\216\347\231\273\350\274\235.txt
??? \351\201\212\350\241\214
??? \345\244\247\345\256\2662.txt …Run Code Online (Sandbox Code Playgroud) 我想处理很多文件,因为我这里有一堆内核,所以我想并行处理:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Run Code Online (Sandbox Code Playgroud)
我知道 Makefile解决方案,但我的命令需要 shell globbing 列表中的参数。我发现的是:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
Run Code Online (Sandbox Code Playgroud)
要使用它,只需将 & 放在作业和 pwait 调用之后,参数给出并行进程的数量:
> for i in *; do
> do_something $i &
> pwait 10
> done
Run Code Online (Sandbox Code Playgroud)
但这并不能很好地工作,例如,我尝试使用 for 循环转换许多文件但给我错误并留下未完成的作业。
我不敢相信这还没有完成,因为关于 zsh 邮件列表的讨论现在已经很老了。那么你知道更好的吗?
如何从 bash 脚本写入 KDE 的 OSD 或通知区域?我使用的是 KDE 4.5,基本上我想要的是我的脚本在运行时报告一些东西。由于我通过快捷方式运行脚本,我没有控制台输出,但我想在通知区域写入 OSD。
我知道并使用“osd_cat”,但这只会在屏幕上显示一些难看的文字。
谢谢。
许多用户使用 ssh 访问一个服务器。我试图找出哪个用户执行了某个命令。
我可以知道当前访问服务器的用户列表,who
我也会知道使用history.
但是如何知道哪个用户cp file1.sh file2.sh在服务器中执行了命令?用户已执行命令并退出
我刚刚意识到我的系统上有一个文件;它通常列出:
$ ls -la T?S?ER.txt
-rw-r--r-- 1 user user 8 2013-04-11 18:07 T?S?ER.txt
$ cat T?S?ER.txt
testing
Run Code Online (Sandbox Code Playgroud)
...然而,它使一个软件崩溃,并出现与 UTF-8/Unicode 相关的错误。我真的很困惑,因为我不知道为什么这样的文件有问题;最后我记得检查lswith的输出hexdump:
$ ls T?S?ER.txt
T?S?ER.txt
$ ls T?S?ER.txt | hexdump -C
00000000 54 ce 95 53 d0 a2 45 52 2e 74 78 74 0a |T..S..ER.txt.|
0000000d
Run Code Online (Sandbox Code Playgroud)
...嗯,显然有一些字节之间/而不是一些字母,所以我猜这是一个 Unicode 编码问题。我可以尝试回显字节以查看打印的内容:
$ echo -e "\x54\xCE\x95\x53\xD0\xA2\x45\x52\x2E\x74\x78\x74"
T?S?ER.txt
Run Code Online (Sandbox Code Playgroud)
...但我仍然无法分辨这些是哪些 - 如果有 - Unicode 字符。
那么是否有一个命令行工具,我可以在终端上检查一个字符串,并获取有关它的字符的 Unicode 信息?
mkdir默认情况下创建具有 777 权限的文件夹。如何将 755 设为默认值?
此外,当我克隆一个 git 存储库时,所有文件和文件夹都以 777 权限下载!我该如何解决这个问题?
谢谢。
我已将命令cd C:\foo\bar\从 PowerShell复制到 Cygwin 并愚蠢地期望它执行。现在我想运行一个替代全部更换\用/:
$ !!:gs/\\/\/
bash: :gs/\\/\/: substitution failed
Run Code Online (Sandbox Code Playgroud)
不知道为什么我的替换失败了。
我也试过:
$ !!:gs/\\/q
Run Code Online (Sandbox Code Playgroud)
只是看看更换是否有问题。它不是。现在我很好奇!
为什么我会“替换失败”?
使用 bash shell,您可以在合成DEBUG信号上安装陷阱。这很有用,并且会在每个 shell 命令上执行您的函数或代码。例如:
$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG
Run Code Online (Sandbox Code Playgroud)
例如,这里的想法是将陷阱安装在放入的文件中,/etc/profile.d/bash-logger并让任何用户 shell 会话命令在发生时自动记录到系统日志中。这对于轻松跟踪远程命令也很有用。
查看 dash shell 源代码,我似乎明白没有这样的DEBUG信号可用。
是否有任何解决方法或替代方法可以使用破折号外壳实现相同的结果?