• linux 101 hacks 第一章cd命令


    本系列来源于《linux 101 hacks》,作者还写了其他101 hacks教程,读了几章,觉得技巧都还不错,很实用,做个总结收藏。

    cdpath

    设置基目录

    [ramesh@dev-db ~]# pwd
    /home/ramesh
    [ramesh@dev-db ~]# cd mail
    -bash: cd: mail: No such file or directory
    [注: 以上试图进入当前目录下的 mail 子目录]
    [ramesh@dev-db ~]# export CDPATH=/etc
    [ramesh@dev-db ~]# cd mail
    /etc/mail
    [注: 以上为进入/etc 下的 mail 目录,而不是当前目录下的 mail 目录]
    [ramesh@dev-db /etc/mail]# pwd
    /etc/mail

    如果希望设置永久有效, 可以将 export CDPATH=/etc 写入 ~/.bash_profile 。
    与环境变量 PATH 相似的是, 你也可以在 CDPATH 加入多个目录项, 每个目录项以冒号分隔, 示例
    如下: 例如:

    export CDPATH=.:~:/etc:/var

    cd 和 alias

    我只能说太tm花哨了

    # mkdir -p
    /tmp/very/long/directory/structure/that/is/too/deep
    # cd /tmp/very/long/directory/structure/that/is/too/deep
    # pwd
    /tmp/very/long/directory/structure/that/is/too/deep
    # cd ../../../../
    # pwd
    /tmp/very/long/directory/structure

    你可以使用以下四种方法来替代 cd ../../../../ ,以便能快速的向上返回四级目录。在下面的方法中, “..4” 用来退回 4 级目录, “..3” 退回 3 级目录, “..2” 退回 2 级目录。将以下的几个别名写入到~/.bashrc(别的 Linux/Unix 可能是~/.bash_profile) 中,之后重新登入即可。  

      这种常用的命令都可以保存在 ~/.bashrc   ~/.bash_profile   /etc/profile ,以后不重复了

    alias ..="cd .."
    alias ..2="cd ../.."
    alias ..3="cd ../../.."
    alias ..4="cd ../../../.."
    alias ..5="cd ../../../../.."
    # cd /tmp/very/long/directory/structure/that/is/too/deep
    # ..4
    [注: 使用..4 向上返回四级目录]
    # pwd
    /tmp/very/long/directory/structure
    alias ..="cd .."
    alias ...="cd ../.."
    alias ....="cd ../../.."
    alias .....="cd ../../../.."
    alias ......="cd ../../../../.."
    # cd /tmp/very/long/directory/structure/that/is/too/deep
    # .....
    [注:使用.....( 5 个点)意味着向上返回四级目录]
    # pwd
    /tmp/very/long/directory/structure
    alias cd..="cd .."
    alias cd...="cd ../.."
    alias cd....="cd ../../.."
    alias cd.....="cd ../../../.."
    alias cd......="cd ../../../../.."
    # cd /tmp/very/long/directory/structure/that/is/too/deep
    # cd.....
    [ 注: 用 cd.....退回四层目录]
    # pwd
    /tmp/very/long/directory/structure
    下面的例子中, 用“cd4” ( cd 后跟数字 4) 来退回 4 层目录。
    alias cd1="cd .."
    alias cd2="cd ../.."
    alias cd3="cd ../../.."
    alias cd4="cd ../../../.."
    alias cd5="cd ../../../../.."

    mkdir和cd

    # mkdir -p /tmp/subdir1/subdir2/subdir3
    # cd /tmp/subdir1/subdir2/subdir3
    # pwd
    /tmp/subdir1/subdir2/subdir3

    如果将 mkdir 和 cd 操作在一个单独的命令中实现会不会很棒呢? 试着将如下代码加
    入./.bash_profile 并重新登录。

    $ vi .bash_profile
    function mkdircd () { mkdir -p "$@" && eval cd ""$$#""; }

    这个我个人感觉很实用!

    # mkdircd /tmp/subdir1/subdir2/subdir3
    [注: 该命令在创建目录后并自动切换到该目录下]
    # pwd
    /tmp/subdir1/subdir2/subdir3

    cd -

    这个技巧很常用了,不谈了

    dirs、 pushd、 popd来操作目录栈

    这个呢,自己操作下就熟悉了

    pushd 进这个目录

    popd退出这个目录,返回你刚刚的目录 ,注意,这里只要你pushd进去后,无论怎么操作,popd还会回来到之前的位置的,和cd -不一样的

    dirs显示你现在的目录栈,意思是你可以pushd ,再pushd进目录,dirs显示你的所有目录栈,popd然后再挨个退出,先进后出队列

    如何使用 pushd 和 popd 呢? 让我们先创建一些临时的目录然后把他们压入目录堆栈中去。
    # mkdir /tmp/dir1
    # mkdir /tmp/dir2
    # mkdir /tmp/dir3
    # mkdir /tmp/dir4
    # cd /tmp/dir1
    # pushd .
    # cd /tmp/dir2
    # pushd .
    # cd /tmp/dir3
    # pushd .
    # cd /tmp/dir4
    # pushd .
    # dirs
    /tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
    [注:显示的第一个目录名总会是当前所在的目录,而不是显式压入堆栈里的内容

    此时,目录堆栈就包含以下内容:

    /tmp/dir4
    /tmp/dir3
    /tmp/dir2
    /tmp/dir1

    最后被压入的目录会在堆栈的顶端。当你执行“popd” ,系统就会跳转到栈顶的目录中,并且 从堆栈中把它清除掉。正如上面所展示的,最后压入堆栈的是/tmp/dir4,所以当进行一次 popd 时,就会跳转到/tmp/dir4 目录下同时从堆栈中将它移除。如下所示:

    # popd
    # pwd
    /tmp/dir4
    [注:执行完上 popd 命令之后,目录栈包括以下目录
    /tmp/dir3
    /tmp/dir2
    /tmp/dir1]
    # popd
    # pwd
    /tmp/dir3
    [注:执行完上 popd 命令之后,目录栈包括以下目录]
    /tmp/dir2
    /tmp/dir1

    shopt –s cdspell

    使用"shopt -s cdspell"可以自动修正 cd 时拼写错误的目录名。如果你在输入时经常犯些错
    误,这个命令是很有用的。详见以下示例:  

    没怎么用过。。

    # cd /etc/mall
    -bash: cd: /etc/mall: No such file or directory
    # shopt -s cdspell
    # cd /etc/mall
    # pwd
    /etc/mail
    [注: 当我错误的把 mail 敲成了 mall,用这个命令 mall 就自动被换成了 mail]
  • 相关阅读:
    线程池和进程池
    初识数据库
    线程q
    event事件
    死锁和递归锁
    信号量
    PythonStudy——线程中的几种消息队列
    PythonStudy——GIL Global Interpreter Lock 全局解释器锁
    PythonStudy——异步回调
    PythonStudy——日志模块 logging
  • 原文地址:https://www.cnblogs.com/dahu-daqing/p/7811998.html
Copyright © 2020-2023  润新知