Khởi chạy ứng dụng Chrome từ dòng lệnh


13

Tôi không thể tìm thấy cách khởi chạy ứng dụng chrome từ bash?

Tôi đang cố gắng để đạt được điều này với Postman .

Từ google-chrome -h, tôi đã thử (không may) những cái đó:

$ google-chrome --app="Postman"
$ google-chrome --extension="postman"

Kết quả là một cửa sổ trống mới được mở.

Dự đoán đầu tiên của tôi là ứng dụng được lưu trữ trên máy của tôi và tôi cần mở một tệp cụ thể (chỉ mục ứng dụng) để khởi chạy nó.

Có thể đạt được điều này?

Và nếu có thể, phải làm thế nào?


1
Có lẽ nếu bạn mở .desktoptệp tương ứng trong ~/.local/share/applications(kéo nó qua cửa sổ gedit đã mở), bạn có thể thấy lệnh chính xác trong Exec=dòng.
Jacob Vlijm ngày

Hoàn hảo, cảm ơn bạn @JacobVlijm. Lệnh sử dụng --app-id=[id]I giả sử id này là vĩnh viễn vì vậy tôi sẽ tạo bí danh, nhưng bạn có biết cách khởi chạy nó theo tên của nó không?
chalasr

@JacobVlijm Tại sao câu hỏi không trùng lặp với Lệnh nào tôi nên nhập để chạy Chrome từ thiết bị đầu cuối?
cúc

@daisy vì đó không phải là câu hỏi tương tự. Đây là về cách khởi chạy một ứng dụng chrome, chứ không phải chrome.
chalasr

Câu trả lời:


17

Đã trả lời cảm ơn @JacobVlijm.

Để chạy ứng dụng chrome từ dòng lệnh, hãy sử dụng như sau:

google-chrome --app-id=[app_id]

Giả sử đường dẫn google-chrome/opt/google/chrome/google-chrome.

Để lấy id ứng dụng, tìm kiếm lần xuất hiện đầu tiên của tên ứng dụng /home/[user]/.local/share/applications.


1
Hoàn hảo, không có thời gian để gửi câu trả lời, nhưng vẫn muốn giúp đỡ :)
Jacob Vlijm

Bạn thậm chí có thể lấy id ứng dụng từ URL Cửa hàng Chrome cho ứng dụng cụ thể. Tất nhiên điều này chỉ hoạt động nếu bạn có quyền truy cập vào internet :)
BarathVutukuri

1
Nếu bạn có nhiều hồ sơ Chrome, bạn cũng cần thêm thư mục hồ sơ vào dòng lệnh:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal

0

Thật không may, không có cách nào được cung cấp để gọi một ứng dụng theo dòng lệnh bằng tên của nó. Cung cấp tính năng này có nghĩa là phân tích thêm không đáng tin cậy cho các ứng dụng đã cài đặt và một số người sẽ coi đó là một lỗ hổng bảo mật. Tuy nhiên, bạn có thể tự phân tích cú pháp bằng một tập lệnh tìm kiếm và trích xuất tên của từng tiện ích mở rộng / ứng dụng cho đến khi tìm thấy tên bạn tìm kiếm:

/usr/local/bin/chrome-app-by-name:

#!/bin/zsh
emulate -R zsh -o extendedglob -o nullglob
setopt rematchpcre ;# recommended, I'm so used to PCRE, I sometimes forget what doesn't work in Regex
Chrome_Profile=Default  ;# or "Profile 1" ...
cd ${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/${Chrome_Profile}/Extensions
foreach app in */*
   # We have just called the path to each version of each extension/app.
   # Next we enclose in braces - slightly unnecessary - to ensure that
   #  whatever version of Zsh, "manifest.json" is completely read and 
   #  closed before we use the variable.
   {
      App_Manifest="$(cat <$app/manifest.json)"
   }
   if [[ $App_Manifest =~ '^\s*"name"\s*:\s*"([a-zA-Z 0-9_.-]+)"' ]]
   then
      app_name="$match[1]" ;# capture the sub-expression match for "name"
      if [[ $app_name == $1 ]]
      then
         # For my system this is actually exec google-chrome-stable ...
         exec google-chrome --app-id="${app%%/*}" $argv[2,-1]
      fi
   fi
end
echo "App name not found.  Please use Exact, case-sensitive spelling."

Một số ứng dụng đặt tên của họ sâu hơn trong các tập lệnh - Tôi không biết tại sao! Bạn có thể phải viết lại hoặc thêm vào tập lệnh như tập lệnh này để tìm kiếm các tệp ".desktop" trong ~/.local/share/applications'^ NAME = ...' tương đương với ở trên, sau đó nhận lệnh thực thi ở đó.

Tôi chưa thử kịch bản này - Tôi chỉ viết nó ngay lập tức để trả lời câu hỏi của bạn. Tôi hy vọng rằng đây là một ví dụ phù hợp với bạn, nhưng nếu ý tưởng đó không hoàn toàn đúng, chúng tôi có thể điều chỉnh nó một chút. Zsh là cú pháp đơn giản, chuyển tiếp so với một số shell tương thích sh khác. Tôi đã cố gắng loại bỏ bất kỳ tính năng nào yêu cầu các phiên bản hoặc mô-đun mới ngoại trừ PCRE. PCRE dễ sử dụng hơn rất nhiều cho việc khớp mẫu chính xác mà tôi thường cần đến nỗi tôi bỏ bê Regex thường xuyên. Một tập lệnh Perl dài hơn có thể hoạt động, hầu hết cú pháp này sẽ chạy không được sửa đổi trong /bin/bash. foreach ... end, $match[1]mảng kiểu, setopt rematchpcresystax chính xác của Bash Regex, và emulatelà những ngoại lệ chính.


0
  1. Mở thư mục chứa các ứng dụng được lưu trữ trong thiết bị đầu cuối của bạn.
  2. Chạy chmod +x *.desktop
  3. Quay trở lại thư mục đồ họa nơi ứng dụng của bạn cư trú
  4. Bây giờ họ nên có biểu tượng và họ sửa tên
  5. Nhấp chuột phải vào ứng dụng bạn muốn khởi chạy
  6. Nhấp chuột properties
  7. Trong Commanddòng được liệt kê khoảng một nửa là lệnh được sử dụng để mở ứng dụng đó.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.