2012-03-03 41 views
24

Tôi đã viết một tập lệnh bash đơn giản vì tôi đã sử dụng lệnh grep với cùng một đối số, nhiều lần. Tôi đang chạy nó từ ~/bin và nó chạy tốt.grep mất màu khi chạy từ tập lệnh bash

Vấn đề của tôi là: Tất cả màu sẽ biến mất khi nó chạy qua tập lệnh bash của tôi. Cùng lệnh chính xác đưa ngay vào dòng lệnh số độc đáo mã màu đường, tên tập tin, vv

Dưới đây là kịch bản bash tôi

#!/bin/bash 
# grep php files inside of myfolder, recursively and with line numbers 

grep -rn --include="*.php" "$2" /home/me/myfolder/$1 

Trả lời

40

Bạn đã có thể định nghĩa grep như một bí danh cho grep --color=auto trong .bashrc của bạn, nhưng không được tải bởi tập lệnh. Sử dụng một số grep --color rõ ràng trong tập lệnh của bạn.

+1

heh, quá: D – PlexQ

+0

Tôi sử dụng nó với --color = auto và nó không hoạt động – juanmf

0

Khi bạn chạy tập lệnh, một trình bao mới được sinh ra để làm như vậy. Môi trường mới này không có cài đặt giống như trình bao mặc định của bạn. Để làm thế nào để có được màu trở lại, tôi không chắc chắn. Bạn có thể thử tìm nguồn cung ứng hồ sơ của bạn vào lúc bắt đầu của kịch bản:

#!/bin/bash 
source $HOME/.bash_profile 

hoặc bất cứ tập tin có ý nghĩa về hương vị unix cụ thể của bạn (.profile, .bash_rc, .bashrc .bash_profile) đến tên một vài.

+0

Tôi đã thử điều này với 'nguồn $ HOME/.bashrc' và 'nguồn $ HOME/.profile' nhưng nó đã không 't làm việc cho tôi. Tôi đã thực sự hy vọng đây sẽ là giải pháp để tôi không phải nói rõ những thứ như '--color', hoặc bất kỳ thông số không lường trước được nào khác, trong các kịch bản tương lai. – jairbow

+1

Bạn có thể xuất tùy chọn sang môi trường của tập lệnh: 'xuất GREP_OPTIONS = '- color = always'' – Thor

Các vấn đề liên quan