1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

[FAQ] Terminal.app для начинающих

Тема в разделе 'FAQ', создана пользователем vlzhukov, 18 мар 2008.

  1. npwski

    npwski GURU Гуру

    Симпатии:
    1`330
    @RodionS, По историческим причинам OS X в гуе показывает ":" как "/". Это потому что когда-то символом разделителя в путях служили двоеточия.
    "Macintosh HD:Users:User:Files"
     
    RodionS нравится это.
  2. RodionS

    RodionS iГуру

    Симпатии:
    3`495
    @npwski, и точно ))
    в Терминале папка называется z:
    Код:
    Mac-Pro-Rodion:~ rodion$ cd ~/Desktop/
    Mac-Pro-Rodion:Desktop rodion$ ls
    ....
    z:
    
    а в Файндере z/
     
    npwski нравится это.
  3. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    Захотелось мне из терминала запустить видео файл или Gif анимацию, но оказалось что это не так просто.)
    Идеальный вариант для моих хотелок, это что то типа afplay, жаль что для видео аналога в macOS я не нашёл, может плохо искал?
    Конечно есть вариант запустить Gif анимацию так.
    Код:
    qlmanage -p 2>/dev/null Magic.gif
    Получилось забавно и почти подходит, собранный мной GIF.app в Platypus для экспериментов можно взять тут GIF.zip

    Но это не то, возможности увеличить или сделать окно просмотра на весь экран нет, да и надпись в голове окна DEBUG, как то не очень.(
    Кстати командой (qlmanage -p) в терминале можно играть и видео и звук, но после их запуска, хоть звука хоть видео, запускается окно и ждёт, ждёт чтобы его толкнули для начала проигрывания, а мне так не подходит.(
    Конечно можно запустить видео через терминал и так.
    Код:
    open -a "iTunes" Magic.mp4
    Играть будет тоже в окне, после завершения останется открытым то, что не должно быть видным.
    Чтобы как то это исправить в Platypus я собрал app, в котором сделал так.
    Код:
    open -j /A*/iTunes.app
    open -a "iTunes" Magic.mp4
    sleep 4
    osascript -e 'quit app "iTunes"'
    Почти получилось, первая команда.
    open -j /A*/iTunes.app - открывает (подготавливает) проигрыватель без лишних глаз.)
    Вторая.
    open -a "iTunes" Magic.mp4 - запускает на уже разогретом тунце ролик.
    Третья.
    sleep 4 - ждёт пока он закончиться.
    А четвёртая.
    osascript -e 'quit app "iTunes"' - закрывает пригрователь.
    Проблема в том, что так как мне хочется он работает только через раз.
    На видео ниже, первый раз и третий подходит, а второй и четвёртый нет, паузу увеличивать пробовал, не помогает.

    Мой вариант Script.app можно взять тут Script.zip и при желании покрутить в нём script.)
    А можно и так.
    Код:
    set media to ((path to me as string) & "Contents:Resources:" & "Magic.mp4") as alias
    tell application "Finder" to set theName to (name of media)
    tell application "QuickTime Player"
        open media
        activate
        tell application "System Events"
            key code 3 using {control down, command down}
        end tell
        play document theName
    end tell
    При желании, вроде как можно и уйти от использовать для этого компилятора Apple Scripts, просто повторить это через терминал типа..,
    /usr/bin/osascript -e 'tell application "QuickTime Player" - и так далее..,
    Так получилось уже лучше.)

    Сам пакет тут Magic.zip
    Но опять, каждый раз окно разворачиваться, ну почему не сразу на весь экран?
    Да и шкала времени посреди экрана дикость какая.)))

    Кто знает простой способ проиграть видио или GIF анимации например командой из терминала?
     
    Последнее редактирование: 3 май 2017
  4. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
  5. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    Так он же вроде как конвертер, а не проигрыватель.
    Как им видео играть, покажи пример?
     
  6. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    Точнее ffplay, основанный на библиотеках FFmpeg
    Код:
    #!/bin/sh
    for file in $HOME/Desktop/*.*; do ./ffplay $file -hide_banner
      done
    
    Вот пробуй https://we.tl/NioB0bq2Sa
    Мануал https://linux.die.net/man/1/ffplay http://manpages.ubuntu.com/manpages/xenial/man1/ffplay.1.html
     
    Последнее редактирование: 4 май 2017
    m-dudarev нравится это.
  7. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
  8. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    @m-dudarev, Только $file сделай в кавычках ( "$file" ), а то будут проблемы с пробелами в названии видеофайла
     
  9. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    Мне сам ffplay подходит, а использовать я его буду по другому.)
     
    Sergey_Galan нравится это.
  10. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    Есть вопрос.
    Допустим мне нужно в скрипте для совершения задуманного предварительно остановить запущенный Демон, для этого я использую команду в терминале
    Код:
    sudo launchctl stop com.Демон
    И он благополучно останавливается, но когда я этот скрипт оформляю через Platypus, то в нём эта команда не работает, и не работает по причине прав, хотя собираю с поставленной птичкой запускать с Правами рута.
    Собственно для тестирования в Platypus можно собрать скрипт только с этой командой и проверить, не останавливает и всё, если просто через терминал всё гуд.
    Обойти получилось только так.
    Код:
    expect -c' proc abort {} {exit}
    spawn sudo launchctl stop com.Демон "{query}"
    expect {
    Password: { send "1\n" }
    }'
    Где 1 это пароль рута, вот так собранная команда в Platypus останавливает "com.Демон", может есть способ сделать это без принудительного ввода пароля?
     
  11. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    @m-dudarev, Просто c поставленной птичкой не надо писать в скрипте sudo
    Попробуй
    Код:
    launchctl stop com.Демон
     
    m-dudarev нравится это.
  12. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    В скрипте для Платипус я sudo и не добовлял, не работает.
    Хотя для любых других команд хоть добовляй sudo хоть нет при включённой птички всегда работают разницы нет.
    Тут что то другое.
     
  13. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    @m-dudarev, Возможно что то другое.
    Вот мой пример открытия EFI на диске с разделом Macintosh HD
    Этот вариант скрипта для терминала. В Платипусе он не будет открывать/закрывать EFI, но правда и ошибки не будет (если поставить птичку)
    Код:
    #!/bin/sh
    
    disk="$(diskutil list | grep 'Macintosh HD' | grep -o -e disk[0-9]s)1"
    if [ -d "/Volumes/EFI" ]; then
        echo " Unmounting EFI partition...."
        sudo umount -f /Volumes/EFI
    else
    sudo rm -rf /Volumes/EFI
    sudo mkdir /Volumes/EFI
    sudo mount_msdos /dev/"$disk" /Volumes/EFI
    echo " Mount EFI partition...."
    fi
    Этот для Платипуса, с ним открывает/закрывает EFI
    Код:
    #!/bin/sh
    
    disk="$(diskutil list | grep 'Macintosh HD' | grep -o -e disk[0-9]s)1"
    if [ -d "/Volumes/EFI" ]; then
       umount -f /Volumes/EFI
       echo " Unmounting EFI partition...."
    
    else
      rm -rf /Volumes/EFI
      mkdir /Volumes/EFI
      mount_msdos /dev/"$disk" /Volumes/EFI
      echo " Mount EFI partition...."
    fi
    При этом в Платипусе ставим птичку
    Снимок экрана 2017-05-13 в 09.56.33.
     

    Вложения:

    Последнее редактирование: 13 май 2017
    m-dudarev нравится это.
  14. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    Попробовал что ты показал, с твоим скриптом действительно это так, но в моём случаи... речь идёт о сбросе тестового периода для "Paragon Hard Disk Manager" чтобы не повторяться всё тут.
    https://applelife.ru/threads/asus-noutbuki-k56cb-i-podobnye.96647/page-62#post-657921
    Соответсвенно всё получилось, но остался вопрос почему если я сделаю например Reset Trial Period.command содержащий в себе.
    Код:
    #!/bin/sh
    sudo rm -r /L*/Application\ Support/Paragon\ Software/.config
    sudo launchctl stop com.paragon-software.installer
    open /A*/Hard\ Disk\ Manager.app
    killall Terminal
    
    Работает на 100%
    Но если я соберу это же в Platypus, например так.
    Код:
    #!/bin/sh
    rm -r /L*/Application\ Support/Paragon\ Software/.config
    launchctl stop com.paragon-software.installer
    open /A*/Hard\ Disk\ Manager.app
    Естественно с включенными правами root, не работает.
    Пример Script 5.app
    Причём не работает как раз по причине того, что не срабатывает команда остановки парагоновсого демона.
    launchctl stop com.paragon-software.installer
    А если его не прервать, то для того чтобы увидеть эффект от удаления скрытого файла .config нужно обязательно перезагружать всю систему полностью, а зачем это делать если всё можно сделать быстро как говориться в один клик.
    Тогда я добавил в скрипт принудительный ввод пароля root конкретно для команды
    launchctl stop com.paragon-software.installer
    И всё получилось, выглядит так.
    Код:
    #!/bin/sh
    rm -r /L*/Application\ Support/Paragon\ Software/.config
    expect -c' proc abort {} {exit}
    spawn sudo launchctl stop com.paragon-software.installer "{query}"
    expect {
    Password: { send "1\n" }
    }'
    open /A*/Hard\ Disk\ Manager.app
    Но это не совсем удобно, потому что нужно самому руками в скрипте Reset Trial Period.app менять пароль на свой, в этом примере пароль root 1
    Если будет время поэкспериментировать, то для того чтобы быстро понять работает или нет, нужно смотреть на первое окно сразу после запуска, если в нём будет цифра типа осталось 9 дней, вот так.
    1.
    Значит не работает, тогда когда сработает будет такое окно.
    2.
    Если выбрать "Запуск пробного периода" а потом закрыть программу и заново запустит скрипт, то сново должно появиться точно такое окно с предложением "Запуска пробного периода"
     

    Вложения:

    • Script 5.zip
      Размер файла:
      785.3 КБ
      Просмотров:
      0
    • Reset Trial Period.zip
      Размер файла:
      557.2 КБ
      Просмотров:
      0
    • command.zip
      Размер файла:
      1.7 КБ
      Просмотров:
      0
  15. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    @m-dudarev, Да, с Platypus лажа.
    Могу предложить вариант собраный на AppleScript, вроде всё работает)))
    Код:
    do shell script "sudo rm -rf /L*/Application\" Support/Paragon \"Software/.config" with administrator privileges
    do shell script "sudo launchctl stop com.paragon-software.installer" with administrator privileges
    --do shell script "open /A*/Hard\" Disk \"Manager.app" with administrator privileges
    tell application "Hard Disk Manager"
        activate
    end tell
     

    Вложения:

    m-dudarev нравится это.
  16. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    "do shell script" Подходит!
    В результате получилось всё красиво завернуть в Platypus так.
    Код:
    #!/usr/bin/osascript
    do shell script "rm -rf /L*/Application\" Support/Paragon \"Software/.config" with administrator privileges
    do shell script "launchctl stop com.paragon-software.installer" with administrator privileges
    do shell script "open /A*/Hard\" Disk \"Manager.app" with administrator privileges
    При проверке синтаксиса хоть тут он и возмущается..
    Снимок экрана 2017-05-13 в 23.12.14.
    Но при этом прекрасно работает.)
    И кстати, при сборе тут..
    2.
    Не одной птички, конечный результат прилепил.)
     

    Вложения:

    Sergey_Galan нравится это.
  17. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    @m-dudarev, если не секрет, почему именно Platypus? Ведь из AppleScript прекрасно апп делается и результат тот же )))
     
  18. m-dudarev

    m-dudarev iГуру

    Симпатии:
    2`234
    @Sergey_Galan,
    Не секрет, AppleScript для меня избыточно задурен, зачем далеко ходить вот с того что выше пример, ну зачем для того чтобы выполнить простую команду для запуска приложения нужно писать так.
    Код:
    tell application "Hard Disk Manager"
        activate
    end tell
    Если можно просто написать там же так.
    Код:
    do shell script "open /A*/Hard\" Disk \"Manager.app"
    То есть через shell, тогда почему не просто.
    Код:
    open /A*/Hard\ Disk \Manager.app
    В идеале чтобы всё как в терминале, а Platypus чтобы красиво оформить.)
    Чего спрашиваешь, если сам его активно используешь?
     
  19. Sergey_Galan

    Sergey_Galan iГуру

    Симпатии:
    956
    Зато имеет интерактивность - можно кнопочки прописать.
    Так получается osascript полностью как прокладка. Прописал хоть одну команду, ту что знал)))
    Это да, полезная программа
     

Поделиться этой страницей