Другие уже объяснили, что сделать. Позвольте мне объяснить, что происходит здесь: символ вертикальной черты |
не делает конвейер, поскольку переменная расширена, но действует как буквенный символ. Поэтому find
выполняется со следующими аргументами:
{"/path/to/webpage", "-type", "f", "|", "grep", "-v", ".svn", "|", ...}
и это интерпретирует |
как путь и жалуется, что это должно было появиться перед выражением (-type f
).
Другая большая ошибка состоит в том, что Вы используете `$cmd`
как единственная командная строка. Если $cmd
(т.е. find ...
) за которым следуют и произведенный вывод как rm -rf /
, это было бы выполнено от Вашего имени. Всегда берите осторожность, когда Вы возьмете данные в качестве кода!
Улучшение 1. find ... | grep -v ...
плохой путь состоит в том, чтобы исключить что-то из вывода: find
пересечет целые названные подкаталоги .svn
, продолжите линии, только чтобы быть выброшенными позже. Почему бы не сказать find
сделать это непосредственно?
find path -type f | grep -v .svn # don't do this
find path -name .svn -prune -o -type f -print # do this instead
Улучшение 2. При объединении find
и xargs
, всегда используйте -print0
в find
и -0
в xargs
:
find path ... -print0 | xargs -0 -r grep ... # I'd also recommend -r
или можно сделать это полностью в grep
:
grep --recursive --exclude-dir=.svn pattern path
Проблема или с Вашей установкой дисплея или htop
самостоятельно. Для устранения этого, это - проблема с htop
можно ли попытаться перенаправить его вывод в файл?
$ htop > htop_dump.txt
После выполнения этого затем поразил Ctrl+C. Если существует содержание в файле, more htop_dump.txt
, затем проблема, вероятно, находится с Вашей экранной установкой в Вашем терминале/оболочке.
Если на otherhand этот файл также ничего не показывает, то что-то повреждается в установке Вашей системы, любом с библиотекой это htop
зависит от, или htop
сам двоичный файл.
Вы могли бы также хотеть попытаться работать strace
видеть, существует ли ресурс/конфигурационный файл это htop
сдерживается это поливает из шланга, это - дисплей. Что-то вроде этого:
$ strace -o htop_strace.log -s 2000 htop
Я использовал " /usr/bin/konsole ". Для этого переменная $TERM была установлена в «Linux».
htop не работал в этом случае.
Когда htop вызывался из "/usr/bin/gnome -терминал" , он работал нормально, в этом случае для переменной $TERM было установлено значение "xterm".
Поэтому, когда я изменил $TERM на «xterm» с «Linux» на «konsole», это сработало.
Работа :Linux {hostName} 2.6.32 -754.6.3.el6.x86 _64 #1 SMP Вт 9 окт 17 :27 :49 UTC 2018 x86 _64 x86 _64 x86 _64 GNU/Linux
При сбое htop $XTERM был установлен на «Linux», последние строки в моей строке были следующими (на случай, если это полезно):
stat("/dev/vc/0", 0x7ffffaff2710) = -1 ENOENT (No such file or directory)
stat("/dev/tty0", {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 0),...}) = 0
getpid() = 88481
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig -icanon -echo...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig -icanon -echo...}) = 0
readlink("/proc/self/fd/0", "/dev/pts/61", 4095) = 11
open("/dev/pts/61", O_WRONLY) = 3
ioctl(3, TIOCGWINSZ, {ws_row=55, ws_col=228, ws_xpixel=0, ws_ypixel=0}) = 0
socket(PF_LOCAL, SOCK_STREAM, 0) = 4
connect(4, {sa_family=AF_LOCAL, sun_path="/dev/gpmctl"}, 13
bash --noprofile --norc
. – slm♦ 03.02.2014, 16:16read(...
в выводеstrace
? – slm♦ 03.02.2014, 16:19htop
надеется читать, почти просто зависает на нем. – slm♦ 03.02.2014, 17:10strace
для обнаружения проблемы – Kokizzu 04.02.2014, 03:58