您的位置:首页 > 运维架构 > Linux

每天一个linux命令:cd

2017-12-27 22:52 330 查看

每天一个linux命令:cd

更多精彩请查看:www.zicreate.com

1.命令功能

cd 即Change directory,命令用来切换工作目录。

2.命令格式

cd [-L|-P] [dir]

3.命令参数

-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录

-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。

- 当仅实用”-“一个选项时,当前工作目录将被切换到环境变量”OLDPWD”所表示的目录。

4.使用场景

cd 命令非常简单,后面直接跟绝对路径或相对路径即可。

常见操作如下:

cd              #  cd 不加参数时进入用户主目录;
cd /home        #  通过绝对路径进入“/home”目录;
cd ./test       #  通过相对路径进入当前目录下的“test”目录;
cd ~            #“~”指代用户主目录;
cd -            #“-”指进入此目录之前所在的目录;
cd ..           #“..”为上级目录的意思;
cd ../../..     # 返回上三级目录;
cd !$           # !$代表了上一个命令的最后一个参数。


扩展

如上文所示,操作中会用到大量的特殊符号,本文将相关部分特殊符号解释如下(关于特殊符号更详细总结说明后续会整理发布):

~ :代表当前用户的 home 目录。使用时可以当成路径的一部分直接使用,如cd ~/bin;

-减号:

在算术运算中,表示 “减法”。

expr 10 - 2


在shell 命令行中也是系统指令的选项符号。

ls -a


在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表”标准输入”的意思。这是 GNU 指令的共通选项。譬如下例

cat test.tar.gz |tar zxvf -


这里的 - 符号,既代表从标准输入读取资料。

在 cd 指令中则比较特别

cd -


这代表变更工作目录到”上一次”工作目录。

!$
$_
都可以返回上一个命令的最后一个参数(严格的说也不能说是参数,如果只有命令本身,那么返回的就是命令的名字),但是在存在管道命令和重定向命令的情况下存在差异。

示例如下:

$ echo hello world | awk '{print $1}'
hello
$ echo !$
echo '{print $1}'
{print $1}
$ echo hello world | awk '{print $1}'
hello
$ echo $_


存在管道命令的情况下,
!$
输出的是管道命令中最后一个命令的最后一个参数,而
$_
则输出为空

# echo hello world > test.txt
# echo $_
world
# echo hello world > test.txt
# echo !$
echo test.txt
test.txt


存在重定向命令的情况下,
!$
输出的重定向命令后的最后一个参数,而
$_
则输出的是重定向之前的命令的最后一个参数。

那如果要获取上个命令的其它参数该怎么操作呢?

同样以
echo hello world
命令为例:

$ echo hello world
hello world
$ echo "arg0:!:0 arg1:!:1 arg2:!:2"
echo "arg0:echo arg1:hello arg2:world"
arg0:echo arg1:hello arg2:world

$ echo !#
echo echo
echo


总结

!#
上一个命令名

!$
上一个命令的最后一个参数

!:n
上一个命令的第n个参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux