태그 보관물: xdg-open

xdg-open

터미널에서 기본 프로그램으로 여러 파일을 여는 방법은 무엇입니까? 여는 것을 알았습니다! 그래서 조금 검색했지만 그런

사용하여 폴더에서 모든 .mp3 파일을 열려고 xdg-open 했지만 하나만 여는 것을 알았습니다! 그래서 조금 검색했지만 그런 질문은 없었습니다! “확실히”찾았지만 텍스트 파일이 열리고 gnome-open도 하나의 파일을 엽니 다.

터미널의 폴더에서 동일한 형식의 모든 파일을 열고 싶습니다. 우분투를 처음 사용하므로 조금 더 설명해주세요.



답변

과연. 쉘을 사용하여 다음과 같이 해결할 수 있습니다.

ls -b *.mp3 | xargs -n 1 xdg-open

또는 더 강력하게하려면

find -iname '*.mp3' -print0 | xargs -0 -n 1 xdg-open

답변

당신은 시도 할 수 있습니다:

ls *.mp3 | while read -r file; do xdg-open "$file"; done

ls *.mp3현재 디렉토리의 모든 mp3 파일을 각각의 줄에 나열하고 출력을 while루프 마녀로 파이프하여 각 줄의 내용을 읽고 해당 내용을 엽니 다 (이 경우 mp3 파일의 이름) )를 기본 응용 프로그램에서


답변

작은 스크립트 /usr/local/bin/o를 작성했지만 /usr/local/bin/xdg-open원하는 경우 전화를 걸고 기본 명령을 바꿀 수 있습니다 ( $PATH우선 순위를 가정 ). 또한 인수가 없으면이 스크립트는 대신 현재 디렉토리를 엽니 다.

#!/usr/bin/env bash
if [ $# -eq 0 ]; then
  xdg-open . &> /dev/null
else
  for file in "$@"; do
    xdg-open "$file" &> /dev/null
  done
fi

인수없이 현재 디렉토리를 열지 않으려면 기본 동작이 유지됩니다 (예 : 사용법 표시).

#!/usr/bin/env bash
if [ $# -eq 0 ]; then
  xdg-open &> /dev/null
else
  for file in "$@"; do
    xdg-open "$file" &> /dev/null
  done
fi

NB 이것은 기본 프로그램이 여러 인수를 구문 분석하는 기능에 대해 무시할 수 있지만 대신 각 인수에 대해 각 명령을 한 번 호출합니다. 사용자가 xdg-open다른 종류의 파일을 원할 수도 있고 일부 명령은 여러 인수를 취하지 않기 때문에이 문제를 해결할 수있는 우아한 방법이 없다고 생각 합니다.


답변

내가 bash생각할 수있는 모든 사용 사례를 다루기 위해이 스크립트를 작성했습니다 .

#!/bin/bash
set -euo pipefail; shopt -s failglob # bash strict mode

max=${max:-10} # Set default maximum if $max is not set
[[ ${all:-} ]] && max=$# # Set max to all files if $all is non-null

for file in "${@:1:$max}"; do
  xdg-open "$file"
done &>>~/.xsession-errors

풍모:

  • 터미널을 오염 시키거나 버리지 않고 ~ / .xsession-errors에 오류 출력을 씁니다.
  • 기본적으로 최대 10 개의 파일을 열도록 설정합니다 (화면 / 프로세서에 과부하가 걸리지 않도록)
  • 로 새로운 최대 값을 설정할 수 있습니다 max=20 open $(ls -Q)
  • 모든 파일 열기 허용 (예 : all=1 open $(ls -Q)

답변

다음은 하나의 라이너입니다.

ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`

VLC가 설치되어 있고 mp3의 기본값으로 VLC가있는 디렉토리의 모든 mp3 파일이 열립니다. 이것은 어떤 종류의 ” 유니버설 해결, 모든 것, 그리고 모든 작업에서 괴물 같은 경우 “는 아니지만 작동 해야 합니다.

설명:

ls -AQp“거의 모든”파일을 나열하고 파일 이름을 인용하고 디렉토리 이름에 슬래시를 추가합니다. 교체 -p--file-type당신은뿐만 아니라 심볼릭 링크를 제외하고자하는 경우. 파일 이름에 공백이있는 경우 인용.

grep "\.mp3\"$" “.mp3″(더하기 인용 부호)로 끝나는 파일 만 선택합니다.

xargs 다음 하위 쉘이 반환하는 프로그램으로 전체 로트를 리디렉션합니다.

서브 쉘 :

xdg-mime query default audio/mpegmime 파일의 기본 앱 이름을 “app.desktop”형식으로 제공합니다 audio/mpeg. 로 환경의 모든 파일에 대한 mimetype을 확인할 수 있습니다 xdg-mime query filetype /path/to/file. mp3 파일 용 “audio / mpeg”가 있습니다.

grep -oP '.+(?=\.desktop)' “app.desktop”에서 “app”를 가져옵니다.

많이 변경되지 않는 시스템에서 자주 사용하는 경우 다음과 같이 줄이십시오.

ls -AQp | grep "\.mp3\"$" | xargs default_app

default_app파일로 열리는 실제 프로그램으로 교체 하는 경우 다음과 같이 이름을 알아낼 수 있습니다.

xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'

xdg-open이 문제는 의도적으로 하나의 인수 만 허용하기 때문에 작동하지 않습니다. 를 사용하는 경우 xargs -n1문제의 결과 앱이 새 인스턴스에서 모든 파일을 열 수 있으므로 여러 가지 방법으로 추악해질 수 있습니다.


답변

이 명령들을 사용할 수 있습니다

cd /path/to/source_folder

find . -type f -name *.mp3 -exec vlc {} \+

음악 플레이어가 여러 파일을 명령 줄 인수로 지원하는 경우에만 가능합니다. vlc선택한 음악 플레이어로 교체하십시오 .

이것은 내 테스트에서 RhythmBox 및 VLC와 함께 작동합니다.


답변

VLC에서 파일을 열려면 mp3 파일에이 명령을 사용하십시오.

vlc /directory/*.mp3

참고 : cvlc인터페이스없이 VLC를 사용 하려면 사용하십시오 .