Never ask how to use, just wonder how to make...
Showing posts with label tutorial. Show all posts
Showing posts with label tutorial. Show all posts

Jun 9, 2012

Install SkypeTab-NG on Fedora


SkypeTab-ng is a program that adds tabs to Skype™ for Linux (ng stands for next generation).
SkypeTab-ng on Github: https://github.com/kekekeks/skypetab-ng

To install it on Fedora 16-17, just run following command as root

rpm -Uvh "http://widehat.opensuse.org/repositories/home:/keks-n:/skypetab-ng/Fedora_16/noarch/skypetab-ng-0.4.10-23.1.noarch.rpm"
For other instructions (other distro, description), see see here.

Dec 23, 2010

Cài đặt server SVN trên nền CentOS

Subversion (SVN) là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm.
Trong bài viết này tôi sẽ trình bày các bước thiết lập một máy chủ Subversion trên nền hệ điều hành CentOS. Bài hướng dẫn này bao gồm các nội dung chính:
- Cài đặt subversion và cách tạo một repository mới
- Thiết lập WebDAV để có thể sử dụng SVN qua giao thức HTTP
Bạn cần hiểu về các khái niệm của SVN trước khi cài đặt. Có thể tham khảo ở link sau: http://svnbook.red-bean.com/en/1.5/svn.basic.html

1. Cài đặt Subversion
Trên Centos, cài đặt subversion rất đơn giản, bạn chỉ cần sử dụng lệnh yum:
# yum install subversion

2. Bước tiếp theo sẽ là tạo một repository mới. Giả sử bạn đã có thư mục /services/subversion, và muốn tạo repository mới ở đây, tên là new_project. Các lệnh để thiết lập như sau:
# svnadmin create --fs-type fsfs /services/subversion/repositories/new_project

