Я не знаю, являются ли оболочкой сервера, в которую Вы входите, исходные Korn Shell, но если так, можно изменить конец pbsu
сценарий так, чтобы
[ -n "$REMOTEHOST" ] && /usr/local/bin/pbrun -h $REMOTEHOST -u $USERNAME /usr/local/bin/pbksh $LOGIN_SWITCH [ -n "$REMOTEHOST" ] || /usr/local/bin/pbrun -b -u $USERNAME /usr/local/bin/pbksh $LOGIN_SWITCH
становится
[ -n "$REMOTEHOST" ] && /usr/local/bin/pbrun -h $REMOTEHOST -u $USERNAME /usr/local/bin/pbksh $LOGIN_SWITCH ${@:2} [ -n "$REMOTEHOST" ] || /usr/local/bin/pbrun -b -u $USERNAME /usr/local/bin/pbksh $LOGIN_SWITCH ${@:2}.
Затем Вы смогли бы просто отправить команды на сервер, не входя в оболочку, с помощью
pbsu - sftwrk01 -c "your commands here"
(Следите за кавычками!) Так, для Вашего примера, это было бы
pbsu - sftwrk01 -c "ls -lrt var/can/log"
(Заметьте, между прочим, что Вы не должны изменяться на некоторый каталог для списка его содержания - просто дают название того каталога к ls
команда, как показано выше.)
Каждая строка файла содержит строку
^M 1
дважды. Таким образом,
<carriage-return><tab>1
^M^I1
\r\t1
(Это - три различных представления тех же управляющих символов),
Когда это отправляется непосредственно на Ваш терминал, как cat
сделает, терминал интерпретирует это как инструкцию попятиться к началу строки, отодвинуться 8 символов и отобразить a 1
.
Когда Вы cat
исходный файл, это дополнительное 1
обнаруживается сверху существующего 1
, таким образом, Вы не заметили его.
После изменения префикса от scaffold
кому: scaffold_
, дополнительное 1
теперь обнаруживается по _
, таким образом, теперь Вы заметили его.
Когда Вы открываете файл в vi
или emacs
, редактор не интерпретирует <carriage-return>
упорядочьте тот же путь, но вместо этого отображает его.
Я предполагаю, что Вы не хотите <carriage-return><tab>1
строки в Вашем файле. Можно удалить их с sed
:
sed -i 's/\r\t1//g' myfile
Относительно Ваш "Я не могу доверять своим глазам" комментарий - начиная с изменения управляющих последовательностей, как вещи отображены, да, они могут сбивать с толку. Один способ просмотреть вещи более ясно с cat
-v
и -T
опции:
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
-T, --show-tabs display TAB characters as ^I
-t equivalent to -vT
Например:
$ cat myfile
scaffold1test
$ cat -t myfile
scaffold_hello^M^I1
^M
возврат каретки.
можно использовать dos2unix <file>
разделять ключи DOS из Вашего файла
dos2unix
преобразует окончания строки из CRLF
кому: LF
. Существуют нет CRLF
последовательности в этом файле; просто пустой CRS (не в конце строк).
– Jim Paris
09.10.2012, 20:57
vi
и less
. Они показали пустое CR
s непосредственно посреди строк. Кроме того, это полностью объясняет поведение, которое он видит.
– Jim Paris
09.10.2012, 21:04
Если Вы не имеете dos2unix
, можно сделать это с sed
:
sed -i 's/\r//g' <THE FILE NAME>
Это удалит все возвраты каретки.
dos2unix
. dos2unix
полосы CR
от a CRLF
; эта команда разделит CR
везде. Но файл автора вопроса имеет больше, чем просто случайный CR
s, таким образом, это оставит его с посторонним TAB
и 1
символы также.
– Jim Paris
09.10.2012, 20:59