banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vài ngày học một lệnh (hoặc một tiện ích) trong Linux  XML
  [Question]   Re: Script watermark hàng loạt ảnh trong một thư mục 06/02/2009 11:03:22 (+0700) | #61 | 168394
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

Z0rr0 wrote:
Bản thân từ steganos có nghĩa là che đi (covered), trong khi watermark là phải thấy được. Nên tui nghĩ không thể hiểu watermark là steganography được đâu anh lamer. Ý nghĩa khác nhau hoàn toàn smilie 

Watermark có 2 loại là: visible và invisible. Cuốn http://books.google.com.vn/books?id=vNCwqtQ0iEcC&pg=PA522&lpg=PA522&dq=%22Steganography%22+%2B+%22invisible+watermarking%22&source=bl&ots=ueZQb7j2CR&sig=AQKiy0y2PgxtrphPZD0liO6RxSw&hl=vi&sa=X&oi=book_result&resnum=2&ct=result có so sánh giữa Digital watermarking và Steganography.

Bạn nào muốn ngâm cứu thêm thì có thể đọc cuốn http://avaxhome.ws/ebooks/programming_development/DigitalWatermarking_Steganography.html.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Script watermark hàng loạt ảnh trong một thư mục 06/02/2009 11:35:56 (+0700) | #62 | 168401
lamer
Elite Member

[Minus]    0    [Plus]
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
[Profile] [PM]
Film đó từ 2004, bây giờ quanta phải tự đi lục về mà xem thôi. Trong film có một đoạn họ dùng nước chanh và máy sấy tóc để làm cái hình bản đồ hiện lên sau tấm tuyên ngôn độc lập.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 23/02/2009 11:02:23 (+0700) | #63 | 170537
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

SuperChicken wrote:
Mạn phép viết tiếp 1 lệnh:
24. find - tìm kiếm tập tin/thư mục

Cấu trúc câu lệnh: find [DIR_TO_FIND] -name "FILENAME_WITH_REGEX" -type f/d ....

Đây là 1 lệnh tìm kiếm không dựa trên database như lệnh locate, lệnh này rất mạnh vì hỗ trợ việc kết hợp với các lệnh khác.

Ví dụ bạn muốn tìm và xóa tất cả các tập tin/thư mục có tên là .svn trong thư mục hiện tại, bạn chỉ cần gõ:

find . -name ".svn" -exec rm -rf {}\;
 

Nếu muốn chỉ xóa tập tin thì thêm -type f vào câu trên. 

Do vô ý, không hiểu từ khi nào primary group của mình bị thay đổi. Do đó các files hoặc thư mục mới được tạo ra sẽ được owned bởi primary group này (mà không phải là "quanta"). Mình muốn chạy một lệnh để: tìm tất cả các files và thư mục được owned bởi user "quanta", group không phải là "quanta" thì thay đổi chủ quyền group cho files / thư mục đó thành "quanta":
Code:
$ find ~ -user quanta -not \( -group quanta \) -exec sudo chgrp -R quanta "{}" \;


Giải thích một chút:
~ chỉ $HOME folder
-user quanta owned bởi user quanta
-not phủ định của biểu thức đứng sau
-exec thực hiện một lệnh với các folders tìm được. Các bạn thử so sánh với xargs xem sao.
{} đại diện cho thư mục hiện tại đang được xử lý
\; mời các bạn thử giải thích
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 07/03/2009 07:02:38 (+0700) | #64 | 172193
zerozeroone
Member

[Minus]    0    [Plus]
Joined: 24/12/2006 13:29:23
Messages: 149
Offline
[Profile] [PM]

quanta wrote:
...
-exec thực hiện một lệnh với các folders tìm được. Các bạn thử so sánh với xargs xem sao.
...
 

-exec sẽ thực thi lệnh chgrp lần lượt với tham số là từng kết quả được cho ra từ lệnh find (mỗi lần thực thi lệnh chgrp sẽ có tham số là 1 file hoặc thư mục tìm được) nên tốc độ thực thi sẽ chậm nếu số lượng file/thư mục quá nhiều.
Ngược lại xargs sẽ truyền một số kết quả cho ra từ lệnh find là tham số trong một lần thực thi lệnh chgrp (mỗi lần thực thi lệnh chgrp sẽ có tham số là một số file hoặc thư mục tìm được) nên tốc độ sẽ nhanh hơn khi số lượng file/thư mục quá nhiều.

quanta wrote:

...
\; mời các bạn thử giải thích
 

Đánh dấu kết thúc câu lệnh, thực thi lệnh chgrp mỗi khi có một file/thư mục được tìm thấy.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 24/03/2009 05:39:14 (+0700) | #65 | 174375
[Avatar]
F10
Member

[Minus]    0    [Plus]
Joined: 01/12/2008 23:38:12
Messages: 89
Offline
[Profile] [PM]
7. kill
Lệnh này sẽ làm chấm dứt một process.
Cú pháp:
Code:

kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
kill -l [ signal ]



Các signal thông dụng:

SIGHUP (-1): Đây là một tín hiệu treo, nó chỉ thị cho chương trình re-load file cấu hình hoặc re-open giao diện, chứ không chấm dứt process
SIGTERM (-15): đây là một tín hiệu chấm dứt "tao nhã". Nó chỉ thị cho chương trình dừng những gì đang chạy lại, hỏi xem có processes (hoặc users) nào đang kiểm soát nó không, sau đó mới thoát.
SIGKILL (-9): tín hiệu bắt buộc chấm dứt luôn một process.
 


Em đang tìm hiểu cái lệnh kill . Khi đọc đoạn này của anh em thấy rất hay vì em đang băn khoăn mấy cái options trong lệnh kill.
ở trên anh đã giải thích 3 options là SIGHUP(-1) ; SIGTERM (-15) và SIGKILL (-9) . Đây hầu như là các options được dùng chủ yếu trong lệnh kill. Nhưng em thấy trong sig của lệnh kill thì có tới 64 cái sig .
# kill -l để biết 64 sig đó .
Anh có thể giải thích tiếp các sig còn lại được không ạ.? !
Em cũng đã tìm trong man và googling nhưng không được rõ lắm .
Đây là 1 trong những link em thấy đầy đủ hơn cả nhưng vẫ tối nghĩa

 
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 30/03/2009 04:22:27 (+0700) | #66 | 175228
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]

F10 wrote:
7. kill
Lệnh này sẽ làm chấm dứt một process.
Cú pháp:
Code:

kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
kill -l [ signal ]



Các signal thông dụng:

SIGHUP (-1): Đây là một tín hiệu treo, nó chỉ thị cho chương trình re-load file cấu hình hoặc re-open giao diện, chứ không chấm dứt process
SIGTERM (-15): đây là một tín hiệu chấm dứt "tao nhã". Nó chỉ thị cho chương trình dừng những gì đang chạy lại, hỏi xem có processes (hoặc users) nào đang kiểm soát nó không, sau đó mới thoát.
SIGKILL (-9): tín hiệu bắt buộc chấm dứt luôn một process.
 


Em đang tìm hiểu cái lệnh kill . Khi đọc đoạn này của anh em thấy rất hay vì em đang băn khoăn mấy cái options trong lệnh kill.
ở trên anh đã giải thích 3 options là SIGHUP(-1) ; SIGTERM (-15) và SIGKILL (-9) . Đây hầu như là các options được dùng chủ yếu trong lệnh kill. Nhưng em thấy trong sig của lệnh kill thì có tới 64 cái sig .
# kill -l để biết 64 sig đó .
Anh có thể giải thích tiếp các sig còn lại được không ạ.? !
Em cũng đã tìm trong man và googling nhưng không được rõ lắm .
Đây là 1 trong những link em thấy đầy đủ hơn cả nhưng vẫ tối nghĩa

 
 

kill ko hẳn là để giết 1 process, đó chỉ là 1 cách trong các hệ thống Posix để gửi signal từ process này cho process khác.
Ý nghĩa từng signal này thì theo cái bảng kia hoặc trong 1 số các sách lập trình linux/unix cũng có mô tả. Ví dụ ALRM (Alarm) là 1 signal nhận được khi có sự hẹn giờ. Có nhiều các sự kiện xảy ra với process đều được OS báo lại bằng signal (và lệnh kill/hàm kill này).
Có 3 signal thường dùng để kết thúc ứng dụng, trong đó 2 cái SIGHUP và SIGTERM là ứng dụng có thể bắt được, còn SIGKILL thì ko thể:
- SIGHUP (signal hang up): làm việc kiểu ngày xưa, khi kết nối terminal với modem, khi bị ngưng kết nối này (hang up), thì nó báo cho process (lệnh đang chạy) để thoát. Có 1 lệnh là nohup nó chặn cái signal này lại để cho process ... chạy tiệp.
- SIGTERM: (terminate) ngưng ứng dụng lại, ví dụ khi Ctrl+C thì lệnh ngưng lại. Tuy nhiên nó cho phép ứng dụng dọn dẹp trước khi thoát, hoặc có khi phớt lờ cái signal này chạy tiếp.
- SIGKILL: (giết smilie)): cái này ngưng ứng dụng lại và ứng dụng không thể hứng đc, mọi thứ rác còn lại (ví dụ temp file) có thể còn. OS hay gửi SIGKILL cho tất cả các process đang chạy khi nó reboot/shutdown.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 09/04/2009 08:40:15 (+0700) | #67 | 176286
[Avatar]
St Konqueror
Member