3. Cài đặt và cấu hình mod_dav_svn của Apache
WebDAV (RFC 2518) là một tập hợp các chuẩn mở rộng của giao thức HTTP, để cho phép nhiều người dùng có thể hợp tác sửa đổi và quản lý từ xa các file trên một webserver. Được viết dựa trên tập chuẩn WebDAV, module dav_svn của Apache cho phép chúng ta truy cập repository SVN của mình thông qua máy chủ web Apache.
- Cài đặt mod_dav_svn:
# yum install mod_dav_svn
- File /etc/httpd/conf.d/subversion.conf:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
< Location /repos/ >
DAV svn
SVNParentPath /services/subversion/repositories/
AuthzSVNAccessFile /services/subversion/auth/acl
SVNListParentPath on
SVNPathAuthz off
AuthType Basic
AuthName "SVN Center"
AuthUserFile /services/subversion/auth/account
Require valid-user
</Location >
Các tham số quan trọng của file subversion.conf:
Tham số Location quy định URL SVN của bạn (VD: http://example.com/repos/new_project).
Tham số SVNParentPath khai báo đường dẫn tới thư mục chứa các repository.
Tham số AuthUserFile khai báo đường dẫn tới file chứa các tài khoản người dùng SVN.
Giá trị của tham số AuthzSVNAccessFile là đường dẫn đầy đủ của file cấu hình ACL, có chức năng phân quyền cho người dùng.
- Tạo thư mục auth:
# mkdir /services/subversion/auth
- Tạo file tài khoản:
# touch /services/subversion/auth/account
- Tạo file access control list:
# touch services/subversion/auth/acl
- Restart Apache:
# service httpd restart

4. Để có thể sử dụng repository new_project ta đã tạo ở bước 2, cần thiết lập permission cho phép Apache sử dụng thư mục repository (giả sử Apache đang được chạy bởi user apache):
# chown -R apache:apache /services/subversion/repositories/new_project
# chmod -R g+w /services/subversion/repositories/new_project
# chmod g+s /services/subversion/repositories/new_project/db

5. Tạo một tài khoản SVN mới bằng lệnh (hệ thống sẽ yêu cầu bạn khai báo mật khẩu cho tài khoản này):
# htpasswd -m /services/subversion/auth/account svn_user

6. Cấp quyền truy cập cho tài khoản svn_user bằng cách khai báo repository và tài khoản vào file acl như sau:
[new_project:/]
svn_user = rw

Như vậy, tài khoản svn_user sẽ có quyền đọc và ghi đối với repository new_project. Bạn có thể check out repository của mình thông qua URL http://example.com/repos/new_project với tài khoản trên.
Nếu bạn muốn tạo thêm một repository mới, hãy thực hiện lại các bước 2, 4, 5, 6.

Để tìm hiểu thêm về cách cài đặt và cấu hình Subversion, bạn hãy đọc chương 5 của ebook: http://svnbook.red-bean.com/en/1.5/svn-book.html


Jun 23, 2009

Làm chủ Linux Bash shell: Chuyển hướng xuất/nhập trong Linux

Tiếp tục serie bài Làm chủ Linux Bash shell với một bài viết của anh Nguyễn Việt Cường, thành viên nhóm OSG ColTech. Bài viết đã được đăng ở diễn đàn Fotechchủ đề này.

Hôm nay nhân chuyện có người hỏi về làm thế nào để chạy một lệnh một cách "âm thầm" tức là không in cái gì ra màn hình cả, mình viết một cái tut nhỏ về chuyện này. Ví dụ đưa ra ở đây là lệnh curl, chi tiết về cú pháp lệnh thì sử dụng "man curl" trên Linux hoặc trên Google.

Trước hết, ta sẽ đi thẳng vào vấn đề rồi sau đó mới giải thích. Để một lệnh chạy trong chế độ "âm thầm" như vậy thì ta thêm đoạn sau vào đuôi lệnh:
> /dev/null 2>&1
Mà cụ thể nếu ta muốn làm công việc đó với lệnh curl thì như sau:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2>&1
Vì sao lại làm thế? Dấu ">" có ý nghĩa gì? "/dev/null" là cái gì mà ghê gớm thế? "2>&1" là cái gì mà trông kì lạ thế? Đó cũng là những thắc mắc của mình khi bước vào thế giới Linux/Unix.

1. Giới thiệu

Trên hầu hết các hệ điều hành nói chung và Linux/Unix nói riêng thì có 3 dòng xuất nhập chuẩn (I/O) là STDIN, STDOUT và STDERR mà chức năng tương ứng là dòng nhập chuẩn, dòng xuất chuẩn và dòng xuất lỗi chuẩn. Chúng được gọi là các open file và hệ thống gán cho mỗi file này một con số gọi là file descriptor. Ba con số tương ứng với 3 dòng xuất nhập chuẩn ở trên là 0, 1 và 2. Cụ thể:
standard input -> stdin -> 0<> stdout -> 1>
standard error -> stderr -> 2>
Trong C++ thì 3 dòng xuất nhập chuẩn này tương ứng với 3 đối tượng cin, cout và cerr.

Chú ý: Trong bài tut này thì mình sử dụng Bourne shell trong đó dấu $ thể hiện user bình thường và # thể hiện user root. Tuy nhiên hầu hết nội dung trong bài này có thể áp dụng với một số loại shell khác như sh, csh, tcsh... Với C chell (csh, tcsh) thì không sử dụng được các con số (file descriptor).

2. Xuất/Nhập

Trong chế độ command line của hầu hết các hệ điều hành thì "<" dùng cho chuyển hướng nhập và ">" dùng cho chuyển hướng xuất. Vì sao phải chuyển hướng? Vì có nhiều lúc ta muốn kết quả xuất ra màn hình được lưu lại vào một file và dữ liệu nhập vào thay vì từ bàn phím thì lại từ một file.

2.1. STDIN

STDIN chỉ các dòng nhập chuẩn nói chung và nó thường là từ bàn phím. Khi chúng ta gõ bàn phím tức là chúng ta đang nhập vào STDIN. Để dữ liệu đầu vào là một file thì ta dùng dấu "<". Ví dụ, nếu ta dùng lệnh cat mà không có tham số thì khi ta gõ gì nó sẽ hiển thị ra cái đó, hay nói đúng hơn sẽ hiển thị lại những gì ta nhập vào từ input chuẩn. Vậy thì giả dụ ta cần hiển thị file /etc/passwd thì ngoài cách truyền thống là
$ cat /etc/passwd
thì ta có thể sử dụng:
$ cat < /etc/passwd
hoặc
$ cat 0< /etc/passwd
Tại sao lại có thể bỏ số 0 mà chức năng vẫn tương tự? Đó là vì mỗi khi khởi tạo một process thì hệ thống đã gắn một dòng nhập chuẩn cho process đó mà ở đây là STDIN hay 0.

2.2. STDOUT

STDOUT là các dòng xuất chuẩn nói chung và nó thường là xuất ra màn hình, ra cửa sổ console hoặc terminal. Để dữ liệu đầu ra được ghi vào một file thì ta sử dụng dấu ">". Ví dụ ta muốn danh sách các file trong một thư mục được ghi vào file dir.txt thì ta sử dụng lệnh sau:
$ ls -al > dir.txt
hoặc
$ ls -al 1> dir.txt
Lí do vì sao có thể bỏ số 1 đi tương tự như với STDIN, tức là khi khởi tạo một process thì hệ thống đã gắn một dòng xuất chuẩn cho process đó mà ở đây là STDOUT hay 1.

Đến đây ta có thể kết hợp sử dụng song song STDIN và STDOUT để làm thao tác copy file. Ví dụ ta muốn backup file /etc/passwd thì ta có thể làm như sau:
$ cat < /etc/passwd > ~/passwd.bak
Lệnh này tương đương với lệnh:
$ cp /etc/passwd ~/passwd.bak
Có một ứng dụng cực kì có ích của việc kết hợp này là chuyển đổi file text giữa Windows và Unix. Như các bạn đều biết thì trong file text của Windows, việc xuống dòng được thể hiện bằng cặp kí tự \r\n còn trong Linux/Unix thì chỉ là \n. Ai phải trên cả hai môi trường đều thấy sự bất tiện của việc chuyển đổi đó. Giải pháp đưa ra ở đây là sử dụng lệnh tr, cụ thể như sau:
tr -d '\r' <> unix.cpp
Lệnh này sẽ nhận dòng nhập chuẩn sau đó xoá các kí tự \r rồi ghi ra dòng xuất chuẩn. Dòng nhập và dòng xuất ở đây được định hướng lại để đến từ một file và ghi ra một file.

Tuy nhiên nếu dùng ">" thì nội dung của file sẽ bị xoá trước khi ghi nội dung mới. Nếu ta muốn nội dung mới sẽ được ghi nối tiếp vào file thì ta sử dụng 2 dấu lớn hơn, tức là ">>". Ví dụ nếu bạn muốn nối nội dung của thư mục /home vào cuối file passwd.bak ở trên thì bạn làm như sau:
$ ls /home >> ~/passwd.bak
Bây giờ nếu ta muốn lấy mã HTML của trang chủ của OSG và ghi vào file osg.html thì ta sử dụng lệnh sau:
$ curl http://osg.vnu.edu.vn/ > osg.html
Thực hiện lệnh trên các bạn có thấy gì lạ không? Mặc dù mã HTML thay vì xuất ra màn hình mà được đưa vào file osg.html nhưng vẫn có các thông tin thể hiện trạng thái download hiển thị trên màn hình. Làm thế nào mà lại được như thế? Làm thế nào để lệnh curl câm lặng hoàn toàn? Hồi sau sẽ rõ.

2.3. STDERR

STDERR là dòng xuất lỗi chuẩn nói chung và nó cũng thường xuất trực tiếp ra màn hình, console hay terminal. Cú pháp tương tự như STDOUT, tức là sử dụng ">" để xuất ra file và ">>" để nối vào một file đã có (chưa có thì hệ thống sẽ tự tạo ra). Tuy nhiên điểm khác biệt là bạn phải chỉ rõ số 2, tức là "2>" hoặc "2>>". Lí do là vì chỉ có 1 dòng xuất chuẩn và 1 dòng nhập chuẩn cho mỗi process mà thông thường hệ thống chỉ định là STDOUT và STDIN.

Vậy trong trường hợp của lệnh curl trong phần 2.2 ở trên, nếu ta muốn ghi cả 2 loại output đó ra file thì ta làm như sau:
$ curl http://osg.vnu.edu.vn/ > osg.html 2> osg.log
Thế nào? Không có cái gì xuất ra màn hình hết đúng không? Vì nội dung trang web đã được lưu vào file osg.html còn các dòng lưu trạng thái download đã được ghi vào file osg.log.

Nhưng thế thì tốn dung lượng đĩa và có nguy cơ gây hỏng đĩa vì phải ghi file mà. Con người quả thật quá tham lam . Vậy thì phải sáng tạo ra cái gì đó như kiểu cái thùng không đáy hay gọi mĩ miều hơn thì nó là "lỗ đen" hay "black hole", tức là một nơi mà cho cái gì vào cũng mất hút luôn. Linux/Unix có cái đó cho bạn, đó là /dev/null.

2.4. /dev/null
Theo định nghĩa trên Wikipedia của /dev/null:
In Unix-like operating systems, /dev/null or the null device is a special file that discards all data written to it (but reports that the write operation succeeded), and provides no data to any process that reads from it (it returns EOF). In Unix programmer jargon, it may also be called the bit bucket or black hole.
Tạm dịch là:
Trong các hệ điều hành kiểu Unix, /dev/null hay thiết bị null là một tệp tin đặc biệt, nó bỏ qua mọi dữ liệu ghi lên nó (nhưng có báo cáo về việc ghi dữ liệu thành công) và không cung cấp bất kì dữ liệu gì khi đọc từ nó (trả về EOF). Trong biệt ngữ của các lập trình viên Unix, nó đuợc gọi là "bit bucket" hoặc "black hole".
Vậy thì đó chính là cái ta cần rồi. Như vậy câu lệnh curl ở trên có thể cho nó thực hiện câm lặng bằng cách:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2> /dev/null
Không có cái gì xuất ra màn hình cả, cũng không có cái gì được ghi lại cả. Nhưng... lại nhưng, con người vẫn tham lắm, làm thế nào để cái lệnh trên ngắn gọn hơn, trông technical hơn, nói chung là để ai không biết thì sẽ không hiểu gì (đôi khi đó là cái thú của dân kĩ thuật). Ta sẽ dùng "2>&1" ở đây, tức là:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2>&1
Câu lệnh trên tức là dòng xuất chuẩn (1) sẽ bị đưa vào /dev/null và dòng lỗi chuẩn (2) sẽ được đưa vào dòng xuất chuẩn (1) mà ở đây là /dev/null.

Đặc biệt lưu ý là với cú pháp sử dụng dấu & thì dấu & và dấu > phải đi liền nhau, không có khoảng cách.

Ngoài các file descriptor 0, 1, 2 ở trên thì còn có từ 3 -> 9 nữa. Tuy nhiên bài viết này chỉ dành cho mức độ newbie nên không để cập sâu, chi tiết các bạn có thể tự tìm hiểu thêm trên Internet hoặc trong các sách về lập trình shell.

3. Pipe

Như vậy chúng ta đã biết cách để chuyển hướng dòng xuất/nhập của một lệnh hay một process. Bằng cách này ta có thể chuyển dữ liệu xuất của một lệnh thành dữ liệu nhập của một lệnh khác thông qua một file trung gian. Tuy nhiên ta không muốn có file trung gian đó, một phần vì việc ghi lên đĩa cứng, phần khác là do... tham. Đó chính là vấn đề mà pipe giải quyết. Trong Linux, ta sử dụng dấu "|" để làm việc này.

Ví dụ khi ta muốn xem lại nội dung thư mục /etc nhưng kết quả của nó lại dài quá mà ta muốn xem lại thì ta làm như sau
$ ls -al /etc | more
hoặc
$ ls -al /etc | less
(thoát bằng phím q).

hoặc ta muốn đếm số user trong hệ thống có sử dụng mặc định bash shell thì ta làm như sau:
$ cat /etc/passwd | grep "/bin/bash" | wc -l
Lệnh này có nghĩa là đưa nội dung file /etc/passwd ra dòng xuất chuẩn; dòng xuất chuẩn này thành dòng nhập chuẩn của lệnh grep và lệnh này chỉ lọc ra các dòng có chưa xâu "/bin/bash" để đưa ra dòng xuất chuẩn; dòng xuất chuẩn này lại thành dòng nhập chuẩn của lệnh wc -l là lệnh đếm số dòng của dòng nhập chuẩn và đưa ra số dòng ra dòng xuất chuẩn; cuối cùng dòng xuất chuẩn này sẽ được đưa ra trực tiếp màn hình vì nó không thành dòng nhập chuẩn của lệnh nào nữa.

4. Tài liệu tham khảo
[1] Google
[2] Wikipedia

Dec 12, 2008

Làm chủ Linux Bash shell: Xử lý string trong Bash shell

Một trong những shell được sử dụng thường xuyên trong Linux là bash shell. Khi viết các shell script, công việc mà người sử dụng hay gặp phải nhất có lẽ là xử lý string (tìm file, xử lý tên file, xử lý log, xử lý chuỗi nhập vào,...). Sau đây tôi xin trình bày một số điểm mấu chốt thú vị trong xử lý string với bash shell.

Hai lệnh đầu tiên, đơn giản nhưng tương đối hữu ích, đó là dirnamebasename. Cho một biến có chứa 1 string dạng đường dẫn đến 1 thư mục D hoặc 1 file X, lệnh basename sẽ trả về đúng tên thư mục D hoặc tên file X, còn lệnh dirname trả về phàn đường dẫn đến thư mục mẹ của D hoặc X. Ví dụ:
$ basename /home/thangphamduy/workspace/foo.txt
foo.txt
$ dirname /home/thangphamduy/workspace/foo.txt
/home/thangphamduy/workspace
$ basename /home/thangphamduy/workspace
workspace
$ dirname /home/thangphamduy/workspace

/home/thangphamduy

$ ALPHA="/home/thangphamduy/temp/bar.txt"
$ BETA=`dirname $ALPHA`
$ echo $BETA
/home/thangphamduy/temp

Đó chỉ là xử lý xâu đơn giản, tiếp đây, chúng ta thử xử lý xâu một cách "pro" hơn với bash shell. Trong 1 biểu thức, ta thường bắt gặp một biến được đặt trong cặp dấu ngoặc nhọn kiểu như ${MYVAR}. Và bash cũng cho phép chúng ta xử lý biến đó ngay trong cặp ngoặc nhọn. Chúng ta có thể dễ dàng cắt bỏ hay lấy ra một phần của string chứa trong biến một cách rất dễ dàng. Để dễ hình dung, các bạn có thể xem ví dụ sau:

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

Trong lệnh thứ nhất, ở phía trong dấu ${}, đầu tiên chúng ta viết tên biến, sau đó là hai dấu #, rồi đến 1 chuỗi ký tự đại diện (*fo). Vậy lệnh này có nghĩa là gì và nó được bash shell thực hiện như thế nào? Lệnh này (echo ${MYVAR##*fo}) sẽ khiến cho bash thực hiện việc cắt bỏ chuối dài nhất, tính từ ký tự đầu tiên, khớp với chuỗi ký tự đại diện (còn gọi là wildcard), sau đó in phần còn lại ra stdout. Khi gặp lệnh này, bash shell sẽ thực hiện việc tìm kiếm tất cả các xâu con khớp với chuỗi ký tự đại diện *fo trong xâu được chứa bởi $MYVAR(tức là tìm tất cả các xâu kết thúc với 2 ký tự fo):
f
fo MATCHES *fo
foo
food
foodf
foodfo MATCHES *fo
foodfor
foodfort
foodforth
foodfortho
foodforthou
foodforthoug
foodforthought
foodforthought.j
foodforthought.jp
foodforthought.jpg

Sau khi kết thúc tìm kiếm (trong VD trên bash tìm được 2 kết quả), bash sẽ lấy xâu kết quả dài nhất (foodfo), rồi loại bỏ nó ra khỏi xâu gốc (phần còn lại: rthought.jpg), rồi in kết quả ra màn hình.

Trong câu lệnh thứ hai (echo ${MYVAR#*fo}), công việc cũng tương tự như trên, nhưng thay vì lấy kết quả dài nhất, bash shell lại lấy kết quả ngắn nhất (fo) rồi loại bỏ khỏi xâu gốc và in kết quả ra màn hình. Thực ra khi chỉ sử dụng 1 dấu # ở phần tùy biến, ngay khi tìm được kết quả đầu tiên, bash shell sẽ lập tức dừng việc tìm kiếm lại.

Để tìm kiếm từ cuối xâu thay vì tìm kiếm từ đầu xâu, chúng ta thay các tùy biến # và ## bằng các tùy biến % và %%, cách sử dụng hoàn toàn tương tự. Ví dụ:
$ MYVAR=thangphamduy/workspace/bar.foo.txt
$ echo ${MYVAR%.*}
thangphamduy/workspace/bar.foo
$ echo ${MYVAR%%.*}
thangphamduy/workspace/bar

Và một cách xử lý string nữa, ít được dùng tới hơn, nhưng nhiều lúc rất có ích, đó là cắt xâu theo vị trí:
$ MYVAR=http://thangphamduy.blogspot.com
$ echo ${MYVAR:0:13}
http://fotech
$ echo ${MYVAR:8:17}
fotech.org

Phần xử lý string xin được dừng lại tại đây, cảm ơn quý vị và các bạn đã quan tâm theo dõi >:).
(Tham khảo từ
Bash by example - IBM)

Nov 4, 2008

Cài đặt Ubuntu/Kubuntu 8.10 từ USB

1. Chuẩn bị

- Hệ điều hành Windows XP/Vista.

- File ISO Ubuntu 8.10 (link download) hoặc Kubuntu 8.10 (link download).

- USB dung lượng lớn hơn hoặc bằng 1 GB.

- Chương trình HP USB Disk Storage (link download).

- Công cụ tạo USB khởi động:
+ link dành cho Ubuntu (file nén exe)
+ link dành cho Kubuntu (file nén rar)

[*] Từ bây giờ tớ sẽ chỉ hướng dẫn cho Ubuntu, bạn nào cài Kubuntu thì cứ thay chữ Ubuntu bằng Kubuntu là okie ^^.

2. Tạo USB khởi động

- Kết nối máy tính với USB.

- Đầu tiên các bạn sử dụng chương trình HP USB DS format USB của bạn về định dạng FAT32.

- Tiếp đó giải nén cái công cụ tại USB khởi động ở trên vào đâu đó trên đĩa cứng, ta được thư mục Ubuntu810.

- Copy file ISO của Ubuntu 8.10 vào thư mục Ubuntu 8.10.

- Chạy file Ubuntu810.bat trong thư mục Ubuntu810.

- Làm theo hướng dẫn trên cửa sổ hiện ra, và chờ đến khi nó báo thành công.
3. Cài đặt Ubuntu 8.10

- Khởi động lại máy tính

- Vào BIOS thiết lập chế độ khởi động từ USB (cái này cách làm tùy BIOS, nhưng hầu hết BIOS không quá cũ đều hỗ trợ ^^).

- Tiếp tục cài đặt như khi cài từ LiveCD.

4. Tổng kết

Việc cài từ USB có nhiều ưu điểm hơn cài từ LiveCD do tận dụng được khả năng đọc/ghi tốc độ cao của USB, tiết kiệm được cả thời gian (thời gian cài đặt ở máy tớ là 8 phút) và tiền bạc (tiền đĩa CD và hao mòn ổ ghi =))).

Nếu đã có LiveCD, bạn cũng có thể tạo USB cài Ubuntu bằng cách boot vào LiveCD và làm như sau:


Bài viết này tớ có tham khảo từ pendrivelinux. Cái tool dành cho Kubuntu 8.10 là do tớ edit từ cái dành tool cho Ubuntu nên không có định dạng exe như cái của pendrivelinux ^^.

Nov 1, 2008

Truy cập phân vùng Linux từ Windows

Bạn dùng song song 2 hệ điều hành Windows và Linux? Trong Linux có thể truy cập phân vùng NTFS bằng NTFS-3G, thật là dễ dàng. Nhưng từ Windows nếu muốn truy cập vào phân vùng ext2, ext3 thì bạn phải làm thế nào? Thực ra là có khá nhiều cách, và đều không phức tạp hơn NTFS-3G. Bài viết này tớ sẽ giới thiệu 2 phương pháp đơn giản và hiệu quả nhất ^^.

1. Ext2 Installable File System (Ext2IFS)
Bạn có thể download phần mềm này từ địa chỉ: http://www.fs-driver.org/index.html.

Quá trình cài đặt rất đơn giản, bộ cài đặt sẽ tự scan (các) ổ cứng của bạn và hiển thị tất cả các phân vùng như hình dưới. Bạn có thể chọn chữ cái cho các phân vùng bạn muốn sử dụng.


