• 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

  • 相关阅读:
    每天一个linux命令(8):scp使用
    C++11 列表初始化
    国外程序员整理的C++资源大全
    fiddler4 使用教程
    C++11 右值引用和转移语义
    数据库炸了——是谁动了我的wait_timeout
    Go组件学习——gorm四步带你搞定DB增删改查
    Go组件学习——cron定时器
    Go语言学习——channel的死锁其实没那么复杂
    Go语言学习——彻底弄懂return和defer的微妙关系
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2530419.html
Copyright © 2020-2023  润新知