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