Sau khi chọn Next, bộ cài sẽ hiển thị phần Release note của version. Phần này có rất nhiều thông tin có ích, các bạn nên đọc kỹ:


Và đây là kết quả ^^:


Ưu điểm: Truy cập dễ dàng với Windows Explorer như là một phân vùng Windows ^^. Có thể tùy biến quyền ReadOnly hoặc không :D.
Nhược điểm: Chỉ hỗ trợ số inode tối đa là 128bytes, do đó chỉ hoạt động tốt với phân vùng Ext2 và cả Ext3 nếu Ext3 được format dưới dạng số inode 128bytes (tham số -i của lệnh mkfs.ext3).
* Khuyến cáo: Nếu bạn sử dụng Windows Vista, hãy tắt tính năng User Account Control để đảm bảo không xảy ra lỗi khi truy cập phân vùng Linux .

2. Total Commander + Plugin ext2+reiser
(Nguồn: http://tuyetkiem.wordpress.com/2008/10/28/l%...B-windows/)

Nếu bạn đã khá quen với sự tiện dụng của Total Commader (TC) thì có một plug-in khá hữu ích, bổ sung cho TC tính năng truy cập các định dạng phân vùng Linux như ext2, ext3, reiserfs.

Bạn có thể download plugin trên ở đây: http://www.ghisler.com/plugins.htm.

Ưu điểm: Sử dụng tốt với các phân vùng định dạng ext2, ext3 (ReiserFs thì tớ không có điều kiện kiểm chứng). Tận dụng được sự tiện dụng của TC.
Nhược điểm: Hơi chậm :D.

Sep 24, 2008

Làm chủ Linux Bash shell với ký tự "!"

- Cú pháp: !{Some chars}
Ý nghĩa: gọi và thực thi lệnh gần nhất trong đã thực thi có phần bắt đầu là {some chars}

CODE
$ cat /home/mrpc/workspace/learning-bash/test.txt
dong thu nhat
$ echo "bo sung them dong thu hai" >> ~/test.txt
$!cat
cat /home/mrpc/workspace/learning-bash/test.txt
dong thu nhat
bo sung them dong thu hai
- Cú pháp: {tên lệnh} [danh sách tham số | !$]
Ý nghĩa: Gọi lệnh và thay tham số !$ trong danh sách tham số bằng tham số cuối cùng của lệnh vừa gõ
CODE
$ touch /home/mrpc/workspace/learning-bash/ten.file.rat.la.dai.txt
$ echo "dong dau tien" >> !$
$ cat !$
dong dau tien