linux 101 hacks command

原文链接

巧用cd命令: 
1:用 CDPATH 来定义你的cd 命令的 根目录 
例:如现在不再/etc下 
export CDPATH=/etc 
cd mail 
将会进入到 /etc/mail 目录下 
这样我们就可以在我们自己的home 目录下的.bash_profile文件里 加上 export CDPATH=path,这样我们就可以把自己一个常用的目录定为我们的cd的起始目录 

2:对于很深的目录,如果想返回上一级或上两级 或多级, 敲入很多http://www.cnblogs.com/......等会很麻烦,我们可以在.bash_profile里加上 
alias ..="cd .." 
alias ..2="cd ../.." 
alias ..3="cd http://www.cnblogs.com/.." 
alias ..4="cd http://www.cnblogs.com/../.." 
alias ..5="cd http://www.cnblogs.com/http://www.cnblogs.com/.." 
这样我们就可以用 ..5放回到上5级的目录。 
当然这里你可以用任意的形式定义别名, 如用 cd2="cd ../..",或 cd...="cd ../.."等等。 
这样我们就可以使用我们自定义的“快捷键”了。 

3:一个命令解决新建目录 && 进入此目录 
$ vi .bash_profile 
function mkdircd () { mkdir -p "$@" && eval cd "/"/$$#/""; } 
我们就可以用此自制的mkdircd命令实现目的了。 


4:cd - 可以返回我们上一次到过的目录, 这样我们就不会为错误的输入而跳出很深的目录而懊恼了。而不用去用上下键 或 history去找上次的命令了。 

5:popd , pushd , dirs : 
pushd:把当前的目录 入栈 
popd : 把当前的目录 出栈并进入该目录 
dirs:列出栈中的目录。 

6:用“shopt -s cdspell” 纠正你的输入错误 
现在sh下敲入以上命令, 若你想进入/tmp目录 而错误的敲为了cd /temp ,则自动回纠正你的错误(当然这里假设你没有/temp这个目录),也可以试试别的拼写错误的情况。

 

日期操作: 
1:设置日期 
date {mmddhhmiyyyy.ss} 
mm – Month 
dd – Date 
hh – 24 hour format 
mi – Minutes 
yyyy – Year 
ss – seconds 
如:# date 013122192009.53 
也可以用以下的形式: 
# date +%Y%m%d -s "20090131" 
# date -s "01/31/2009 22:19:53" 
# date -s "31 JAN 2009 22:19:53" 
# date set="31 JAN 2009 22:19:53" 
只设置时间: 
# date +%T -s "22:19:53" 
# date +%T%p -s "10:19:53PM" 

2:察看 硬件时间 
用 hwclock 
修改硬件时间: 
# hwclock –systohc 
# hwclock --systohc –utc 
察看系统设置 
# cat /etc/sysconfig/clock 

3:设置日期格式 
o %D date (mm/dd/yy) 
o %d day of month (01..31) 
o %m month (01..12) 
o %y last two digits of year (00..99) 
o %a locale’s abbreviated weekday name (Sun..Sat) 
o %A locale’s full weekday name, variable length (Sunday..Saturday) 
o %b locale’s abbreviated month name (Jan..Dec) 
o %B locale’s full month name, variable length (January..December) 
o %H hour (00..23) 
o %I hour (01..12) 
o %Y year (1970…) 
举例如: 
$ date 
Thu Jan 1 08:19:23 PST 2009 
$ date --date="now" 
Thu Jan 1 08:20:05 PST 2009 
$ date --date="today" 
Thu Jan 1 08:20:12 PST 2009 
$ date --date='1970-01-01 00:00:01 UTC +5 hours' +%s 
18001 
$ date '+Current Date: %m/%d/%y%nCurrent Time:%H:%M:%S' 
Current Date: 01/01/09 

4:得到过去时间 和 将来的时间 
过去时间: 
$ date --date='3 seconds ago' 
Thu Jan 1 08:27:00 PST 2009 
$ date --date="1 day ago" 
Wed Dec 31 08:27:13 PST 2008 
$ date --date="1 days ago" 
Wed Dec 31 08:27:18 PST 2008 
$ date --date="1 month ago" 
Mon Dec 1 08:27:23 PST 2008 
$ date --date="1 year ago" 
Tue Jan 1 08:27:28 PST 2008 
$ date --date="yesterday" 
Wed Dec 31 08:27:34 PST 2008 
$ date --date="10 months 2 day ago" 
Thu Feb 28 08:27:41 PST 2008 
将来时间: 
$ date 
Thu Jan 1 08:30:07 PST 2009 
$ date --date='3 seconds' 
Thu Jan 1 08:30:12 PST 2009 
$ date --date='4 hours' 
Thu Jan 1 12:30:17 PST 2009 
$ date --date='tomorrow' 
Fri Jan 2 08:30:25 PST 2009 
$ date --date="1 day" 
Fri Jan 2 08:30:31 PST 2009 
$ date --date="1 days" 
Fri Jan 2 08:30:38 PST 2009 
$ date --date="2 days" 
Sat Jan 3 08:30:43 PST 2009 
$ date --date='1 month' 
Sun Feb 1 08:30:48 PST 2009 
$ date --date='1 week' 
Thu Jan 8 08:30:53 PST 2009 
$ date --date="2 months" 
Sun Mar 1 08:30:58 PST 2009 
$ date --date="2 years" 
Sat Jan 1 08:31:03 PST 2011 
$ date --date="next day" 
Fri Jan 2 08:31:10 PST 2009 
$ date --date="-1 days ago" 
Fri Jan 2 08:31:15 PST 2009 
$ date --date="this Wednesday" 
Wed Jan 7 00:00:00 PST 2009

 

1:查看ssh版本 
ssh -V 
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003   这个为 openSSh 
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version)...   这个为ssh2 

2:用username 登陆 hostname 上  
ssh -l username hostname 

3:察看客户端 调试 信息: 
ssh -v -l username hostname 
(加上 小写的 -v就可以看到了) 

4:用 ~ and Control-Z 切换ssh 登陆 
当用ssh 登陆到远程服务器后, 可以在sh 里面输入 ~ 和 ctr+z (当你先输入 ~时,不能立即看到输入的这个符号) 
这样你就把 远程登陆的 session 切换成 后台执行 ,jobs命令可以查看,用 fg %1 再把它切换回来。

 

1:grep command 
# grep search_word filename 
-v  不显示符合的行 
-c 出现的次数 
-r 在文件夹里面找 
-i 忽略大小写 
-l 显示符合条件的 文件名 

2:find command 
find path -name filename  以文件名查找 
-type 
-size (+100m:大于100m的) 
-mtime (+60)  60天内未改动的  -2 2天内改动过的 
-exec 找出来以后执行之后的命令 
# find / -type f -name *.tar.gz -size +100M -exec ls -l {} /; 
# find / -type f -name *.tar.gz -size +100M -exec rm -f {} /; 

3:抑制标准输出 
> /dev/null 
抑制 错误 输出 
2 >/dev/null 

4:join 连接两个文件 
5:改变文件内容的大小写  tr a-z A-Z < filename  (小写到达写) 

6:Xargs Command 
Xargs 把前一个命令的输出 当作后一个的输入 
# find /etc -name "*.conf" | xargs ls –l  列出在。。。下 的符合。。。的文件 
cat url-list.txt | xargs wget –c  一个文件里有你的url列表,你可以用这个一次下载下来 
# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz  找出所有jpg文件打包 


7:Sort Command 
以文本形式排序 
sort filename 
-r 倒序 
$ sort -t: -k 2 names.txt   -t(紧跟分隔符) -k(第几个域) 
-u 排除重复项 

8:Uniq Command 
经常与sort一起排除重复的 
sort namesd.txt | uniq 
uniq -c 显示出现的次数 
uniq -d 只显示重复了的 

9:Cut Command 
只显示文件的某一列 
$ cut -d: -f 1,3 names.txt 以 : 分隔的文件 显示第一个 第三个 field 
$ cut -c 1-8 names.txt  显示文件的每一行的前8个字符 
cut -d: -f1 /etc/passwd Displays the unix login names for all the users in the system. 

