cd命令

功能:

  • (change directory)改变工作目录

语法

  • cd -[LP] PATH

在Unix下,任何以 /(slash)表示根目录 开头的路径写法都被当作   –绝对路径 否则,Unix将假定任何路径名是与当前工作路径相关的—相对路径

如:

1
2
3
/home/zhangsan/  是绝对路径的张三目录

./zhangsan/  是相对路径的张三目录(相当当前工作目录)

设置当前目录为 /home/lthero,目录包含 file1 file2 两个文件 和 dire1 目录,dire1下包含file3

创建file1 file2文件

1
touch file1 file2

创建dire1目录

1
mkdir dire1

在dire1下面创建file3

cd dire1
touch file3

查看当前目录结构

1
2
3
4
5
/home
├── dire1
│   └── file3
├── file1
├── file2

修改file1,可以用以下命令

1
2
3
4
5
6
#可用绝对路径
/home/lthero: vim /home/lthero/file1 
#相对路径
/home/lthero: vim file1
#或
/home/lthero: vim ./file1

常用命令

  • 如果只输入cd 将默认切换到用户home
  • cd -(dash)  将到上一次访问的目录 非常好用!
  • cd / 将到根(root)目录下面
  • cd .. 到父目录
  • cd ../../bin 到父的父的子目录bin下
  • cd ~ 快速切换到home下

如果,在根目录下用cd .. 将不会有任何事发生,因为根目录的父级还是根目录

… dot-dot    .dot    与    ~

…(dot-dot)

  • 代表父目录
1
2
3
4
5
6
7
#当前目录为/home/lthero/dire1
#想调用file1
/home/lthero/dire1: vim ../file1
或使用绝对路径
/home/lthero/dire1: vim /home/lthero/file1
#想切换到/home下
cd ../../

. (dot)

  • 代表当前目录
1
2
3
4
5
#当前目录为/home/ltheo/
#想调用file1
/home/ltheo/: vim ./file1 (相对路径表示)
/home/ltheo/: vim file1 (相对路径表示)
/home/ltheo/: vim /home/lthero/file1 (绝对路径表示)

~(tilde)

  • 表示home目录!!对不同用户不一样
1
2
3
cd ~
对root用户,将进入/root
对普通用户zhangsan,进入/home/zhangsan

pwd命令

  • pwd (print working directory) 用来输出当前工作目录
1
2
3
/home/ltheo/:pwd
#输出
/home/ltheo/:/home/lthero

mkdir命令—创建目录

语法

  • mkdir -[p] directory

在当前目录下,创建新目录

1
2
3
4
5
6
#使用绝对路径
/home/ltheo/:mkdir /home/lthero/newdire
#使用相对路径
/home/ltheo/:mkdir newdire
#或者
/home/ltheo/:mkdir ./newdire

一次创建多个目录

1
2
3
4
5
6
7
8
9
#切换到home/lthero下面
/: cd /home/lthero
#创建目录
#目录是按顺序创建的,所以dire3可以创建在dire2下面, newdire2前面可不用加./
/home/ltheo/:mkdir newdire1 ./newdire2 ./newdire2/newdire3
#在当前目录的父目录创建newdire4目录
/home/ltheo/:mkdir ../newdire4
#随后查看目录结果
/home/ltheo/:tree(下面有提到)

注意

1、不能在同一目录下创建多个同名文件或目录

2、如果父目录不存在不能创建子目录

./homework 不存在 不能创建./homework/history

1
2
#先手动创建/homework再创建/history
/home/ltheo/:mkdir ./homework ./homework/history

-p选项 可以创建多级目录

如 ./homework不存在,想创建./homework/history,则可以:

1
2
#将先创建homework 再创建其子目录history
/home/ltheo/:mkdir -p ./homework/history

tree命令

  • 显示目录树 可以显示某个目录的结构

tree                         默认显示当前工作目录结构

tree directory_path 显示指定目录结构

1
2
3
4
5
6
7
8
/home/ltheo/:tree /home
/home
└── Share_files
└── Learning_path
├── Chap_10_Command_Syntax.txt
├── Chap_11_Shell.txt
├── Chap_12_Using_Shell.txt
├── Chap_13_Shell_variable.txt

rmdir命令

  • 删除一个空目录,为了防止误删除包含内容的文件
  • 但如果目录不为空,还是多级目录,可以用-p删除
1
/home/ltheo/:rmdir -p essays/history/roman/unix/research

将把上面5目录逐一删除 但research要为空目录

如果research不为空 用rm -r删除

具体rm命令:[icon-url href=“https://www.lthero.cn/?p=1263” target="_blank"]hit me[/icon-url]

mv命令

  • (move)移动文件或目录

语法

  • mv directory_path  target_path

移动文件

1
2
3
4
5
6
7
8
9
10
#将当前目录下file移动到父目录中
/home/ltheo/:mv file ../

#移到父目录并改名
/home/ltheo/:mv file ../newname

/home/ltheo/:mv file data
#若data不存在,则直接改file名
#如果data是个目录,则file将移动到data/下 ./data/file
#如果data是个文件,则将data删除,file改名为data

移动目录

1
2
3
4
5
6
7
#将整个dire全部移动到父目录并改名为data
/home/ltheo/:mv dire ../data
#
/home/ltheo/:mv dire newdire
#若newdire是个文件 则不能移动
#若newdire不存在,则修改目录dire名称
#若newdire存在且是目录,则dire将移到newdire下 变成./newdire/dire

目录栈

当改变当前工作目录时,栈顶会自动改变,栈顶改变时,工作目录也对应改变

pushd命令

  • 将一个目录推到 ”目录栈“

语法:

  • pushd 目录 | +n

popd命令

  • 将一个目录从栈中取出

语法

  • popd +n

dirs命令

  • 显示这个”目录栈“

语法

  • dirs -c -l -v 不能用-lvc连起来

选项

  • -v 每行一个,用数字标识
  • -l home目录显示完整路径
1
2
3
4
5
6
7
/home/ltheo/:dirs -v
0 /home/Share_files/Learning_path
#如果改变工作目录
/home/ltheo/:cd /usr;
#查看栈
/home/ltheo/:dirs -v
0 /usr

现在 添加一些目录 栈顶一直标号0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/home/ltheo/:pushd /lib;dirs -v
# 0 /lib
# 1 /usr
/home/ltheo/:pushd /var;dirs -v
# 0 /var
# 1 /lib
# 2 /usr
/home/ltheo/:pushd /etc;dirs -v
# 0 /etc
# 1 /var
# 2 /lib
# 3 /usr
添加到/etc后,现在的工作目录pwd
# /etc 也是 etc

现在 弹出目录

1
2
3
4
5
6
7
8
9
10
11
12
13
#弹出一个栈顶
/home/ltheo/:popd
/home/ltheo/:dirs -v
0 /var
1 /lib
2 /usr
#查询当前目录
/home/ltheo/:pwd
/home/lthero
/home/ltheo/:pushd ~
#栈顶则为
pwd
~

现在 清空栈

1
2
3
4
5
6
7
8
9
10
11
12
/home/ltheo/:dirs -c
/home/ltheo/:dirs -v
0 ~
#当前的工作目录 栈顶不会被删除

#再次添加一些目录
/home/ltheo/:pushd /lib; pushd /var; pushd /etc
/home/ltheo/:dirs -v
0 /etc
1 /var
2 /lib
3 ~

现在改变栈顶

1
2
3
4
5
6
7
8
/home/ltheo/:pushd +2 +num #是目标在栈中序号
#栈顶变成 /lib
/home/ltheo/:dirs -v
0 /lib
1 /etc
2 ~
3 /var
#并将原来的栈顶放入栈中

说了这么多,pushd,popd可以需要多个目录下相互跳转时,方便使用

  • 如果要对 命令 用快捷键表示
1
2
/home/ltheo/:alias d='dirs -v'
/home/ltheo/:alias p=pushd

ls命令

功能

  • 显示目录下内容(list show)

语法

  • ls -[aCdFglrRsI] name
  • name可以是目录或文件,如果name为空,将显示当前目录下内容
  • 默认下,只显示目录下文件名,而且按alpha顺序

选项

  • -l 详细信息

权限、创建者、大小按B计算,若用KB计算,使用-lh、最后的修改时间、文件名

  • -C 将结果用列表呈现
  • -r (reverse) 反序列
  • -R (recursive递归) 将列出子目录的全部子目录,即完整的层次树
1
2
#如,要查看根目录数量
/home/ltheo/:ls -R /| wc -l
  • -F (Flag)显示文件的类型

重要的文件用/(slash)表示目录,如 lthero/

*(star)表示可执行文件,shell脚本或程序, @ 表示链接 | pipe管理符 否则为一般文件

  • 带有颜色的ls显示,默认使用ls是自带颜色的

ls --color[=always| =auto | =never] 有三种选项 ls --color=never/no/none都可以表示不用颜色表示

auto是默认的

配置颜色的程序是dircolors

man dircolors查看相关细节

  • -s 查看文件或目录容量大小
1
2
#可以查看/bin目录下,全部文件的大小
/home/ltheo/:ls -s /bin
  • -h (human-readable)将容量大小转成人类能理解的方式
1
2
3
/home/ltheo/:ls -sh /bin/cat
#结果
28K(B) /bin/cat
  • -a 查看隐藏文件

  • 系统默认将一些常用的命令写成了省略格式,如ll指ls -laF   , ls默认是有颜色的等等,可在 /root/.bashrc中查看

1
/home/ltheo/:ll 
1
2
3
4
5
6
#alias ll='ls -laF' 
#使用ll与使用ls -laF效果一样,如下:
-rwxr-xr-x 1 www www 1813 Aug 17 08:14 register.html*
-rwxr-xr-x 1 www www 1458 Aug 17 08:14 reply.html*
-rwxr-xr-x 1 www www 3872 Aug 17 08:14 show.html*
drwxr-xr-x 2 www www 4096 Aug 17 08:14 style/
1
2
#alias ls='ls --color=auto' 
#默认下,使用ls是自带颜色的

file命令

语法

  • file name

功能

  • 检查name是否为文件,并显示文件或目录类型
1
2
3
4
5
6
7
8
9
10
11
/home/ltheo/: file /etc/passwd /bin /bin/ls
#结果
/etc/passwd : ASCII text
/bin : directory
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=2f15ad836be3339dec0e2e6a3c637e08e48aacbd, for GNU/Linux 3.2.0, stripped

ELF:可执行、可链接的,一个标准可执行文件
64-bit:词大小
LSB:
x86-64:架构
GNu/linux 操作系统和内核版本

du命令

  • (disk usage)专门用来查看文件大小

语法 :

  • du-achs name1 name2 name3
1
2
3
/home/ltheo/:du -h(human-readable) /etc/passwd 单位是1K
8.0K /etc/passwd
#如果不写name将指定为当前目录

选项

  • -s sum计算每个查询项目的总和
1
2
3
4
5
6
/home/ltheo/:du -hs /usr/bin /bin /etc 2> /dev/null
#因为部分目录或文件不可被读取,会报错。将错误信息丢弃
#如:
132M /usr/bin
0 /bin
5.4M /etc

  • -c 计算所有查询项目总和
1
2
3
4
5
/home/ltheo/:du -chs /usr/bin /bin /etc 2>/dev/null
132M /usr/bin
0 /bin
5.4M /etc
137M total #在此计算了总和

df命令

功能

  • 查看当前硬盘分区容量

语法

  • disk free-space
1
2
3
4
5
6
7
8
9
/home/ltheo/:df -h
Filesystem Size Used Avail Use% Mounted on
udev 915M 0 915M 0% /dev
tmpfs 189M 724K 188M 1% /run
/dev/vda1 59G 8.0G 49G 15% /
tmpfs 943M 0 943M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 943M 0 943M 0% /sys/fs/cgroup
tmpfs 189M 0 189M 0% /run/user/0

dumpe2fs命令

  • 硬盘空间被文件使用的量不是文件数据量

block 块

1
2
3
4
5
#一片空间最大用量为一块,一块往往1Kbytes 或 2KB...
#如果一个文件占用的量大于一块,需要第二块,如1025Kbytes,此时就要第二块

#但有序的文件系统还有一个叫 磁盘分配量disk allocation 如,磁盘分配单位为8KB,一个磁盘分配单位8块
#此时,如果一个文件8500B,需要8500/1024=8.3KB 至少要9块,占据2个磁盘分配 即16块空间

举例

1
2
3
4
5
6
7
8
9
10
#现在创建一个小文件 
/home/ltheo/:cat > temp
#输入X 随便写的
/home/ltheo/:ls -l temp
-rw-r--r-- 1 root root 1 Jul 27 18:23 temp
/home/ltheo/:du -h temp
4.0K temp
#可以看到,即使temp文件只用了1B,但也占用了4K的存储空间,即一个块是4K
而显示一个块的大小命令是
dumpe2fs