[Minus]    0    [Plus]
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
[Profile] [PM]
55. logsave(8)

Trong quá trình làm việc với hệ điều hành GNU/Linux, có thể bạn sẽ muốn lưu lại thông tin output của một số lệnh đang sử dụng. Để thực hiện điều đó, các bạn có thể dùng logsave(8).

Cú pháp:
Code:
logsave [ -asv ] log-file command

Mô tả:

Mỗi lần được gọi, logsave(8) sẽ tiến hành chạy chương trình command và sao chép thông tin output của nó ra log-file do người dùng chỉ định. Nếu bạn thay thế command bằng một dấu ngắt đơn (’-‘) thì logsave(8) sẽ lấy thông tin từ stdin để ghi ra log-file.

Các tùy chọn:


-a Nếu tập tin log-file đã tồn tại trước đó trên đĩa cứng thì thông tin output sẽ được ghi thêm vào tập tin thay vì ghi đè lên thông tin cũ.

2 flags còn lại -s -v các bạn có thể tham khảo từ man page
Code:
$man 8 logsave
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 16/04/2009 20:18:54 (+0700) | #68 | 177428
Kihote
Member

[Minus]    0    [Plus]
Joined: 27/10/2008 17:00:46
Messages: 24
Offline
[Profile] [PM]
Mình mới tham khảo và phát hiện ra là bạn cài đặt gói phần mềm bạn muốn biết thông tin file ghi vào hệ thống để sau này có thể gỡ bỏ dễ dàng.

Đầu tiên
Code:
find / | grep -v -e ^/proc/ -e ^/tmp/ -e ^/dev/ > preinstall.list


Sau đó biên dịch chương trình

rồi chạy tiếp.

Code:
find / | grep -v -e ^/proc/ -e ^/tmp/ -e ^/dev/ > postinstall.list


Sau đó so sánh 2 file.
Code:
diff preinstall.list postinstall.list > installed.list


Vậy bây giờ bạn có thể gỡ ra bất cứ khi nào bạn muốn.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 23/04/2009 11:45:01 (+0700) | #69 | 178168
[Avatar]
learn2hack
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
[Profile] [PM] [WWW]
59. head

Lệnh này dùng để hiển thị n kí tự hoặc n dòng đầu tiên của 1 file. Thích hợp dùng để trích xuất 1 phần dữ liệu của 1 file mà không cần đọc toàn bộ file, đặc biệt với các file lớn.

Cú pháp:

Code:
head option filename


option thường dùng:
-c N: dùng để in ra N kí tự đầu tiên của file, nếu có dấu trừ trước số N thì sẽ in ra N kí tự cuối cùng của file
- n N: in ra N dòng đầu tiên của file, nếu có dấu trừ trước số N thì sẽ in ra N dòng cuối cùng của file

Mặc định nếu ko có tham số, lệnh head tương đương với:
Code:
head -n 10 filename


Xem thêm man head
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 25/04/2009 08:17:41 (+0700) | #70 | 178450
[Avatar]
learn2hack
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
[Profile] [PM] [WWW]
60. hexedit

Lệnh này dùng để xem và chỉnh sửa file dưới dạng hex hay binary. hexedit làm việc y hệt như 1 chương trình soạn thảo với đầy đủ chức năng từ chỉnh sửa, save, copy, paste, ... cùng hàng loạt các phím tắt kèm theo.

Chi tiết xem thêm man hexedit.
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh Linux 16/06/2009 04:11:39 (+0700) | #71 | 183629
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
61. vol_id, blkid, ls -l /dev/disk/by-uuid

Nếu đã dùng qua một vài distro và để ý bạn sẽ thấy rằng trong file /etc/fstab, ở cột đầu tiên, mặc định Ubuntu sẽ dùng UUID để định danh partition thay vì /dev/sdxn như một số distro khác: Fedora, Slackware, ... Khi đó hẳn bạn sẽ thắc mắc "làm sao để biết được UUID của một partition?". Câu trả lời chính là lệnh vol_id. Với lệnh này, ngoài UUID, bạn còn biết được loại filesystem cũng như label của partition đó nữa.

Code:
$ vol_id /dev/sda5
ID_FS_USAGE=filesystem
ID_FS_TYPE=ntfs
ID_FS_VERSION=3.1
ID_FS_UUID=01C998ED00829A00
ID_FS_UUID_ENC=01C998ED00829A00
ID_FS_LABEL=QUANTA
ID_FS_LABEL_ENC=QUANTA


