Làm cách nào để tạo tập lệnh với lệnh đa


0

Tôi đã cố gắng tạo một tập lệnh trên OS X. Tôi đã làm gì đó sai. Tôi muốn thực thi 2 lệnh:

defaults write com.apple.finder CreateDesktop -bool true

killall Finder

Tôi đã lưu và chmod tệp nhưng tôi gặp một số lỗi:

/Users/max/Desktop/visible.command ; exit;
MacBook-Pro-de-Maxime:~ max$ /Users/max/Desktop/visible.command ; exit;
/Users/max/Desktop/visible.command: line 1: {rtf1ansiansicpg1252cocoartf1343cocoasubrtf160: command not found
/Users/max/Desktop/visible.command: line 2: syntax error near unexpected token `}'
/Users/max/Desktop/visible.command: line 2: `{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;\f1\fmodern\fcharset0 Courier;}'
logout

đầu ra

Cảm ơn sự giúp đỡ của bạn!


rõ ràng tập lệnh của bạn có dòng "rtfiansiansicpg1252cocoartf1343cocoasubrtfr160" ở dòng 1. Bạn nên lưu tập lệnh của mình một tệp văn bản thuần túy. Bạn đã sử dụng TextEdit hoặc Pages để lưu tệp lệnh của mình chưa? Đây có thể là lý do.
Rilakkuma

Câu trả lời:


3

Bạn đã lưu tệp của mình dưới dạng tệp Định dạng văn bản có định dạng (.rtf)

Trong TextEdit.app

Mở tệp của bạn và sử dụng menu Make Plain Text để thay đổi nó thành định dạng chính xác để mã hóa.

Sử dụng bất cứ thứ gì ngoài văn bản kế hoạch sẽ có nghĩa là tệp bao gồm mã định dạng cho các kiểu và như vậy có thể nhìn thấy đối với lớp vỏ nhưng không hiển thị cho người dùng khi xem tệp.

Ví dụ.

Tệp định dạng văn bản có định dạng thay đổi mở rộng vẫn là tệp văn bản có định dạng

nhập mô tả hình ảnh ở đây


Đọc nó từ dòng lệnh.

$ cat foo.command

{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;}
{\colortbl;\red255\green255\blue255;\red43\green39\blue19;\red234\green234\blue234;\red37\green127\blue159;
}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\deftab720
\pard\pardeftab720

\f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
defaults write com.apple.finder \cf4 \expnd0\expndtw0\kerning0
CreateDesktop\cf2 \expnd0\expndtw0\kerning0
 -bool true}

Thay đổi thành văn bản đơn giản và được lưu lại.

nhập mô tả hình ảnh ở đây


nhập mô tả hình ảnh ở đây


Đọc từ dòng lệnh.

$ cat foo.command
defaults write com.apple.finder CreateDesktop -bool true

(ví dụ chỉ để minh họa chứ không phải cách thực hiện mã hóa thực tế)


-1

Nếu bạn chỉ cần chạy bất kỳ hai lệnh nào thông qua tập lệnh, bạn có thể tạo một cái gì đó như thế này, mở trình soạn thảo văn bản và thêm:

#!/bin/bash
echo foo && echo bar

Lưu nó dưới dạng foo.sh, sau đó:

$ sh ./foo.sh
foo
bar

Việc &&cho phép bạn có hai lệnh được thực thi, lần lượt từng lệnh hoặc bạn chỉ có thể đặt các lệnh trên các dòng khác nhau.

Trong trường hợp của bạn, thay thế echo foobằng defaults write com.apple.finder CreateDesktop -bool truevà thay thế echo barbằng killall Finder. Có lẽ bạn sẽ cần phải chạy foo.shvới các đặc quyền nâng cao bằng cách sử dụng $ sudo sh ./foo.shvì bạn đang thay đổi mặc định và giết chết các pids.

Bạn cũng có thể phải làm cho nó thực thi được:

chmod +x foo.sh

Xem https://stackoverflow.com/questions/8409946/how-do-i-make-this-file-sh-executable-via-double-click


Tại sao các downvote?
Eric Dorsey

Xin lỗi, tôi đã đánh giá thấp câu trả lời của bạn. Rõ ràng chủ đề thông minh đã biết rằng việc tạo một tệp văn bản bằng các lệnh sẽ đưa anh ta đến mục tiêu và hỏi tại sao hành động của anh ta không thành công. Câu trả lời của bạn không có nhiều thông tin vì lý do này. Ngoài ra, (xin lỗi, quá kén chọn) khi đề cập đến những thứ như "pid" cho ai đó đấu tranh để lưu tệp văn bản sẽ không hiệu quả.
Rilakkuma

@Rilakkuma OP tuyên bố: "Làm thế nào tôi có thể tạo một tập lệnh" và "Tôi muốn thực thi 2 lệnh" &&thực thi hai lệnh và tôi đã đưa ra một ví dụ về việc chạy nó trong một tập lệnh. Làm thế nào mà KHÔNG phải là một câu trả lời cho câu hỏi của anh ấy?
Eric Dorsey

Sẽ không tranh cãi về vấn đề này, nhưng có thêm một dòng: "Tôi đã lưu và chỉnh sửa tệp nhưng tôi gặp một số lỗi".
Rilakkuma

Vậy làm thế nào để đưa ra nhiều ví dụ về việc làm những gì OP đang cố gắng không giúp anh ta có được một giải pháp?
Eric Dorsey
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.