Tag: shell

Трубопроводы для выхода цикла предотвращают изменение локальной переменной

Я пытаюсь написать простую функцию bash, которая принимает в качестве аргументов несколько файлов и / или каталогов. Должно: Полностью квалифицируйте имена файлов. Сортируйте их. Удалите дубликаты. Распечатайте все, что на самом деле существует. Возвращает количество несуществующих файлов. У меня есть сценарий, который почти делает то, что я хочу, но падает на сортировку. Возвращаемое значение скрипта […]

Что должны делать интерактивные оболочки в сиротских группах процессов?

(Повторная публикация в unix по предложению в https://stackoverflow.com/questions/13718394/what-should-interactive-shells-do-in-orphaned-process-groups ) Короткий вопрос: что должна сделать оболочка, если она находится в сиротской группе процессов, которая не владеет tty? Но я рекомендую прочитать длинный вопрос, потому что это забавно. Вот забавный и захватывающий способ превратить ваш ноутбук в переносной обогреватель, используя вашу любимую оболочку (если вы не один […]

Есть ли способ, чтобы функция в моем сценарии bash автоматически запускалась при любой ошибке команды?

Я пишу сценарий оболочки, который должен выполнять кучу команд, и каждая команда зависит от каждой предыдущей команды. Если какая-либо команда выходит из строя, весь сценарий должен завершиться неудачно, и я вызываю функцию выхода. Я могу проверить код выхода каждой команды, но мне интересно, есть ли режим, который я могу включить, или способ получить bash для […]

Что случилось с этой командой xargs?

Рассмотрим выход: % { echo one; echo two; echo three; } | xargs -I{} -L1 echo test-{} test-{} one test-{} two test-{} three Почему {} не заменяется на странице руководства (и моей памяти тоже)? Как изменить командную строку, чтобы получить test-one , test-two , test-three строки в качестве вывода?

«переключатель» на основе оболочки

Я бы хотел, чтобы исходный (т. Е. Не вызывал ) скрипт из любой оболочки (bash / csh являются первичными целями, но также интересны рыба, zsh, ksh и rc). Я бы хотел, чтобы сценарий мог быть единственным файлом, то есть не файлом для каждого диалекта оболочки. Я могу это сделать? Я думаю о чем-то подобном: if […]

Как получить PID подоболочки в Korn Shell (эквивалент $ BASHPID)

В bash у вас есть эта удобная переменная: $ BASHPID, которая всегда возвращает PID текущего запущенного подселлея. Как я могу получить PID подоболочки в ksh? Например, см. Код ниже: #!/usr/bin/ksh93 echo "PID at start: $$" function run_in_background { echo "PID in run_in_background $$" run_something & echo "PID of backgrounded run_something: $!" } function run_something { […]

Как получить UUID файловой системы с учетом пути?

Мне передан путь к каталогу или файлу. Какой сценарий утилиты / оболочки надежно даст мне UUID файловой системы, на которой находится этот каталог / файл? По UUID файловой системы я имею в виду UUID=… запись, как показано, например, blkid Я использую Redhat Linux. (кто-то предложил мне спросить об этом здесь, на unix.stackexchange.com, поэтому я переместил […]

Почему «cat / tmp / out1> / tmp / in2 &» отображается как «bash» с помощью команды «ps»?

Рассматривать: mkfifo /tmp/out1 mkfifo /tmp/in2 cat /tmp/out1 > /tmp/in2 & Когда я бегу ps он появляется как bash в секции CMD . Зачем?

команда: ls / etc | сортировать | grep d * не дает результатов, но ls / etc | сортировать | grep p * перечисляет всю директорию

Сегодня я играю с трубкой и grep. Я знаю, что grep использует регулярное выражение и что * означает 0 или более вхождений предыдущего символа. Таким образом, я понимаю, что если я сделаю следующую команду, весь каталог должен быть указан … но ничего не указано. Все, что происходит, это сброс командной строки: [root@LinuxAcademy etc]# ls /etc […]

Как эхо экранировать экранированную строку

Как я могу эхо эскиз строки, содержащей $ в Bourne Shell? user@server:~$ cat test.sh #!/bin/sh echo $1 user@server:~$ ./test.sh \$sad\$test $sad$test Я хочу, чтобы он возвращал экранированную версию следующим образом: user@server:~$ ./test.sh \$sad\$test \$sad\$test Я пробовал делать трюки с sed и awk, но не повезло. Любое руководство будет высоко оценено.

Linux и Unix - лучшая ОС в мире.