10:Stat Command 
显示某个文件或文件夹的属性 
stat /etc/my.cnf 
-f 某个文件系统的属性 

11:Diff Command 
diff [options] file1 file2 

12:ac Command 
ac   统计用户的连接的统计时间 
-p 每个人的总时间 
-d username 某个用户的时间

 

1:zip command 
语法: zip {.zip file-name} {file-names} 
-r zip一个目录 
-{1..9} 1:fast  9:best default : 6 
-P pwd 密码  (会显示 密码) 
-e pwd(密码不会回显) 
-t 验证一个zip文件 


2:unzip 
-v 察看解压详细过程 
-l 之查看其内容 而不解压 


3:tar command 
语法: 
Syntax: tar [options] [tar-archive-name] [other-file-names] 
options: 
c  创建一个tar文件 
v verbose mode, 
f 制定压缩的文件名 
t:察看tar文件内容 
x:解压 

z:使用在.gz文件的情况下 
gzip比bzip快 , 而bzip比gzip压缩率大 
j:使用在.bz2文件的情况下

 

1:PS1 - Default Interaction Prompt 
export PS1="/u@/h /w> " /u用户名,/h 主机名 /w 当前路径 , 如在home目录下,则显示~ 
/t 时间 , /@  12小时形式的时间  $kernel_version kernel 版本号, 
2:PS2 - Continuation Interactive Prompt 
命令太长了,你要换一行输入的话就要用这个 / ,写在行尾,然后enter后默认提示为 >(这就是ps2) 
export PS2="continue-> " 可以改变 为 continue-> 


3:PS3 - Prompt used by “select” inside shell script 

4:PS4 - Used by “set -x” to prefix tracing output 
在shell的debug模式下(set -x 进入debug),的提示 
o $0 - indicates the name of script 
o $LINENO - displays the current line number within the script 

5:PROMPT_COMMAND 
shell 在显示ps1以后,就会执行 PROMPT_COMMAND. 

6:改变ps1的提示颜色 
$ export PS1="/e[0;34m/u@/h /w> /e[m " 
/e[  彩色提示 开始 
x;ym 颜色值 
/e[m 彩色提示 结束 
颜色表如下: 
Black 0;30 
Blue 0;34 
Green 0;32 
Cyan 0;36 
Red 0;31 
Purple 0;35 
Brown 0;33 

7:改变提示的背景颜色 
/e[{code}m  /e[m  code:40-47 

 

1:HISTTIMEFORMAT command: 
在命令行里面显示 定义了HISTTIMEFORMAT 的话 , 在使用history命令时就会显示制定格式的执行命令的时间 
export HISTTIMEFORMAT=’%F %T ‘  %F 年月日 %T 时分秒 

history n 显示最近 n个命令 

在命令行里面 按 ctrl+R 会显示 reverse-i-search 的提示,可以查找相关的使用过的命令,找到以后可以编辑这个命令 

在命令行下,输入以下命令,都会执行上一次的命令: 
!! 
!-1 
向上箭头 然后 enter 
按 ctrl+P  然后enter 

!n 执行 history里第n条记录的命令 
!prex 执行 以 prex为前缀 的最近一条命令 

HISTSIZE = n 
HISTFILESIZE =n限制 history的大小 

~/.bash_history history保存在这个文件里 

HISTFILE=/root/.commandline_warrior 把history保存在commandline_warrior 文件里 

export HISTCONTROL=ignoredups 去掉history里面连续重复的命令 
export HISTCONTROL=erasedups 去掉history里面所有重复的命令 


export HISTCONTROL=ignorespace 用户在命令 前 输入一个空格,然后history里面就看不到这个命令了 

history -c 清楚之前的历史记录 

export HISTSIZE=0 限制history命令的使用 

HISTIGNORE 忽略某些命令 (参数严格一致) 
例如:export HISTIGNORE=”pwd:ls:ls –ltr:”忽略pwd , ls , ls -ltr

posted @ 2012-06-01 11:13  wangkangluo1  阅读(367)  评论(0编辑  收藏  举报