Skip to main content

[bash] introspection

introspection: dịch thô ra Tiếng Việt là
Sự tự xem xét nội tâm; sự nội quan

trong quyển sách học python nổi tiếng nhất Dive Into Python có 1 chương tên là "The Power Of Introspection", viết về câu lệnh id, dir để soi xét xem một object có những đặc tính gì.

Trên bash, một số câu lệnh giúp bạn biết được những cài đặt mà bạn đang dùng, cũng có thể coi là 1 kiểu introspection:

1. alias
Hiện các alias mà bạn đang dùng (tức bạn đã định nghĩa nó hoặc lấy từ các file ~/.bash_alias, ...

hvn@archhvn: ~ () $ alias
alias POM='git pull origin master'
alias cdd='cd ~/Dropbox'
alias cdg='cd ~/Github'
alias cdh='cd ~/hgrepo'
...
2. set


Hiện tất cả các biến đang sử dụng (bao gồm cả các bash functions)

hvn@archhvn: ~ () $ set | head
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="45" [3]="2" [4]="release" [5]="x86_64-unknown-linux-gnu")


3. env
Hiện tất cả các biến environment

hvn@archhvn: ~ () $ env | head
XDG_VTNR=1
XDG_SESSION_ID=1
SSH_AGENT_PID=707
DESKTOP_STARTUP_ID=i3/i3-sensible-terminal/705-7-archhvn_TIME2040249
TERM=rxvt-unicode
SHELL=/bin/bash
WINDOWID=31457287
USER=hvn
hvn@archhvn: ~ () $ which env
/usr/bin/env

4. set -x ; set +x
tác dụng như bật tính năng debug của bash lên. Sau khi gõ set -x, bạn sẽ thấy diễn giải của mọi thứ, kể cả cái PS1 của bạn được bôi màu thế nào :D

hvn@archhvn: ~ () $ set -x
+ set -x
++ printf '\033]0;%s@%s:%s\007' hvn archhvn '~'
++ git_branch
+++ git symbolic-ref HEAD
+++ cut -d/ -f 3
++ echo
Dùng set +x để tắt đi.

Happy bash!

Comments

  1. type: để xem loại của function và định nghĩa của nó:

    hvn@archhvn: ~ () $ type deps
    deps is a function
    deps ()
    {
    cd $1/..;
    parent=`pwd`;
    cd -;
    tarball=/tmp/salt_`date +%Y%m%d_%H%M%S`_$2.tar.gz;
    $1/xxx.py $parent/saltpillar $parent/data > $tarball;
    if [ ! -z $3 ]; then
    if ! `scp $tarball root@$3:/tmp`; then
    ssh-keygen -f ~/.ssh/known_hosts -R $3;
    scp $tarball root@$3:/tmp;
    fi;
    fi
    }
    hvn@archhvn: ~ () $ declare -f deps
    deps ()
    {
    cd $1/..;
    parent=`pwd`;
    cd -;
    }

    ReplyDelete

Post a Comment

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG