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

Я соглашаюсь, что это имеет огромное значение в удобстве использования. Я нахожу очень важным смочь к тройному щелчку и скопировать/вставить строкам, которые перенеслись. Существует два способа, которыми это может работать правильно. Любой тройной щелчок (и щелчок перетаскивают) выбирает мимо конца строки на следующую видимую строку без вставленного CR. Или иначе тройной щелчок выбирает только одну видимую строку, но когда Вы вставляете его, нет никакого CR.

Поврежденный путь состоит в том, когда тройной щелчок выбирает только видимую строку, и затем это принимает CR в конце, когда это вставляет. Я видел плохое поведение от терминала гнома и xterm. Я видел хорошее поведение из приложения для Терминала Mac, и от iTerm, который является другим приложением для терминала Mac.

У меня нет подсказок для того, чтобы превратить плохую ситуацию в хорошую кроме попытки другой терминальной программы. Я уверен, что это набрасывается, помнит ли терминальная программа на самом деле местоположения всего CRS, который она видит, или интерпретирует ли она просто CR и затем забывает это.

2
19.10.2012, 23:46
2 ответа

Не в стандартном комплекте инструментальных средств AFAIK. sh!) в стандартном комплекте инструментальных средств было бы самым близким к тому, что Вы хотите.

system("sh", "-c",  "! \"$0\" \"$@\"", "cmd", "arg1", "arg2"...)

Другие инструменты, которые могут выполнить команды, у любого нет той функции (находят, ENV, xargs...) или называют оболочку сами (редактор, awk...) для выполнения команды.

Ранние нельды имели, "если" команда, но она исчезла с Оболочкой Bourne, которая принесла расширенный, проверяет утверждения.

2
27.01.2020, 23:06

Попробуйте это:

[ ! `<yourFirtsCommand>` ]

Замена <yourFirtsCommand> с Вашей командой. Я рекомендую использовать правильный вид кавычек!
для предотвращения проблем с [], можно использовать:

test ! `<yourFirtsCommand>`
-2
27.01.2020, 23:06
  • 1
    Это, вероятно, не, что Вы хотите. То, что это сделает, собирают строковый вывод yourFirtsCommand, и инвертируйте его. Отрицание пустой строки возвращается 0 (оболочка - выступают верный), и отрицание непустой строки возвращается 1. Это даст Вам проблему, если вывод будет иметь пробелы в нем (в этом случае, Вам нужен дополнительный слой "..." кавычки), и это проигнорирует код выхода yourFirtsCommand. Плюс оболочка необходим для обработки угловых кавычек; я не думаю, что Вы могли просто непосредственно должностное лицо /bin\[ получить этот результат. Лучшее решение будет просто использовать оболочку и ! без [...]. –  dubiousjim 19.10.2012, 22:59
  • 2
    Вы правы, команда в принципе является неправильной, но она может работать в своем конкретном случае! –  ilbazzo 19.10.2012, 23:06

Теги

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