Есть ли на Ubuntu лучший способ выполнить программу, чем терминальная команда “. /”

Команда Typeset -F перечисляет определения функций. (Он поддерживается как минимум Bash и ksh .) Использование awk Если вы хотите опубликовать обработку данных, например, Чтобы извлечь только имена функций.

-1
21.01.2015, 00:26
2 ответа

Вы можете просто запустить:

dos2unix < имя файла >

Это приведет к удалению всех символов ^ M из файла. ^ M - символ возврата каретки, созданный в среде DOS. Команда dos2unix просто преобразует файл из формата DOS в формат Unix.

Для удаления символов ^ H и ^ G используйте символы sed :

sed -i/\^ H//g; s/\^ G//g ' < имя _ файла >

-121--186374-

Оболочка или любой другой процесс, находящийся на переднем плане, уже считывала клемму, к которой был присоединен /dev/ttys011 . Затем вы запустили другой процесс, cat также , считывающий тот же терминал одновременно.

Теперь существует два процесса, конкурирующих за один и тот же вход с терминала. Каждый раз, когда вы вводите ключ в терминал, он доставляется в один из процессов ожидания. Другой процесс тоже заинтересован в чтении, но когда становится его очередь читать, ничего не остается читать. Несмотря на то, что вы, казалось, наблюдали регулярное чередование, какие символы идут к какому процессу, на самом деле непредсказуемо, какие части ввода будут идти к какому-то процессу: это могут быть все входные данные к одному, все входные данные к другому или что-либо между ними.

Если вы хотите, чтобы ваш процесс cat получил все входные данные, вам необходимо организовать одновременное чтение с одного и того же устройства. Один простой способ сделать это - запустить что-то вроде sleep 999 в терминале. sleep ожидает истечения срока задержки, но пока он ожидает, он не должен пытаться ничего прочитать.

Команда

cat /dev/ttys011 | tee /dev/ttys011

не восстанавливает исходные данные, захваченные cat . То есть, tee не доставляет его любому процессу, который изначально был заинтересован в его чтении (например, ваша оболочка), он просто отправляет его на выход терминала, что приводит к его отображению.

Кстати: вам не нужна программа Си и функция ttyname () , чтобы получить имя вашего терминала; необходимо только ввести tty и нажать enter в командной строке.

-121--161421-

./ не является командой. Это каталог (текущий каталог). Это означает, что вы запускаете файл ./phpstorm.sh (файл с именем phpstorm.sh , который находится в текущем каталоге). Сначала выполняется поиск каждой команды во всех каталогах переменной среды $ PATH . Вот почему, например, ls работает, и вам не нужно писать /bin/ls . Напишите

echo "$PATH"

, чтобы увидеть, какие каталоги находятся в поиске.

/bin уже должен находиться в PATH , поэтому phpstorm.sh должен всегда работать независимо от того, в каком каталоге вы находитесь (нет ./). Однако если требуется выполнить команды из любого текущего каталога, следует добавить . (текущий каталог) к существующему пути. Обычно помещая

export PATH=".:$PATH"

в файл .profile . Это не по умолчанию, но я всегда делаю это (если вы пишете какие-либо сценарии или приложения самостоятельно, очень неудобно всегда указывать текущий каталог напрямую). Однако, не делайте это для корня, это немного слишком мощно и вы можете сломать что-то по ошибке.

Другой «специальный» каталог - .. , который ссылается на родительский каталог. Вот почему кд.. идет «вверх». кд. ничего не сделает, потому что вы уже там.

2
28.01.2020, 05:09

Нет никакого официального и лучшего способа использовать Linux, но вы можете сделать свою жизнь проще (или, по крайней мере, сделать так, чтобы она включала меньше текста), скопировав скрипт в каталог в вашем $PATH, например, /usr/local/bin, если этот каталог находится в вашем пути. Используйте echo $PATH для просмотра списка каталогов, которые оболочка ищет для поиска команд

Если скрипт записан таким образом, что предполагает, что остальные файлы находятся относительно места, где он сам хранится, то вы должны добавить строку

cd <original_directory_where_the_script_was_located>

как одну из первых строк (но, по крайней мере, ниже первой строки, начинающейся с #! )

Если нет (другого) исполняемого файла с именем phpstorm, вы можете даже удалить .sh и просто запустить программу откуда угодно, используя:

phpstorm

из командной строки.

0
28.01.2020, 05:09

Теги

Похожие вопросы