আমি কীভাবে ডিফল্ট অ্যাপ্লিকেশন সহ ডাব্লুএসএল থেকে একটি ফাইল "খুলতে" পারি?


12

সর্বাধিক পদ্ধতি প্রদান openকমান্ড (অথবা হিসাবে পরিচিত start, cygstart, xdg-openইত্যাদি) যা ডেস্কটপ পরিবেশে এর "ডিফল্ট" অ্যাপ্লিকেশন, যাই হোক না কেন যে একটি ফাইল খোলে।

উদাহরণস্বরূপ, আমি প্রবেশ করার সময় পাওয়ারশেল থেকে:

PS> start form.pdf

দস্তাবেজটি এজ এ খোলা আছে।

উইন্ডো-উবুন্টু-উইন্ডোজ কি এটি করতে পারে?

উত্তর:


29

যেহেতু উইন্ডোজ লিনাক্স ইন্টারপ কাজ শুরু করেছে আপনি এখন কল করতে পারেন:

cmd.exe /C start <file>

আপেক্ষিক পাথের জন্য আমার পক্ষে কাজ করে, পরম পাথের জন্য আমি সি / দ্বারা / mnt / c প্রতিস্থাপনের জন্য একটি স্ক্রিপ্ট লিখেছিলাম: ... | sed 's/\/mnt\/\(.\)/\1:/1' | xargs cmd.exe /C start
মাইকেল

1
সুন্দর সমাধান। আমরা superuser.com/q/1110974/66714 থেকে তথ্য ব্যবহার করে লিনাক্স ফাইল সিস্টেমে ফাইলগুলি অ্যাক্সেস করতে পারি । এরকম কিছু cmd.exe /c start "%localappdata%/lxss/$(readlink -f $some_relative_path)"এখন আমরা আগুন দিয়ে রান্না করছি!
চিজমিস্টার

2

এটি আপনি ক) ডাব্লুএসএল বা বি এর মধ্যে একটি লিনাক্স প্রোগ্রাম চালু করতে চান কিনা তার উপর নির্ভর করে) আপনি বাশ শেল প্রম্পট থেকে উইন্ডোজ প্রোগ্রাম চালু করতে চান।

বি) তবে হ্যাঁ আপনি যদি সাইগউইন / বাশ ইনস্টল করেন। উদাহরণস্বরূপ উইন্ডোজের জন্য গিট ইনস্টল করুন এবং আপনার কাছে ব্যাশ সহ উইন্ডোগুলির নীচে একটি সিস্টেম চলছে। তারপরে আপনি কেবল শুরুটি চালাতে পারেন, এটি আসলে স্ক্রিপ্ট হিসাবে অন্তর্ভুক্ত রয়েছে:

$ cat /usr/bin/start
#!/usr/bin/env bash
# Copyright (C) 2014, Alexey Pavlov
#   mailto:alexpux@gmail.com
# This file is part of Minimal SYStem version 2.
#   https://sourceforge.net/p/msys2/wiki/MSYS2%20installation/
# File: start

cmd //c start "${@//&/^&}"

যদি ক) তবে এটি আরও জটিল হয়ে পড়ে বিশেষত যদি আপনি জিইউআই উইন্ডোতে একটি .pdf প্রদর্শন করতে একটি লিনাক্স প্রোগ্রাম চালু করতে চান। নোট করুন যে উইন্ডোজ একটি পিডিএফ ফাইল খোলার জন্য একটি ডিফল্ট অ্যাপ্লিকেশন সংযুক্ত করতে জানে তবে ডাব্লুএসএল এর তথ্য নেই। এমনকি যদি আপনি ডাব্লুএসএল এর অধীনে একটি ডেস্কটপ চালু করেও পিডিএফ খোলার জন্য আপনাকে একটি লিনাক্স জিইউআই অ্যাপ্লিকেশনটি যুক্ত করতে হবে।

স্পষ্ট করার জন্য নোট, ডাব্লুএসএল-এর মধ্যে আপনি লিনাক্স এক্সিকিউটেবল উইন্ডোজ এক্সিকিউটেবল নয়:

(WSL):~# file /bin/gzip
/bin/gzip: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=68cc3c090405cf6d40e97d2ff58085fd26940602, stripped

(WSL):~# file /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
 /mnt/c/Program Files/Internet Explorer/iexplore.exe: PE32+ executable (GUI) x86-64, for MS Windows

(WSL):~# /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
 bash: /mnt/c/Program Files/Internet Explorer/iexplore.exe: cannot execute binary file: Exec format error

2

যেমন মার্তিজান উল্লেখ করেছেন যে এটি একটি উইন্ডোজ অ্যাপ্লিকেশন / ফাইলটি সম্পাদন / খোলার সঠিক উপায়।

cmd.exe /C start <file>

আমি এটি আমার সিস্টেমের পথে থাকা একটি ফোল্ডারে রেখেছি এমন একটি বাশ স্ক্রিপ্টে কাজ করা খুব দরকারী বলে মনে করি। আমি এটির নাম দিয়েছি startএবং chmod 0744এটি সম্পাদনযোগ্য করার জন্য ফাইলটি করি do এর $*অর্থ এটি স্ক্রিপ্টে আপনি যে সমস্ত কমান্ড লাইন দিয়েছিলেন সেগুলি আর্গুমেন্ট পাস করবে cmd.exe

#!/bin/bash
cmd.exe /c start "Launching from BASH" "$*"

আমার সিস্টেমের পথে এই কমান্ডটি দিয়ে আমি লিনাক্সের মতো উইন্ডোতে খোলা কমান্ডগুলি করতে পারি:

  1. start FileXYZ.pdf // উইন্ডোজে ডিফল্ট নির্ধারিত পিডিএফ ভিউয়ারে পিডিএফ খোলে
  2. start explorer . // উইন্ডোজ এক্সপ্লোরারে বর্তমান ডাব্লুএসএল ফোল্ডারটি খোলে
  3. start MyApp.exe // উইন্ডোজ অ্যাপ্লিকেশন চালু করে

1
একমাত্র সমস্যা হ'ল এই সমাধানটি ফাইলগুলির সাথে কাজ করে না যার নামে সাদা অংশ রয়েছে।
0x7d7b

@ h3nrik দুর্দান্ত পয়েন্ট। আমার ধারণা লিনাক্সের ফাঁকা জায়গাগুলি নিয়ে আমি প্রচুর ফাইল খুলি না। আমি এটি পরিচালনা করতে স্ক্রিপ্ট আপডেট করেছি।
সিউডোস্যাভ্যান্ট

লিনাক্সে হোয়াইটস্পেসযুক্ত ফাইলের নামগুলি সাধারণত ব্যাকস্ল্যাশগুলির মতো পরিচালনা করা হয় a\ whitespace.pdf। আপনার স্ক্রিপ্ট শুরু করা start.sh a\ a.pdf b\ b.pdfকাজ করবে না।
0x7d7b

explorer.exe .উইন্ডোজ এক্সপ্লোরারে বর্তমান পথটি খোলে
জননি

1

eopen ডাব্লুএসএল-এর মধ্যে বিভিন্ন ফাইল (ডিরেক্টরি এবং ইউআরআই) খুলতে পারে।

https://github.com/ko1nksm/eopen-ecd

উদাহরণ

# Open directory with (latest used) Explorer
eopen ~/.config/

# Open directory with new instance of Explorer
eopen -n ~/.config/

# Opens with Windows default application
eopen image.png

# Opens with Windows text editor
eopen -e ~/.bashrc

# Use sudo to edit the unowned file
eopen -e --sudo /etc/hosts

# Opens with Windows default browser
eopen http://google.com

# Open files and directories under Windows
eopen C:/Windows

# Open files and directories under Network shared folder
eopen //server/shared

# Others
eopen mailto:user@example.com   # Mail protocol
eopen calculator:               # Application
eopen shell:Personal            # Shell commands
eopen :MyComputerFolder         # Shorthand for shell:
eopen shell:::{2559a1f8-21d7-11d4-bdaf-00c04f60b9f0} # CLSID
eopen :                         # Current Explorer location
eopen :/workspace               # Relative path from current Explorer location


1

আপনি Start-Processডাব্লুএসএল থেকে পাওয়ারশেলের আদেশটি কল করতে পারেন :

powershell.exe -Command Start-Process file

এটি পরম পাথগুলির সাথেও কাজ করার জন্য, আপনি wslpath -waউইন্ডো-পাথের পাথটি অনুবাদ করতে কমান্ডটি ব্যবহার করতে পারেন ।

powershell.exe -Command Start-Process `wslpath -wa /absolute/path/to/file`

cmd.exeসমাধানের চেয়ে এটির একটি সুবিধা রয়েছে : মাউন্ট করা নেটওয়ার্ক শেয়ারগুলির জন্য, wslpathইউএনসির মতো পথ তৈরি করে \\server\share\। এই ইউএনসি পাথগুলি পরিচালনা করা যায় না cmd.exe


1

আমি খুঁজে পেয়েছি যে এক্সপ্লোরারআরেক্সে সঠিক সমাধানের পথ (এমনকি মাউন্ট করা নেটওয়ার্ক ডিরেক্টরিগুলি) আবিষ্কার করতে এবং ডিফল্ট সরঞ্জামটি চালু করতে বেশ ভাল কাজ করে। একটি গ্যাচা হ'ল ফাইল নামটিতে আপনার পাথ থাকতে পারে না, তাই এক্সপ্লোরার সঠিকভাবে চালু করার জন্য আপনাকে একটি সামান্য সহায়ক ফাংশন / স্ক্রিপ্ট তৈরি করতে হবে, যেমন:

win() { 
    # get full unsymlinked filename 
    file=`readlink -e $1` 
    dir=$(dirname "$file") 
    base=$(basename "$file") 
    # open item using default windows application 
    (cd "$dir"; explorer.exe "$base")
}

আপডেট: এনজিও আরেকটি স্ক্রিপ্ট দেখিয়েছে wslpath, এটি পাথ রূপান্তর করে, যাতে আপনি সরাসরি এক্সপ্রেস.আর.কে.কে কল করতে পারেন (রূপান্তর করার পরে)। তারপরে উপরের ফাংশনটি তুচ্ছ হয়ে যায় এবং সহজেই একটি উপাধি তৈরি করা যায়।


দুর্দান্ত সমাধান!
স্টেলেডোগ

0

ব্যবহার করার চেষ্টা করুন wsl-open। এটি তাদের স্ট্যান্ডার্ড-উইন্ডোজ-অ্যাপ্লিকেশন সহ ফাইলগুলি খুলবে এবং এখানে ডাউনলোড করা যাবে: https://github.com/4U6U57/wsl-open

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.