User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 8 của 8

Chủ đề: "cls" và "clear"

  1. #1
    [ -~] Avatar của bino1810
    Tham gia ngày
    Mar 2012
    Bài gửi
    424

    Mặc định "cls" và "clear"

    Đang nghiền cuốn "How-to-Cheat-at-Windows-System-Administration-Using-Command-Line-Scripts" , ngẫm ra 1 điếu khá thú vị muốn chia sẻ và thảo luận với anh em

    Ai cũng biết trong Windows Shell thì "cls" dùng để xóa màn hình hiện tại, tương tự như vậy là "clear" trong Linux. Tuy 2 lệnh đều sử dụng với cùng mục đích là xóa màn hình nhưng hoạt động của chúng là khác nhau.

    Vậy điểm khác nhau ở đây là gì
    SVBK.VN Kết nối bạn bè - Bách Khoa tụ hội

  2. #2
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: "cls" và "clear"

    1 bên là xóa màn hình DOS, 1 bên là xóa màn hình CLI trên Linux, 2 cái này khác nhau ở chỗ đó . Ngoài ra clear trên Linux như mình thấy nó chỉ tạo 1 trang mới, tức là nếu sau khi clear mà cuộn chuột lên thì vẫn thấy những gì vừa gõ. Còn cls trên DOS thì chắc là xóa luôn
    Contact me:
    Email: sangnd [at] svBK.vn
    Personal website: My Blog | Chat với người lạ
    Facebook Page của Bách Khoa Forum: http://www.facebook.com/svbk.vn

  3. #3
    [ -~] Avatar của bino1810
    Tham gia ngày
    Mar 2012
    Bài gửi
    424

    Mặc định Re: "cls" và "clear"

    Quote Nguyên văn bởi 1973 Xem bài viết
    1 bên là xóa màn hình DOS, 1 bên là xóa màn hình CLI trên Linux, 2 cái này khác nhau ở chỗ đó . Ngoài ra clear trên Linux như mình thấy nó chỉ tạo 1 trang mới, tức là nếu sau khi clear mà cuộn chuột lên thì vẫn thấy những gì vừa gõ. Còn cls trên DOS thì chắc là xóa luôn
    Phân biệt Windows Shell và DOS rõ ràng nhé 2 cái khác nhau đấy.

    Khá chuẩn nhưng phải chỉnh một chút không phải là tạo một trang mới mà là sẽ dịch chuyển màn hình hiện tại lên trên, giống cách xóa màn hình trong JAVA

    Còn cls của Windows Shell thì giống như "clrscr" trong C

  4. #4
    HUT's Student
    Tham gia ngày
    Feb 2012
    Bài gửi
    272

    Mặc định Re: "cls" và "clear"

    Quote Nguyên văn bởi bino1810 Xem bài viết
    Còn cls của Windows Shell thì giống như "clrscr" trong C
    Trong C không có clrscr, đó là hàm của thư viện <conio.h>.
    C là ngôn ngữ không dành riêng cho một kiến trúc, một hệ điều hành nào. Những tính năng nó cung cấp phải là thứ có thể thực hiện được ở rất nhiều nền tảng.

    Chỉ mới có mấy cái shell mà việc xóa màn hình đã có sự khác biệt như thế. Mỗi hệ điều hành lại có thể có nhiều loại shell. Vậy thì cài đặt hàm xóa màn hình (nếu ngôn ngữ yêu cầu) kiểu gì ?
    Giả sử máy tính không có màn hình, vậy thì xóa màn hình kiểu gì ?

  5. #5
    [ -~] Avatar của bino1810
    Tham gia ngày
    Mar 2012
    Bài gửi
    424

    Mặc định Re: "cls" và "clear"

    Quote Nguyên văn bởi boss14420 Xem bài viết
    Trong C không có clrscr, đó là hàm của thư viện <conio.h>.
    C là ngôn ngữ không dành riêng cho một kiến trúc, một hệ điều hành nào. Những tính năng nó cung cấp phải là thứ có thể thực hiện được ở rất nhiều nền tảng.

    Chỉ mới có mấy cái shell mà việc xóa màn hình đã có sự khác biệt như thế. Mỗi hệ điều hành lại có thể có nhiều loại shell. Vậy thì cài đặt hàm xóa màn hình (nếu ngôn ngữ yêu cầu) kiểu gì ?
    Giả sử máy tính không có màn hình, vậy thì xóa màn hình kiểu gì ?
    Ở đây đưa ra sự tương đồng về mặt thuật toán thôi, chứ không có ý gì khác ( Tớ dốt lập trình )

    Thiết nghĩ máy tính không có màn hình thì nhu cầu xóa màn hình không còn cần thiết nữa

    PS: @1973 và @boss14420 có giáo trình Hệ điều hành và Kiến trúc máy tính của trường mình không share tớ phát

  6. #6
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: "cls" và "clear"

    Nói về C thì C không định nghĩa hàm nào để xóa màn hình cả, tất cả các ngôn ngữ phụ thuộc nền tảng hệ điều hành đều như vậy. Chỉ có JAVA, ngôn ngữ không phụ thuộc nền tảng thì nó hoàn toàn có thể định nghĩa riêng hàm xóa màn hình.

    Chúng ta thường gọi system("cls"); trên windows và system("clear"); trên Linux là thực chất đã gọi 1 lệnh trong shell của hệ điều hành. Còn cái clrscr(); là của thằng conio.h, conio.h hình như là thư viện chứa các hàm liên quan đến màn hình DOS thì phải (nhiều bạn cứ phụ thuộc vào thư viện này chỉ vì hàm clsrscr() và getch()).

    Còn bảo là máy tính ko có màn hình thì nó cũng sẽ không xuất được ra màn hình. Vậy cần gì phải xóa?

    @bino1810: trong thư viện số có đầy đủ tài liệu đấy.

  7. #7
    HUT's Engineer
    Tham gia ngày
    Jun 2011
    Bài gửi
    686

    Mặc định Re: "cls" và "clear"

    hai lệnh này khác nhau thì sao vậy

  8. #8
    Điều hành viên
    Tham gia ngày
    Mar 2012
    Bài gửi
    130

    Mặc định Re: "cls" và "clear"

    Đây là hàm C Windows API mô phỏng lại cách lệnh cls thực hiện

    Mã:
    void Cmd_clear()	{
            HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    	COORD Home = {0, 0};
    	DWORD dummy;
    	DWORD size = screen_buffer_info.dwSize.X * screen_buffer_info.dwSize.Y;
    
    	GetConsoleScreenBufferInfo(hConsole, &screen_buffer_info);
    	FillConsoleOutputCharacter(hConsole, ' ', size, Home, &dummy);
    	SetConsoleCursorPosition(hConsole, Home);
    	FillConsoleOutputAttribute(hConsole, 7, size, Home, &dummy);
    }
    Qua đây ta thấy ngay lệnh cls sẽ thực hiện như sau: mỗi cửa sổ console có 1 vùng đệm hình chữ nhật lưu các ký tự sẽ hiển thị và thuộc tính của nó (màu, ...). Lệnh cls sẽ handle vùng đệm cửa sổ console rồi điền các ký tự space ' ' vào buffer, sau đó đưa con trỏ cửa sổ về (0, 0) và thiết lập lại thuộc tính
    Còn lệnh clear như các cmt phía trên đã nói, nó giống như một lệnh sang trang mới như khi ta gõ word chẳng hạn

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube