*"for i in `seq 1 35`; do history -d 200; done"*
hay thiệt. Nó xóa một cái rẹt.

Làm thử một hồi mới ... đại ngộ ra rằng phải sửa cả "1 35" và "d- 200" thì
mới hiệu nghiệm.
May là chỉ thử trong $ nên có mất lệnh cũng không sao.

Cám ơn.

m k h _ s g n


2012/11/29 Anh K. Huynh <[email protected]>

> On Thu, 29 Nov 2012 05:35:37 -0800 (PST)
> maikhai <[email protected]> wrote:
>
> > Câu hỏi là: Muốn xóa ví du từ dòng 200 đến 234 bằng một lệnh duy nhất
> > thì phải gõ thế nào? Bạn nào biết xin vui lòng chỉ giáo. Cám ơn trước.
>
> Câu hỏi của bác rất hay. không dễ giải quyết tí nào :D  Giả định rằng
> bách đang dùng Bash shell. Nó lưu `history` ở hai nơi: bộ đệm của Bash,
> và tập tin (mặc định là `~/.bash_history`). Do định dạng ở tập tin
> `~/.bash_history` tùy vào biến $HISTTIMEFORMAT nên việc dùng `sed` là
> cách không ổn.
>
> Dưới đây là cách: Ví dụ để xóa từ dòng 200 đến 234, tức cần xóa 35
> dòng, thì thử:
>
>   for i in `seq 1 35`; do history -d 200; done
>
> Không thể dùng
>
>   for i in `seq 200 234`; do history -d $i; done
>
> vì sau mỗi khi thực hiện `history -d #index` thì Bash sẽ đánh số lại
> cho các entry, do đó entry 201 sẽ trở thành entry 200 sau khi entry 200
> bị xóa đi.
>
> Chính xác là : thực hiện 35 lần xóa entry thứ 200, chứ không phải là:
> xóa lần lượt entry từ 200 tới 234.
>
> --
> I am ... 5 dog years old.
>
> --
> List uri: https://groups.google.com/group/archlinuxvn
> List rules and others: http://archlinuxvn.org/vn/lists/
>
>
>


-- 
m k h _ s g n

Trả lời cho