Mở ứng dụng để chỉnh sửa tập tin văn bản từ dòng lệnh


9

Khi cài đặt TextWrangler trong OSX, bạn cũng nhận được một editlệnh cho phép bạn mở bất kỳ tệp văn bản nào từ dòng lệnh.

Có thể có một chức năng tương tự trong Ubuntu để gõ một số lệnh trên thiết bị đầu cuối để mở một tệp trong trình soạn thảo văn bản cụ thể (nói Kate)?

Câu trả lời:


11

Để mở tệp bằng cách sử dụng kate, bạn có thể chạy một cái gì đó như:

kate filename

Điều này có thể hiển thị một số tin nhắn như:

kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/home/user/.local/share/mime/magic"
Bus::open: Can not get ibus-daemon's address. 
IBusInputContext::createInputContext: no connection to ibus-daemon

Để xóa các thông báo này, hãy chuyển hướng luồng đầu ra lỗi sang /dev/null:

kate filename 2>/dev/null

Nếu bạn muốn tiếp tục sử dụng cùng một thiết bị đầu cuối, hãy thêm một &lệnh sau:

kate filename 2>/dev/null &

Nếu bạn muốn chạy edit filenameđể mở nó, bạn có thể tạo một hàm bash trong ~/.bashrctệp của mình . Thêm mã tiếp theo vào ~/.bashrctệp của bạn :

edit() { kate "$@" 2>/dev/null & }

Điều này trở nên gần hơn với những gì tôi đang tìm kiếm. Cảm ơn vì đã thực sự chạy các lệnh và xem các vấn đề sẽ phát sinh với các giải pháp rõ ràng nhất. Tôi đoán những gì tôi sẽ làm là tạo ra một lệnh mới mà tôi có thể gọi là edit filenameđể chạy toàn bộ kate filename 2>/dev/null &.
Juan A. Navarro

1
@Juan: Tôi đã thêm một ví dụ để làm điều đó. Điều $@này là cần thiết trong trường hợp bạn cần vượt qua các tùy chọn bổ sung như số dòng. Để thay thế, bạn có thể điều chỉnh chức năng này để hỗ trợ edit filename linenumber.
Lekensteyn

Bạn có một lỗi trong câu trả lời của bạn và dường như tôi không thể chỉnh sửa nó. Bạn đã quên các trích dẫn xung quanh $@(nên là "$@"), điều đó có nghĩa là tập lệnh của bạn sẽ thất bại với tên tệp chứa khoảng trắng.
Scott Severance

18

Bạn có thể mở (Theo hiểu biết của tôi) bất kỳ trình soạn thảo nào như thế này:

NAME_OF_EDITOR PHIM

gedit filename(Ubuntu)
kate filename(Kubfox)
bluefish filename
kwrite filename
libreoffice filename

Bạn thậm chí có thể mở một trang web theo cùng một cách
firefox filename.html
chrome filename.html
banshee filename.ogghoặc .mp3

Bạn có thể thấy xu hướng ở đây ..


Trên thực tế, nó phải là gedit filename &thiết bị đầu cuối vẫn không sử dụng được. Điều tương tự cũng xảy ra với kate, nhưng ngay cả với &nó làm cho thiết bị đầu cuối không thể sử dụng được vì nó bắt đầu phun thông tin gỡ lỗi (hoặc bất cứ thứ gì) đến thiết bị đầu cuối. Có cách nào để tránh &cuối cùng không? Như tôi làm với editTextWrangler?
Juan A. Navarro

Không bao giờ, câu trả lời từ Lekensteyn là (ít nhất là gần hơn) với những gì tôi đang tìm kiếm.
Juan A. Navarro

1
Đúng, bạn có thể thêm & hoặc thậm chí thêm 2> / dev / null vào nó để không xuất lỗi và nội dung trong bảng điều khiển nếu bạn muốn tiếp tục sử dụng nó.
Luis Alvarado

3

Nếu bạn thích sử dụng lệnh edittrong Ubuntu cũng bởi vì bạn đã quen làm như vậy, bạn cũng có thể xác định bí danh cho trình soạn thảo yêu thích của mình như cho Kate:

alias edit='kate'

Để làm cho bí danh này chỉ cần thêm dòng này vào ~/.bash_aliases.


2

Nếu bạn không có bất kỳ môi trường đồ họa nào và bạn đang chạy trên bảng điều khiển, bạn luôn có thể sử dụng:

vim foo.txt
nano bar.txt
pico foo.html
emacs bar.xml
...

và cứ thế rơi trở lại câu trả lời đầu tiên ..


1
"emacs -nw" hoặc "xemacs -nw" nếu bạn muốn emacs VT100 (x) ngay cả trong môi trường có cửa sổ.
barrycarter

1

Bạn có thể sử dụng lệnh CLI cho trình soạn thảo mong muốn để mở và chỉnh sửa tệp. Ví dụ gedittrong gnome hoặc katetrong KDE.

Chỉ loại:

kate filename

để mở tập tin trong kate.


1

Đôi khi tôi sử dụng một thiết bị đầu cuối cổ điển trong đó mcedit là trình soạn thảo ưa thích của tôi và thường muốn truyền số dòng, để sửa một chương trình / tập lệnh.

Để gọi chúng một cách thống nhất, edit source.sh 123tôi đã viết kịch bản này, mà tôi đã đặt là 'chỉnh sửa' trong đường dẫn:

#!/bin/bash
#   - edit a file using mcedit or gedit, depending on X11 or console invoking.
#   - jump to specified line, if any.

Xedit=/usr/bin/gedit

if [[ $TERM = "linux" ]]; then
    if [ $# -eq 1 ]; then
        mcedit $1
        else if [ $# -eq 2 ]; then
#           echo "edit invoked\t/usr/bin/mcedit +$2 $1" >> /tmp/edit.log
            /usr/bin/mcedit +$2 $1
            else if [ $# -eq 0 ]; then
                /usr/bin/mcedit
            fi
        fi
    fi
    else if [[ $TERM = "xterm" ]]; then
        # scheint nicht zu helfen
        # LANGUAGE=C
        export LC_ALL=C
        if [ $# -eq 1 ]; then
            $Xedit $1
            else if [ $# -eq 2 ]; then
#               echo "edit invoked\t/usr/bin/scite -open:$1 -goto:$2" >> /tmp/edit.log
                # $Xedit -open:$1 -goto:$2
                $Xedit +$2 $1 
                else if [ $# -eq 0 ]; then
                    $Xedit
                fi
            fi
        fi
    fi
fi

Sử dụng xem hướng dẫn gỡ lỗi cũ từ khi tôi sử dụng scite, không phải gedit, như trình soạn thảo đồ họa.

Một cái gì đó, không hoạt động theo cách này, đang mở nhiều tệp như thế này:

 edit *.html

nếu có nhiều hơn một tệp html, thì mẫu sẽ được mở rộng thành nhiều tệp.

Các yêu cầu hợp lệ là:

 edit 
 edit foofile 
 edit foofile 123

từ X hoặc thiết bị đầu cuối.

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.