Ngoài ra, bạn có thể dùng blkid để liệt kê thuộc tính của tất cả các partitions:
Code:
$ blkid 
/dev/sda1: UUID="785C40EA5C40A4AA" LABEL="SERVICEV002" TYPE="ntfs" 
/dev/sda2: UUID="01C998ECFFEA0380" LABEL="WIN2K3" TYPE="ntfs" 
/dev/sda3: UUID="e1b46788-14df-4d8c-84d5-00f9a32698a1" TYPE="ext3" 
/dev/sda5: UUID="01C998ED00829A00" LABEL="QUANTA" TYPE="ntfs" 
/dev/sda6: TYPE="swap" UUID="a4e3113e-cbeb-4d41-8327-577af36db2e4"


hoặc đọc nội dung của file /dev/disk/by-uuid:
Code:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 01C998ECFFEA0380 -> ../../sda2
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 01C998ED00829A00 -> ../../sda5
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 785C40EA5C40A4AA -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 a4e3113e-cbeb-4d41-8327-577af36db2e4 -> ../../sda6
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 e1b46788-14df-4d8c-84d5-00f9a32698a1 -> ../../sda3


Theo các bạn thì dùng UUID sẽ hữu hiệu nhất khi nào?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 03/07/2009 04:31:39 (+0700) | #72 | 185196
dEvIL.kiD
Member

[Minus]    0    [Plus]
Joined: 26/05/2009 16:26:56
Messages: 8
Offline
[Profile] [PM]
các anh post hộ e lệnh tạo LaTeX Document với smilie
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh Linux 16/07/2009 03:33:19 (+0700) | #73 | 186389
[Avatar]
St Konqueror
Member

[Minus]    0    [Plus]
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
[Profile] [PM]

quanta wrote:

Theo các bạn thì dùng UUID sẽ hữu hiệu nhất khi nào? 

Để định danh một phân vùng đĩa cứng "bình thường" trong GNU/Linux (ý em là không LVM, không RAID) thì theo em được biết là có 3 cách:

1. Bằng đường dẫn trực tiếp: /dev/?d??
Ưu điểm là cực kì ngắn gọn, dễ nhớ
Nhược điểm là rất dễ bị thay đổi khi tạo thêm phân vùng đĩa cứng hay lắp đĩa cứng mới vào hệ thống.

2. Bằng UUID: lấy thông tin này bằng cách $ls -l /dev/disk/by-uuid
Ưu điểm là tương đối cố định, và mang tính duy nhất (trừ trường hợp cloning thì mới cho ra các phân vùng trùng UUID)
Nhược điểm là quá dài, khó đọc và khó nhớ.

3. Bằng LABEL: lấy thông tin này bằng $ls -l /dev/disk/by-label
Ưu điểm là tương đối cố định, ít có khả năng bị thay đổi, ngắn gọn và dễ nhớ
Nhược điểm dễ bị trùng lắp do đây là giá trị do con người gán.

(Ngoài ra trong thư mục /dev/disk còn có 2 thư mục con là by-idby-path, nhưng em chưa thử để biết có dùng làm định danh cho đĩa được không?)


Vậy, em nghĩ rằng cách định danh trực tiếp /dev/?d?? chỉ có lợi trong các trường hợp như lệnh mount(8) chứ không nên dùng trong các tập tin quan trọng như grub.conf (menu.lst). /etc/fstab hay lilo.conf vì rất dễ dẫn tới trường hợp hệ thống không boot được.

Hai cách sử dụng UUID và LABEL thì sẽ tương đối an toàn và ổn định hơn, đảm bảo sự hoạt động nhịp nhàng của hệ thống.

Vậy, quay trở lại câu hỏi ban đầu của anh quanta, thì đơn giản là dùng UUID trong trường hợp người dùng không muốn quan tâm (hoặc không biết) về mấy vấn đề này và muốn để cho hệ thống của mình hoạt động ổn định lâu dài.

Tuy nhiên em mở rộng bài viết ra một chút: Nếu người dùng muốn quản lí hệ thống của mình ở mức cao nhất thì có thể tham khảo cách dùng LABEL thay cho UUID, Chỉ riêng đối với LABEL thì người dùng nên tạo thói quen đặt tên LABEL theo 1 quy luật nào đó để cho đảm bảo không bị trùng lắp, dẫn đến định danh sai phân vùng.

Ví dụ vài cách đặt tên LABEL mà đa số mọi người hay dùng nhưng lại là các đặt tên "xấu":
LABEL=home cho mount point /home
LABEL=root cho mount point /

Giả sử đem đĩa cứng chứa các phân vùng này qua hệ thống GNU/Linux khác có cách đặt tên LABEL tương tự hoặc ngược lại thì sẽ gây ra nhập nhằng, có thể dẫn tới hệ thống không hoạt động được.

Em thử ví dụ vài cách đặt tên LABEL "tốt"
/home trên đĩa cố định thì có thể LABEL=home-local
/home trên đĩa di động thì có thể LABEL=home-portable
/home trên vùng lưu trữ qua mạng thì có thể LABEL=home-network

Hoặc là nếu không thì có thể đặt tên LABEL mang tính cá nhân ví dụ như em (St Konqueror) thì sẽ đặt LABEL theo dạng stk-* (như stk-home, stk-root...)

Vài lời

[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 25/07/2009 04:59:07 (+0700) | #74 | 187460
m3onh0x84
Member

[Minus]    0    [Plus]
Joined: 29/11/2007 15:22:21
Messages: 467
Location: lang thang 4 biển
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN]
@St Konqueror: Tớ k0 muốn chat hay hỏi đáp gì ở đây, vì ở đây là tớ thấy đây viết tut, hướng dẫn. Nhưng tớ đang đau đầu 1 câu hỏi:
Dùng PQ Magic, fdisk, qtparted thì có thể set label cho mọi phân vùng, trừ phân vùng reiserfs (mà tớ bây giờ hay dùng phân vùng này).
Vậy làm sao để đọc label của mọi phân vùng với nhiều chương trình partition khác nhau. Còn khi cài multiboot, nhiều HDH trên 1 HDD thì làm sao các OS đó nhận ra nhau (fsck khác nhau, kernel khác nhau, os update liên tục và os thì thoảng mới update).
VD: slackware ít update cài sau backtrack 4 thì làm sao slackware nhận ra backtrack được ?
1/ LÀM ƠN "Đọc kĩ hướng dẫn sử dụng trước khi dùng".
2/homepage: trước khi hỏi thì LÀM ƠN tìm kiếm. Vì để biết nhiều hơn thì ai cũng phải đọc "VỪNG ƠI MỞ RA"
Hỏi FAQ thì lên asking.vn mà hỏi
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 27/07/2009 13:06:20 (+0700) | #75 | 187704
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
62. shopt

shopt là viết tắt của shell option, nó có chức năng kiểm soát hành vi của shell qua các tùy chọn. Đọc thêm tại http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html.

Vài ví dụ:

Liệt kê các tùy chọn đang "bật":
Code:
$ shopt -s
cmdhist        	on
expand_aliases 	on
extquote       	on
force_fignore  	on
hostcomplete   	on
interactive_comments	on
progcomp       	on
promptvars     	on
sourcepath     	on


Tự chỉnh sửa các lỗi gõ phím:
Code:
$ shopt -s cdspell
bash-3.1$ cd /mnt/data/linuz
/mnt/data/linux
bash-3.1$ pwd
/mnt/data/linux


Cho phép cp sao chép các files và thư mục ẩn:
Code:
$ shopt -s dotglob


Danh sách các lệnh đã gõ không bị ghi đè lẫn nhau:
Code:
$ shopt -s histappend


Không phân biệt chữ hoa - chữ thường trong tên files khi gõ lệnh:
Code:
$ bind "set completion-ignore-case on"
bash-3.1$ shopt -s nocaseglob
bash-3.1$ cd /mnt/data/hv[TAB]
bash-3.1$ pwd
/mnt/data/HVA


Xóa tất cả các files trong một thư mục trừ một hoặc một vài files:
Code:
$ ls -la
total 514216
drwxrwxrwx 1 root root      4096 2009-07-27 00:02 .
drwxrwxrwx 1 root root     49152 2009-07-26 10:05 ..
-rwxrwxrwx 1 root root         0 2009-07-26 23:47 .file
drwxrwxrwx 1 root root         0 2009-07-26 23:47 .test
-rwxrwxrwx 1 root root 526501693 2008-08-17 04:39 FaceOff [1997]-Salman.mkv
bash-3.1$ shopt -s extglob
bash-3.1$ rm -fr !(FaceOff\ \[1997\]-Salman.mkv )
bash-3.1$ ls -la
total 52
drwxrwxrwx 1 root root  4096 2009-07-27 00:04 .
drwxrwxrwx 1 root root 49152 2009-07-26 10:05 ..

...

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 28/08/2009 15:36:13 (+0700) | #76 | 191323
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
63. mencoder

Mình có một file video, do sơ ý nên trong quá trình quay có một khoảng thời gian mình xoay máy ảnh từ ngang thành dọc (sau đó thì đã xoay trở lại). Tuy chỉ mất một đoạn khoảng hơn 1 phút nhưng nó làm mình khá khó chịu. Loay hoay một hồi với AVI Trimmer, VirtualDub,... trên http://www.winehq.org/ mà không xử lý được, mình chợt nhớ ra là trên Linux có thằng mencoder có thể làm được.

Giả sử đoạn video bị quay ngang kia bắt đầu từ thời điểm hh0:mm0:ss0 đến thời điểm hh1:mm1:ss1, và có độ phân giải là Width x Height = A x B (A>B)

- Đầu tiên mình cắt nó ra làm 3 phần:
Code:
mencoder -endpos hh0:mm0:ss0 -oac copy -ovc copy in.avi -o part1.avi
mencoder -ss hh0:mm0:ss0 -oac copy -ovc copy in.avi -o tmp.avi

mencoder -endpos hh1:mm1:ss1 -oac copy -ovc copy tmp.avi -o part2.avi
mencoder -ss hh1:mm1:ss1 -oac copy -ovc copy tmp.avi -o part3.avi


- Xoay đoạn video kia (part2) sang phải một góc 90 độ:
Code:
mencoder -oac copy -ovc lavc -vf rotate=1 part2.avi -o part2_rotated90.avi

(Lúc này kích thước của nó lại là B x A)

- Phóng to tỷ lệ của part2 lên thành A x (A*A/B):
Code:
mencoder part2_rotated90.avi -oac copy -ovc lavc -vf scale=A:(A*A/B) -o part2_zoomin.avi


- Cắt phần ảnh thừa ở phía trên và phía dưới đi, để nó trở về kích thước A x B:
Code:
mencoder part2_zoomin.avi -oac copy -ovc lavc -vf crop=A:B -o part2_final.avi


- Gộp 3 phần này lại để có một file video như ý:
Code:
mencoder -forceidx -oac copy -ovc lavc part1.avi part2_final.avi part3.avi -o final_out.avi


mencoder còn rất nhiều chức năng khác, bạn thử tìm hiểu xem nhé.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 19/09/2009 06:13:57 (+0700) | #77 | 193312
thozao
Member

[Minus]    0    [Plus]
Joined: 02/09/2009 21:54:27
Messages: 2
Offline
[Profile] [PM]
Cho em hỏi với. Anh,chị,em: có biết lệnh, phần mềm hay phần cứng nào có thể tính tổng dung lượng bytes vào/ra internet trên 1 máy (Linux -CentOS) không ạ?
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 19/09/2009 06:39:30 (+0700) | #78 | 193323
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

thozao wrote:
Cho em hỏi với. Anh,chị,em: có biết lệnh, phần mềm hay phần cứng nào có thể tính tổng dung lượng bytes vào/ra internet trên 1 máy (Linux -CentOS) không ạ?  

- ifconfig, iftop, bandwidthd, bmon, vnstat...
- SNMP + MRTG + routers2.cgi
- ...
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 19/09/2009 06:40:52 (+0700) | #79 | 193325
[Avatar]
Mr.Kas
Member

[Minus]    0    [Plus]
Joined: 22/07/2009 14:36:56
Messages: 209
Offline
[Profile] [PM]
Bổ sung cái lệnh này cho những bạn nào muốn tắc máy nhanh
Code:
# shutdown -P 0

Khi dùng Linux mình thường dùng lệnh này để tắt smilie

Bổ sung vài IP Commands trên Linux và UNIX, những IP Commands này mình lấy tại trang whatismyip.com

Linux
Code:
Display Current Config for all NIC's: ifconfig
Display Current Config for eth0: ifconfig eth0
Assign IP: ifconfig eth0 192.168.1.2
Ping: ping -c 3 192.168.1.1
Assign multiple IP's: ifconfig eth0:0 192.168.1.2
Assign second IP: ifconfig eth0:1 192.168.1.3
Disable network card: ifconfig eth0 down
Enable network card: ifconfig eth0 up
View current routing table: route "or" route -n
View arp cache: arp "or" arp -n
Assign IP/Subnet: ifconfig eth0 192.168.1.2 netmask 255.255.255.0
Assign Default Gateway: route add default gw 192.168.1.1
Trace Route: traceroute www.whatismyip.com
Trace Path: tracepath www.whatismyip.com
DNS Test: host www.whatismyip.com
Advanced DNS Test: dig www.whatismyip.com
Reverse Lookup: host 66.11.119.69
Advanced Reverse Lookup: dig -x 66.11.119.69


UNIX
Code:
Display Current Config for all NIC's: ifconfig
Display Current Config for dc0: ifconfig dc0
Assign multiple IP's: ifconfig dc0:0 192.168.1.2
Assign second IP: ifconfig dc0:1 192.168.1.3
Disable network card: ifconfig dc0 down
Enable network card: ifconfig dc0 up
Assign IP/Subnet: ifconfig dc0 inet 192.168.1.2 netmask 255.255.255.0
Assign Gateway: route delete default && route add default 192.168.1.1
Treo chuột, gác phím, cất modem, cắt NET. Lên núi luyện công chờ ngày trở lại ...
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 04/12/2009 09:14:17 (+0700) | #80 | 199745
thozao
Member

[Minus]    0    [Plus]
Joined: 02/09/2009 21:54:27
Messages: 2
Offline
[Profile] [PM]
lệnh bmon dùng để xem lưu lựong đi qua card mạng trong 1 s.

- Tiện thể, pro nào đã gặp trường hợp, giả sử có 3 node: A -> B -> C, B là node trung gian truyền dữ liệu giữa A và C và B có 1 card mạng (ethernet). Mình dùng bmon để xem tốc độ truyền thế nào thì thấy tốc độ RX gấp đôi TX. Mình nghĩ tốc độ RX và TX phải giống giống nhau chứ nhỉ? ( tốc độ RX + tốc độ TX < tốc độ truyền max của card net. cụ thể: max: 100MB/s, RX: 20MB/s, TX: 13MB/s).
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 22/12/2009 19:46:34 (+0700) | #81 | 201640
toantoet
Member

[Minus]    0    [Plus]
Joined: 03/02/2004 07:41:54
Messages: 31
Offline
[Profile] [PM]
Lang thang trên mạng search được cái này cũng hay
Auto complete cho lệnh service:
Code:
complete -W "$(ls /etc/init.d/)" service

từ giờ khi sử dụng lệnh service, chỉ cần nhớ chữ cái đầu của dịch vụ rồi ấn tab.
làm tương tự với chkconfig:

Code:
complete -W "$(ls /etc/init.d/)" chkconfig


