Sunday, December 30, 2007

Using shell - tips

下为转载:

这篇 Bash Shell Shortcuts 的快捷键总结的非常好。值得学习。下面内容大多数是拷贝粘贴与总结.
CTRL 键相关的快捷键:

Ctrl + a - Jump to the start of the line
Ctrl + b - Move back a char
Ctrl + c - Terminate the command //用的最多了吧?
Ctrl + d - Delete from under the cursor
Ctrl + e - Jump to the end of the line
Ctrl + f - Move forward a char
Ctrl + k - Delete to EOL
Ctrl + l - Clear the screen //清屏,类似 clear 命令
Ctrl + r - Search the history backwards //查找历史命令
Ctrl + R - Search the history backwards with multi occurrence
Ctrl + u - Delete backward from cursor // 密码输入错误的时候比较有用
Ctrl + xx - Move between EOL and current cursor position
Ctrl + x @ - Show possible hostname completions
Ctrl + z - Suspend/ Stop the command
补充:
Ctrl + h - 删除当前字符
Ctrl + w - 删除最后输入的单词

ALT 键相关的快捷键:
平时很少用。有些和远程登陆工具冲突。

Alt + < - Move to the first line in the history Alt + > - Move to the last line in the history
Alt + ? - Show current completion list
Alt + * - Insert all possible completions
Alt + / - Attempt to complete filename
Alt + . - Yank last argument to previous command
Alt + b - Move backward
Alt + c - Capitalize the word
Alt + d - Delete word
Alt + f - Move forward
Alt + l - Make word lowercase
Alt + n - Search the history forwards non-incremental
Alt + p - Search the history backwards non-incremental
Alt + r - Recall command
Alt + t - Move words around
Alt + u - Make word uppercase
Alt + back-space - Delete backward from cursor
// SecureCRT 如果没有配置好,这个就很管用了。

其他特定的键绑定:
输入 bind -P 可以查看所有的键盘绑定。这一系列我觉得更为实用。

Here "2T" means Press TAB twice
$ 2T - All available commands(common) //命令行补全,我认为是 Bash 最好用的一点
$ (string)2T - All available commands starting with (string)
$ /2T - Entire directory structure including Hidden one
$ ./2T - Only Sub Dirs inside including Hidden one
$ *2T - Only Sub Dirs inside without Hidden one
$ ~2T - All Present Users on system from "/etc/passwd" //第一次见到,很好用
$ $2T - All Sys variables //写Shell脚本的时候很实用
$ @2T - Entries from "/etc/hosts" //第一次见到
$ =2T - Output like ls or dir //好像还不如 ls 快捷
补充:
Esc + T - 交换光标前面的两个单词

很多来自GNU 的 readline 库。另外一份总结也很好

记忆是所有技术人员的敌人。一次要把所有的都记住是不可能的。针对自己的使用习惯,对少数快捷键反复使用,短期内就会有效果。

你还知道那些好用的快捷键 ? 补充一下 ?

EOF

Saturday, December 1, 2007

Link for trip memories

That is really one of my best trips with so much joy.

http://www.flickr.com/gp/35473168@N00/szW9Pz


Photos in Tartu.

Wednesday, November 28, 2007

Some experience with C string operation

After my C project work. Accumulate some tips.

List here in case :)


Bad :
char buf[10];
scanf(
"%s", buf);
Good way:
char buf[10];
scanf(
"%9s", buf);


Bad :
char buf[BUFSIZ];
gets(buf);

Good way:
char buf[BUFSIZ];
int ch;
char *p;

if (fgets(buf, sizeof(buf), stdin)) {
/* fgets succeeds, scan for newline character */
p = strchr(buf, '\n');
if (p) {
*p = '\0';
}
else {
/* newline not found, flush stdin to end of line */
while (((ch = getchar()) != '\n') && !feof(stdin) && !ferror(stdin) );
}
}
else {
/* fgets failed, handle error */
}

OR:

char buf[BUFSIZ];

if (gets_s(buf, BUFSIZ) == NULL) {
/* handle error */
}
Bad :
char buf[BUFSIZ], *p;
int ch;
p = buf;
while ( ((ch = getchar()) != '\n') && !feof(stdin) && !ferror(stdin)) {
*p++ = ch;
}


*p++ = 0;
Good way :
unsigned char buf[BUFSIZ];
int ch;
int index = 0;
int chars_read = 0;
while ( ( (ch = getchar()) != '\n') && !feof(stdin) && !ferror(stderr) ) {
if (index < class="code-object">char)ch;
}
chars_read++;
} /* end while */
buf[index] = '\0'; /* terminate NTBS */
if (feof(stdin)) {
/* handle EOF */
}
if (ferror(stdin)) {
/* handle error */
}
if (chars_read > index) {
/* handle truncation */
}


Reference:
https://www.securecoding.cert.org/confluence/display/seccode/FIO43-C.+Do+not+copy+data+from+an+unbounded+source+to+a+fixed-length+array

Monday, November 26, 2007

How to generate keys by ssh command

Finally get the clue with the help of Zeba's website.

1. On the machine you want to use to call another machine, say A ->B
We would like A to ssh B without inputing the password.

2. In A machine, type the command: ssh-keygen -t dsa -b 1024
no key phrases

3. Copy the key to machine B by: scp
id_dsa.pub user@192.168.X.X:/home/user/.ssh (this might be changed according to different setting)

4. cat id_dsa.pub >> /path/.ssh/authorizedkeys

5. Now you can ssh B without password from A.

for details I need to read more on security authentication...

Monday, July 2, 2007

Maybe there is still a chance for me to be there


VMWare Stanford
There is a connection between, and there is a chance also, for me.

Still remember your dream?
Aaron

Friday, June 29, 2007

Using the email to post

This is quite new to me. Let me try it : )

Should be a nice feature

Aaron

My blog here

What a nice new feature for my Google account.
Decide to write this blog mainly in English or Finnish (once my level is good enough :) together with my Chinese one on wordpress.

Thanks for google's great efforts to keep on bringing us wonderful services.

Aaron