Hike News

Linux下操作目录最基本的命令

复习一下cd

  • cd /xxx 不基于当前工作目录
  • cd xxx 基于当前工作目录
  • cd null 相当于回家目录~

创建新目录mkdir

  • 例如:
    1
    cd mkdir bin essays essays/history essays/literature

或者

1
mkdir ~/bin ~/essays ~/essays/history ~/essays/literature

  • 即,在一个目录中,不能重名(两个目录可以拥有相同的名称)。先父后子。

但是这样好麻烦啊,于是乎-p来啦!!!

  • 例如:
    1
    2
    3
    4
    5
    mkdir ~/essays
    mkdir ~/essays/history
    mkdir ~/essays/history/roman
    mkdir ~/essays/history/roman/unix
    mkdir ~/essays/history/roman/unix/research

可以使用-p

1
mkdir -p ~/essays/history/roman/unix/research

移除目录:rmdir

  • 例如:
    1
    2
    3
    4
    cd /essays
    rmdir history literature
    cd ..
    rmdir bin essays

以上为法1

1
2
cd
rmdir essays/history essays/literature essays bin

以上为法2

1
rmdir ~/essays/history ~/essays/literature ~/essays ~/bin

以上为法3

  • 即,当目录为空(无文件。无子目录)时,才可以移除rmdir。不能移除工作目录和根目录之间的任何目录。

同理,-p又来造福大家啦

1
2
3
4
5
rmdir essays/history/roman/unix/research
rmdir essays/history/roman/unix
rmdir essays/history/roman
rmdir essays/history
rmdir essays

简化为以下。

1
2
cd
rmdir -p essays/history/roman/unix/research

  • 绝对路径:路径的写法一定由根目录/ 写起,例如:/Users/qianziqianshang/work/wwyqianqian 这个目录。
  • 相对路径:路径的写法不是由/ 写起,例如由/Users/qianziqianshang/work/wwyqianqian 要到 /Users/qianziqianshang/work/wwy底下时,可以写成:『cd ../wwy』。
.         此层目录
..        上一层目录
-         前一个工作目录
~         目前使用者所在的家目录  是home啦
~account  account 这个使用者的家目录(account是个帐号名称)

注意:以下root 和 qianziqianshang是两个使用者。

  • [root@www ~]# cd ~qianziqianshang

    代表去到 qianziqianshang的家目录,亦即 /home/qianziqianshang

  • [root@www qianziqianshang]# cd ~

    表示回到自己的家目录root ,不是qianziqianshang的home,亦即是 /root 这个目录

  • [root@www ~]# cd

    没有加上任何路径,也还是代表回到自己家目录/root 的意思

  • [root@www ~]# cd ..

    表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思

  • [root@www /]# cd -

    表示回到刚刚的那个目录,也就是 /root

  • [root@www ~]# cd /var/spool/mail

    这个就是绝对路径的写法!直接指定要去的完整路径名称!

  • [root@www mail]# cd ../mqueue

    这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue 就这样写

cd是Change Directory的缩写,这是用来变换工作目录的命令。注意,目录名称与cd命令之间存在一个空格。一登陆Linux系统后,root会在root的家目录!qianziqianshang会在home!也就是我们看到命令行里的‘~’

重命名mv

  • mv data extra

    data被重命名为extra(extra不存在)

移动mv

  • mv /home/harley/data
    /home/harley/storage

    • 如果工作目录是/home/harely

      直接mv data storage

      此时,data在–/home/harely/storage/data

    data被移动(extra存在)

综上,mv三个功能:重命名,移动,移动整个目录树。

目录栈:pushd popd dirs

pushd 把目录名称压入目录栈

popd 弹出目录名称

dirs 显示栈的内容

dir使用的时候,dir -l -v 。(lv不能连一起)

任何时候,栈顶,存放的都是—当前工作目录的名称(改变工作目录时,栈顶!元素也改变)。

  • 例如:

    压入三个新目录,之后dirs显示栈的内容。
    1
    2
    3
    4
    pushd /lib
    pushd /var
    pushd /etc
    dirs -v

输出为

1
2
3
4
0 /etc
1 /var
2 /lib
3 /usr

显示当前目录

1
pwd

输出为

1
/etc

之后popd弹出一个栈顶

1
2
popd
dirs -v

输出为

1
2
3
0 /var
1 /lib
2 /usr

显示工作目录

1
pwd

输出为

1
/var

  • 而这样子,不会显示空的目录,而是当前工作目录。

    1
    2
    dirs -c
    dirs -v
  • 为何不用cd 而是用目录栈呐??

    1
    2
    3
    4
    5
    6
    cd
    dirs -c
    pushd /lib
    pushd /var
    pushd /etc
    dirs -v

注意新压入三个之前,有个home。所以-v显示为

1
2
3
4
0 /etc
1 /var
2 /lib
3 ~

在etc工作了许久,要切换到lib目录

1
pushd +2

这是告诉shell把#2移动到#0

1
dirs -v

输出为

1
2
3
4
0 /lib
1 ~
2 /etc
3 /var

看得出来,在众多目录中切换比较方便。删除就是popd,压入就是pushd。

  • 在bash里,c-shell里 可以创建别名
    1
    2
    3
    4
    alias d='dirs -v'
    alias p=pushd
    alias d 'dirs -v'
    alais p pushd



d
p /usr/lib
p +4
超级方便啦w