Giới thiệu về viết Bash biệt hiệu và chức năng

Bạn càng hoạt động trên các dòng lệnh, bạn sẽ càng thấy rằng phần lớn các lệnh mà bạn sử dụng là một tập hợp con rất nhỏ của các lệnh có sẵn. Hầu hết đều là những thói quen và bạn có thể chạy các cùng một cách mỗi ngày.

Trong khi các nhà sản xuất của rất nhiều các tiện ích dòng lệnh phổ biến nhất đã cố gắng để loại bỏ gõ không liên quan bằng cách sử dụng tên rút gọn (cách suy nghĩ của nhiều tổ hợp phím giúp bạn tiết kiệm hàng ngày bằng cách gõ “ls” thay vì “danh” và “cd” thay vì “thay đổi thư mục “), đây không phải là phổ biến. Ngoài ra, nhiều người luôn luôn chạy các lệnh với một vài tùy chọn tương tự kích hoạt mỗi lần.

May mắn thay, bash cho phép chúng ta tạo ra các phím tắt của riêng của chúng tôi và tiết kiệm thời gian thông qua việc sử dụng các bí danh và chức năng vỏ. Trong hướng dẫn này, chúng tôi sẽ thảo luận làm thế nào để sử dụng những điều này và cung cấp cho bạn một số ví dụ hữu ích để giúp bạn bắt đầu đi đúng hướng.
Làm thế nào để khai báo một Bash Bí danh

Kê khai bí danh trong bash là rất thẳng về phía trước. Nó là dễ dàng như vậy mà bạn nên thử nó ngay bây giờ.

Bạn có thể khai báo bí danh mà sẽ kéo dài như phiên shell đơn giản bằng cách gõ các dòng lệnh vào. Cú pháp như sau:

alias ALIAS_NAME = “command_to_run”

Lưu ý rằng không có khoảng cách giữa giữa các yếu tố hàng xóm và các dấu bằng. Đây không phải là tùy chọn. Không gian ở đây sẽ phá vỡ lệnh.

Hãy tạo một alias bash phổ biến hiện nay. Một câu lệnh thành ngữ mà nhiều người sử dụng thường xuyên là ls -lha hoặc ls -lhA (thứ hai bỏ qua danh sách thư mục hiện tại và mẹ). Chúng ta có thể tạo ra một shortcut có thể được gọi là ll bằng cách gõ:

alias ll = “ls -lhA”

Bây giờ, chúng ta có thể gõ ll và chúng tôi sẽ nhận được danh sách các thư mục hiện tại, trong dạng dài, bao gồm cả các thư mục ẩn:

ll

-rw-r – r– 1 root root 3.0K ngày 20 tháng ba 18:03 .bash_history
-rw-r – r– 1 root root 3.1K ngày 19 tháng 4 năm 2012 .bashrc
drwx —— 2 root root 4.0K 24 tháng 10 14:45 .cache
drwx —— 2 root root 4.0K 20 tháng 3 18:00 .gnupg
-rw-r – r– 1 root root 0 24 tháng 10 17:03 .mysql_history
-rw-r – r– 1 root root 140 19 Tháng 4 2012 .profile
drwx —— 2 root root 4.0K 24 tháng 10 14:21 .ssh
-rw ——- 1 root root 3.5K 20 tháng 3 17:24 .viminfo

Nếu bạn muốn thoát khỏi một bí danh, chỉ cần sử dụng lệnh unalias:

ll unalias

Các bí danh hiện nay được lấy ra.

Bạn có thể liệt kê tất cả các bí danh cấu hình của bạn bằng cách đi qua các lệnh bí danh mà không có bất kỳ đối số:

tên giả

Để tạm thời bỏ qua một bí danh (nói chúng ta lấy bí danh để ls ls -a), chúng ta có thể gõ:

\ Ls

Điều này sẽ gọi lệnh bình thường được tìm thấy trong con đường của chúng tôi, mà không sử dụng các phiên bản aliased.

Giả sử bạn đã không bỏ đặt nó, bí danh ll sẽ có sẵn trong suốt phiên shell hiện hành, nhưng khi bạn mở một cửa sổ terminal mới, điều này sẽ không có sẵn.

Để thực hiện dai dẳng này, chúng ta cần thêm điều này vào một trong các tập tin khác nhau mà được đọc khi một phiên shell bắt đầu. Lựa chọn phổ biến là ~ / .bashrc và ~ / .bash_profile. Chúng ta chỉ cần mở tập tin và thêm các bí danh có:

nano ~ / .bashrc

Ở dưới cùng hoặc bất cứ nơi nào bạn muốn, thêm bí danh bạn thêm vào dòng lệnh. Hãy để thêm một bình luận tuyên bố toàn bộ một phần dành cho bash bí danh:

#########
# Bí danh
#########

alias ll = “ls -lhA”

Bí danh này hoặc một biến thể thực sự có thể đã có trong tập tin của bạn. Nhiều phân phối tàu với một bộ các tập tin cấu hình bash tiêu chuẩn với một vài bí danh hữu ích.

Lưu và đóng file. Bất kỳ bí danh bạn thêm sẽ có sẵn thời gian tiếp theo bạn bắt đầu một phiên vỏ mới. Để đọc bất kỳ thay đổi bạn đã thực hiện trong tập tin của bạn vào trong phiên hiện tại của bạn, chỉ cần nói cho bash để đọc lại các tập tin ngay bây giờ:

source ~ / .bashrc

Ví dụ bí danh

Bây giờ bạn biết làm thế nào để tạo ra các bí danh của riêng bạn, hãy nói về một số người nổi tiếng có thể hữu ích cho bạn. Đây có thể được tìm thấy trên khắp các trang web, và một số cũng có thể được bao gồm trong cấu hình mặc định của bash phân phối của bạn là tốt.
Danh mục và bảng liệt kê

Nhiều người trong số các lệnh Linux đơn giản nhất là hữu ích hơn khi bạn áp dụng một số định dạng và các tùy chọn.

Chúng tôi đã thảo luận một ls ví dụ trên, nhưng có rất nhiều người khác, bạn có thể tìm thấy.

Hãy màn ls trong cột và với một chỉ số kiểu tập tin (thư mục cuối cùng với “/”, vv) theo mặc định:

alias ls = “ls -CF”

Chúng tôi cũng có thể dự đoán một số lỗi chính tả để làm cho nó gọi lệnh chính xác:

alias sl = “ls”

Chúng ta hãy cũng làm cho một bí danh để ống đầu ra của chúng tôi để ít để xem danh sách thư mục lớn với các định dạng dài:

alias LSL = “ls -lhFA | less”

Làm thế nào về chúng tôi đi lạc từ ls và thử một số lệnh hữu ích cho cd.

Điều này sẽ thay đổi vào thư mục mẹ của bạn, ngay cả khi bạn quên không gian:

alias cd .. = “cd ..”

Bạn cũng có thể cắt ra một phần cd hoàn toàn bằng cách làm cho một bí danh cho ..:

alias .. = “cd ..”

Chúng tôi có thể tìm thấy các tập tin trong thư mục hiện tại của chúng tôi một cách dễ dàng bằng cách thiết lập bí danh này:

alias fhere = “tìm thấy. -name”

Hệ thống Bí danh

Làm thế nào về một số giám sát và hệ thống của chúng tôi stats lệnh? Tôi gọi những việc này với các tùy chọn tương tự mọi thời gian, vì vậy tôi cũng có thể làm cho một số bí danh.

Điều này sẽ liệt kê sử dụng đĩa của chúng tôi trong các đơn vị con người có thể đọc được bao gồm các loại hệ thống tập tin, và in một số ở phía dưới:

alias df = “df -Tha –total”

Chúng tôi cũng có thể thêm biệt hiệu cho du đầu ra ưa thích của chúng tôi cũng như:

bí danh du = “du -ach | sort -h”

Hãy tiếp tục đi theo hướng tương tự bằng cách làm cho đầu ra miễn phí của chúng tôi thân thiện với con người hơn:

alias free = “-MT miễn phí”

Chúng ta có thể làm rất nhiều với bảng quá trình niêm yết của chúng tôi. Hãy bắt đầu bằng cách thiết lập một đầu ra mặc định:

alias ps = “ps auxf”

Làm thế nào về chúng tôi làm bảng tiến trình của chúng tôi có thể tìm kiếm. Chúng ta có thể tạo ra một bí danh để tìm kiếm quá trình của chúng tôi cho một đối số, chúng tôi sẽ vượt qua:

alias PSG = “ps aux | grep -v grep | grep -i -e Ứng dụng iPhone e”

Bây giờ, khi chúng tôi gọi nó với cái tên quá trình, chúng tôi đang tìm kiếm như là một đối số, chúng ta sẽ có được một tốt đẹp, đầu ra nhỏ gọn:

PSG bash

USER PID% CPU% MEM Ứng dụng iPhone RSS TTY STAT BẮT ĐẦU LÚC COMMAND
1001 5227 0.0 0.0 26.320 3376 pts / 0 Ss 16:29 00:00 bash

Bí danh linh tinh

Một lựa chọn phổ biến cho các lệnh mkdir mà chúng ta thường sử dụng là lá cờ -p để thực hiện bất kỳ thư mục cha cần thiết. Chúng tôi có thể làm điều này mặc định:

alias mkdir = “mkdir -p”

Chúng tôi có thể muốn thêm một lá cờ -v trên đó vì vậy chúng tôi đang nói với mọi tạo thư mục, trong đó có thể giúp chúng ta nhận ra một cách nhanh chóng nếu chúng ta có một lỗi đánh máy mà gây ra một chi nhánh thư mục ngẫu nhiên:

alias mkdir = “mkdir -pv”

Khi tải tập tin từ internet với wget, ở hầu hết các trường hợp, bạn sẽ muốn vượt qua những lá cờ -c để tiếp tục download trong trường hợp của các vấn đề. Chúng tôi có thể thiết lập rằng với điều này:

alias wget = “wget ​​-c”

Chúng tôi có thể tìm kiếm lịch sử của chúng tôi dễ dàng như với một grep của đầu ra lệnh lịch sử. Điều này đôi khi hữu ích hơn bằng cách sử dụng tổ hợp phím CTRL-R để đảo ngược tìm kiếm bởi vì nó mang lại cho bạn số lệnh thu hồi để làm phức tạp hơn sau đó:

alias histg = “lịch sử | grep”

Tôi có một vài công cụ hệ thống mà tôi thích để nâng cấp từ phiên bản tiêu chuẩn với các công cụ phức tạp hơn. Những điều này sẽ chỉ làm việc nếu bạn đã tải về các tiện ích cần thiết, nhưng họ có thể rất hữu ích. Hãy nhớ rằng những thể ảnh hưởng đến bí danh khác của bạn.

Điều này sẽ thay thế các lệnh thông thường trên cùng với một phiên bản nâng cao được dễ dàng hơn trên mắt và có thể được sắp xếp, tìm kiếm, và cuộn không có biến chứng:

alias top = “htop”

Theo cách tương tự, lệnh ncdu có thể được tải về trong đó trình bày các tập tin và thư mục kích thước trong một kernel tương tác hiển thị mà bạn có thể duyệt và sử dụng để thực hiện các hành động tập tin đơn giản:

bí danh du = “ncdu”

Có một tiện ích nâng cấp cho df cũng gọi đó là pydf. Nó cung cấp sản lượng colorized và quán bar sử dụng dựa trên văn bản. Chúng tôi có thể mặc định để sử dụng tiện ích này nếu chúng tôi có:

alias df = “pydf”

Đã bao giờ bạn cần địa chỉ IP công cộng của bạn từ dòng lệnh khi bạn đang đứng sau một router sử dụng NAT? Một cái gì đó như thế này có thể hữu ích:

alias myip = “cong http://ipecho.net/plain; echo”

Đối với mục đích của riêng tôi, tôi thích để tối ưu hóa hình ảnh để tải lên cho các bài viết được 690px hoặc ít hơn, vì vậy tôi sử dụng gói ImageMagick (sudo apt-get install ImageMagick nếu chưa có), trong đó có một lệnh gọi mogrify mà không chỉ này. Tôi có lệnh này trong file ~ / .bashrc của tôi:

alias webify = “mogrify -resize 690 \> * .png”

Điều này sẽ thay đổi kích thước các hình ảnh PNG trong thư mục hiện hành, chỉ khi chúng có rộng hơn 690px.

Nếu tôi sau đó phải tải chúng lên một máy chủ, tôi có thể sử dụng SFTP để kết nối và tự động thay đổi vào một thư mục cụ thể:

alias upload = “sftp username@server.com: / path / to / upload / thư mục

Bắt đầu với Bash Chức năng

Mặc dù bí danh là nhanh chóng và dễ dàng để thực hiện, họ khá hạn chế trong phạm vi của họ. Bạn sẽ tìm thấy khi bạn đang cố gắng để các lệnh chuỗi lại với nhau mà bạn không thể truy cập vào các đối số được đưa ra tại thời gian chạy rất tốt, trong số những thứ khác. Bí danh cũng có thể khá chậm bởi vì nếu chúng được đọc sau khi tất cả các chức năng.

Có một thay thế cho bí danh mà là mạnh mẽ hơn và có thể giúp bạn thu hẹp khoảng cách giữa các bí danh bash shell và kịch bản đầy đủ. Chúng được gọi là chức năng vỏ. Họ làm việc trong gần như cùng một cách như là bí danh, nhưng là chương trình hơn và chấp nhận đầu vào trong một cách tiêu chuẩn.

Chúng tôi sẽ không đi vào chi tiết mở rộng ở đây, bởi vì chúng có thể được sử dụng trong rất nhiều tình huống phức tạp và bash là cả một ngôn ngữ kịch bản, nhưng chúng ta sẽ đi qua một số ví dụ cơ bản.

Để bắt đầu, có hai cách cơ bản để khai báo một cú pháp bash. Việc đầu tiên sử dụng các lệnh chức năng và có vẻ gì đó như thế này:

chức năng function_name {
command1
command2
}

Cú pháp khác sử dụng một tập hợp các dấu ngoặc đơn mà là nhiều hơn “C-like”:

function_name () {
command1
command2
}

Chúng tôi có thể nén hình thức thứ hai này vào một dòng và tách các lệnh với phẩy. Một dấu chấm phẩy phải đến sau khi lệnh cuối cùng quá:

function_name () {command1; command2; }

Hãy bắt đầu bằng cách chứng minh một chức năng bash cực kỳ hữu ích. Điều này sẽ tạo ra một thư mục và sau đó ngay lập tức di chuyển vào thư mục đó. Điều này thường là chính xác trình tự, chúng tôi thực hiện khi làm cho thư mục mới:

mcd () {
mkdir -p $ 1
cd $ 1
}

Bây giờ, khi chúng ta sử dụng sử dụng chức năng này thay vì các lệnh mkdir thường xuyên để tự động thay đổi vào thư mục sau khi tạo:

mcd thử nghiệm
pwd

/ Home / demouser / test

Một chức năng thú vị mà bạn sẽ thấy xung quanh là các chức năng giải nén. Điều này kết hợp rất nhiều tiện ích cho phép bạn để giải nén chỉ là về bất kỳ định dạng tập tin nén. Có một số biến thể, nhưng điều này xuất phát từ đây:

chức năng trích {
nếu [-z “$ 1”]; sau đó
# Sử dụng màn hình nếu không có tham số đã cho
echo “Cách sử dụng: giải nén <path / file_name> <zip | rar | bz2 | gz | tar | tbz2 | tgz | Z | 7z | xz | ex | tar.bz2 | tar.gz | tar.xz>.”
khác
if [-f $ 1]; sau đó
# NAME = $ {1%. *}
# Mkdir $ NAME && cd $ NAME
trường hợp 1 $ trong
* .tar.bz2) Tar xvjf ../$1 ;;
* .tar.gz) Tar xvzf ../$1 ;;
* .tar.xz) Tar xvJf ../$1 ;;
* .lzma) Unlzma ../$1 ;;
* .bz2) Bunzip2 ../$1 ;;
* .rar) Unrar x -ad ../$1 ;;
* .gz) Gunzip ../$1 ;;
* .tar) Tar xvf ../$1 ;;
* .tbz2) Tar xvjf ../$1 ;;
* .tgz) Tar xvzf ../$1 ;;
* .zip) Giải nén ../$1 ;;
* .Z) Giải nén ../$1 ;;
* .7z) 7z x ../$1 ;;
* .xz) Unxz ../$1 ;;
* .exe) Cabextract ../$1 ;;
*) Echo “trích:” $ 1 “- phương pháp lưu trữ không rõ” ;;
esac
khác
echo “$ 1 – tập tin không tồn tại”
fi
fi
}

Chức năng này có các tham số đầu tiên và cuộc gọi chương trình tiện ích thích hợp dựa trên các phần mở rộng tập tin được sử dụng.
Phần kết luận

Hy vọng rằng hướng dẫn này đưa cho bạn một số nguồn cảm hứng cho việc tạo các biệt hiệu của riêng bạn và chức năng bash. Sử dụng rộng rãi này có thể giúp làm cho thời gian của bạn trong vỏ thú vị hơn và ít phức tạp hơn.

Hãy nhớ phải cảnh giác với định nghĩa lại lệnh hiện hành vi đó là có khả năng phá hoại. Thậm chí làm ngược lại và răng cưa một lệnh đến một biến thể an toàn hơn (luôn luôn yêu cầu xác nhận trước khi xóa đệ quy, ví dụ) có thể trở lại cắn bạn lần đầu tiên bạn đang ở trên một hệ thống mà không có nó một khi bạn đã đến để dựa vào nó .

Để tìm ứng viên đó có thể là tốt để tạo ra các bí danh cho, nó có thể là một ý tưởng tốt để tìm kiếm lịch sử của bạn cho các lệnh của bạn thường được sử dụng nhất. Một one-liner từ đây cho phép chúng ta nhìn thấy các lệnh được sử dụng nhất của chúng tôi:

lịch sử | awk ‘{CMD [$ 2] ++; đếm ++;} END {for (một trong CMD) in CMD [a] “” CMD [a] / đếm * 100 “%” a;}’ | grep -v ” ./ “| cột -c3 -s” “-t | sort -nr | nl | head -n10

1 247 24,7% cd
2 112 11,2% vim
3 90 9% xuất cảnh
4 72 7,2% ls
5 70 7% xset
6 56 5,6% apt-get
7 40 4% vlc
8 40 4% rm
9 38 3,8% màn hình
10 27 2,7% htop