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 ..="cd ../.."
alias ..="cd ../../.."
alias ..="cd ../../../.."
alias ..="cd ../../../../.."
# cd /tmp/very/long/directory/structure/that/is/too/deep
# ..
[注: 使用.. 向上返回四级目录]
# 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
# .....
[注:使用.....( 个点)意味着向上返回四级目录]
# 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 后跟数字 ) 来退回 层目录。
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]
linux 101 hacks 第一章cd命令的更多相关文章
- Linux内核分析——第一章 Linux内核简介
第一章 Linux内核简介 一.Unix的历史 1.Unix系统成为一个强大.健壮和稳定的操作系统的根本原因: (1)简洁 (2)在Unix中,很多东西都被当做文件对待.这种抽象使对数据和对设备的 ...
- linux下的几个cd命令
linux cd命令 cd data 进入到 data 目录 cd .. 返回上级文件夹 cd ~ 返回用户主文件夹 cd / 返回根文件夹
- linux 101 hacks 5PS1
PS1——默认提示符 看完这一章,我心里若干个卧槽.. 如下所示, 可以通过修改 Linux 下的默认提示符,使其更加实用.在下面的例子中,默认的 PS1的值是“ \s-\v\$”,显示出了 shel ...
- linux 101 hacks 7crontab
技巧 74: crontab 书上的这一段我删了,重写一下,用的是ubuntu 16.04系统 参考 每天一个 linux 命令(50):crontab 命令 crond 服务 安装 crontab: ...
- linux 101 hacks 6history 及相关关键字
如果你经常使用命令行,那么有效的使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌握了我在下面给出的 15 个例子, 你就会发现使用命令行将更有乐趣 是吗?我学一学呢 技巧 50:使用 HIST ...
- linux 101 hacks 2date,grep,find
感觉挨个按着作者来的太蠢了,我还是放自己觉得不错的东西把 用特定格式显示当前时间 以下的方法可以用各种不同的格式来显示当前时间: $ date Thu Jan :: PST $ date --date ...
- Linux学习日志第一天——基础命令①
文章目录 前言 命令的作用及基本构成 关于路径 命令 ls (list) 命令 pwd (print working directory) 命令cd (change directory) 命令 mkd ...
- Linux性能优化 第一章 性能追踪建议
1.1常用建议1.1.1记大量的笔记(记录所有的事情)在做性能调优问题的时候很重要的一个操作就是记录下所有的事情,包括每一个输出.执行的结果.可以新建一个文件夹,然后把结果的文件都塞到该文件夹内.包括 ...
- linux 101 hacks 4stat diff ac
stat 命令 stat 命令那个可以用来查看文件或者文件系统的状态和属性.显示一个文件或目录的属性 $ stat /etc/my.cnf File: `/etc/my.cnf' Size: Bloc ...
随机推荐
- [Java] 集合框架原理之一:基本结构与源码分析
一.Collection Collection 接口定义了一些基本的方法: int size(); boolean isEmpty(); boolean add(E e); boolean addAl ...
- 洛谷 p2066 机器分配(资源型)
机器分配 https://www.luogu.org/problem/show?pid=2066 题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定 ...
- 经典Dialog插件Layer
Github上只有一个test,所以最好还是到官网去学习,官网的示例写的很详尽,难得一见的设计思路和灵活性都极好的插件.下面是我自己test过的demo <!DOCTYPE html> & ...
- MapReduce (hive表SequenceFile的结果做输入)、MultipleOutputs和Reduce端迭代iterable的一些说明
很长时间以来一直写hive,嵌套脚本.偶尔写UDF. 最近用Hive的dynamic partition和多路插入做一些事情,很遗憾的结果是非常不稳定,有时能成功,有时失败.(可能是因为hive版本 ...
- [转载]8 种提升 ASP.NET Web API 性能的方法
http://www.oschina.net/translate/8-ways-improve-asp-net-web-api-performance 英文原文:8 ways to improve A ...
- [转载].net程序集自动生成版本号
原文:http://hi.baidu.com/bcbgrand/item/a74a7ba71c3b0ea928ce9dce .net程序版本号的格式是4个十进制数字 比如 2.5.729.2 依次是 ...
- javascript 千分
var str = '123456789'; function division(str){ var arr = str.split(''), len = arr.length, i = 3; whi ...
- jQuery制作鼠标经过显示图片大图,生成图片tips效果
一般tips都是文字,这个可以支持图片,很漂亮: 演示 <script type="text/javascript"> // Load this script on ...
- angular4 get,post请求(带参数,与不带参数)
一:在app.module.ts引入HttpMoudle import { BrowserModule } from '@angular/platform-browser'; import { Htt ...
- 使用 TypeScript 改造构建工具及测试用例
最近的一段时间一直在搞TypeScript,一个巨硬出品.赋予JavaScript语言静态类型和编译的语言. 第一个完全使用TypeScript重构的纯Node.js项目已经上线并稳定运行了. 第二个 ...