[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 23/06/2010 11:16:04 (+0700) | #82 | 213951
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
66. Hiển thị lượng memory mà một process sử dụng

Code:
ps -eo size,args | grep httpd | grep -v grep | awk '{mem += $1} END {print mem}'


hoặc các bạn có thể dùng pmap:
Code:
# pmap `pidof httpd` | tail -1
 total           224900K

Lệnh này rất hữu ích để bạn theo dõi và đưa ra một con số thích hợp cho monit: /hvaonline/posts/list/1515.html#7287
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 21/07/2010 18:53:57 (+0700) | #83 | 215919
thuc960
Member

[Minus]    0    [Plus]
Joined: 13/07/2010 08:34:53
Messages: 3
Offline
[Profile] [PM]
Cho mình hỏi lệnh trong windows là net view vậy trong linux lệnh tương tự như vậy là gì vậy
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 21/07/2010 19:14:28 (+0700) | #84 | 215920
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

thuc960 wrote:
Cho mình hỏi lệnh trong windows là net view vậy trong linux lệnh tương tự như vậy là gì vậy 

smbtree.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 07/10/2010 14:27:14 (+0700) | #85 | 222307
[Avatar]
St Konqueror
Member

[Minus]    0    [Plus]
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
[Profile] [PM]
67. Công cụ khóa màn hình dòng lệnh vlock(1)

Hi all,

Hôm nay mình mới biết đến một công cụ hay hay tên là vlock(1), liền vội vàng lên HVA để post bài giới thiệu với các anh em nghiện Command Line Interface. smilie

Giới thiệu: vlock(1) là một công cụ để khóa màn hình (tương tự như chức năng của screen saver) nhưng lại dành cho môi trường dòng lệnh.

Sử dụng:
Code:
$ vlock

Khóa console session đang dùng, có thể là TTY, hoặc là PTS đều được.
Để unlock cần nhập password của tài khoản hiện hành hoặc password root. (Việc unlock bằng password root vẫn có thể bị bisabled trong quá trình biên dịch)

Code:
$ vlock -a

Khóa tất cả console sessions hiện tại và khóa luôn việc chuyển đổi Virtual Terminal với tổ hợp Alt + F[1-12]. Chức năng này chỉ áp dụng được cho TTY.
Vì khóa luôn tổ hợp Alt + F[1-12] cho nên đồng nghĩa với việc khóa X11. Do vậy, bạn sẽ không cần dùng thêm screensaver hay xlock cho X11 nữa.

và các chức năng khác có đề cập trong man pages...


Tuy nhiên, vlock(1) còn một tính năng rất là lí thú. Đó là khi bạn unlock xong chương trình sẽ thông báo đã có bao nhiêu thử lần unlock nhưng không thành công trước đó. Cũng hay để biết trong thời gian bạn rời khỏi máy tính có ai thử làm gì máy mình không. smilie

Nói chung, đây thực sự là một công cụ hữu ích cho các anh em nghiện CLI. Như mình, mỗi lần mở máy lên đều login vào TTY1 trước rồi khi nào cần mới phải
Code:
$ sudo /etc/rc.d/kdm start

Trong trường hợp đó vlock(1) rất là lí thú và hữu ích!


Have fun!
-stk
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 07/10/2010 14:46:21 (+0700) | #86 | 222310
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Có lẽ nhiều bạn biết rồi, nhưng thôi mình cứ giới thiệu cho những người chưa biết vậy: http://www.commandlinefu.com
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 25/11/2010 20:19:08 (+0700) | #87 | 225481
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
Mình hay sử dụng lệnh apropos để tìm kiếm các câu lệnh liên quan đến mục đích.
Chẳng hạn mình muốn Copy file/folder nhưng không biết lệnh gì để làm nó. Mình gõ

# apropos copy

cp (1) - copy files and directories
cp (1p) - copy files
cpio (1) - copy files to and from archives
dd (1) - convert and copy a file
dd (1p) - convert and copy a file
exec (1p) - execute commands and open, close, or copy file descriptors
getunwind (2) - copy the unwind data to caller's buffer
head (1p) - copy the first part of files
install (1) - copy files and set attributes
ppmtoppm (1) - copy PPM image
rcp (1) - remote file copy
scp (1) - secure copy (remote file copy program)
 



@hongphu1410 : đâu phải cứ dùng linux là tìm terminal để mà gõ. Sao bạn kô vọc cho đã máy cái application có trên GUI ?


p/s: smilie Xem lại trang 2 thì thấy anh quanta post lệnh này rồi
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 26/11/2010 22:42:39 (+0700) | #88 | 225621
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
68. expect

Khi chạy một đoạn script cần 'sudo', khi ftp, ... bạn sẽ được yêu cầu nhập password. Nếu muốn tự động hoá công việc này, thường bạn sẽ nghĩ đến mấy giải pháp: dùng NOPASSWD trong /etc/sudoers, gán password vào đâu đó rồi đọc ra, ... Đây là lúc bạn nên dùng expect.

Một ví dụ đơn giản để start OpenVPN Client khi khởi động:
Code:
#!/usr/bin/expect

log_user 0
set username [lrange $argv 0 0]
set password [lrange $argv 1 1]

if {$argc != 2} {
	puts "Usage: openvpn_start.expect <username> <password>"
	exit 1
} else {
	spawn /usr/sbin/openvpn /path/to/client.ovpn
	expect "Enter Auth Username:"
	send -- "$username\r"
	expect "Enter Auth Password:"
	send -- "$password\r"
	}
expect eof
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 10/12/2010 21:55:59 (+0700) | #89 | 226826
anonymous_itop
Member

[Minus]    0    [Plus]
Joined: 22/05/2009 01:27:51
Messages: 42
Offline
[Profile] [PM]
69. rsync
mình củng có một command muốn chia sẻ đó là
rsync là một công cụ giúp copy local trong một máy hoặc những máy khác nhau với nhau bằng tuỳ chọn -e để bật một command khác.

ví dụ mình copy tập tin cấu hình bind từ một máy đã cấu hình sẳn sang một máy đang định cấu hình.

srync -ave ssh hau@192.168.1.111:/etc/bind/ /etc/bind/

nó sẻ giử luôn quyền ban đầu của file đã chép qua.

mục này rất hay, nhưng nếu quanta có thể tạo một mục lục ngay từ đầu và cho link đến từng câu thì sẻ dể tìm kiếm và xem có đăng trùng hay không. cám ơn quanta.
[Up] [Print Copy]
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 10/12/2010 22:29:42 (+0700) | #90 | 226828
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
sshfs (share linux to linux)

Dùng để chia sẻ folder - file giữa các máy linux . 1 dạng tương tự như mount

Ví dụ muốn mount khu vực /u01/core ở máy 192.168.1.17 sang thư mục /root/test của máy 192.168.1.15 làm như sau

Code:
sshfs 192.168.1.17:/u01/core /root/test


df -h để kiểm tra lại sẽ thấy

Code:
sshfs#192.168.1.17:/u01/core  1000G     0 1000G   0% /root/test


Chú ý quyền hạn khi share file giữa các máy
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|