cd命令
功能:
语法
在Unix下,任何以 /(slash)表示根目录 开头的路径写法都被当作 –绝对路径 否则,Unix将假定任何路径名是与当前工作路径相关的—相对路径
如:
1 2 3
| /home/zhangsan/ 是绝对路径的张三目录
./zhangsan/ 是相对路径的张三目录(相当当前工作目录)
|
设置当前目录为 /home/lthero,目录包含 file1 file2 两个文件 和 dire1 目录,dire1下包含file3
创建file1 file2文件
创建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)
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命令—创建目录
语法
在当前目录下,创建新目录
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命令
语法
- 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命令
语法:
popd命令
语法
dirs命令
语法
选项
- -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命令
功能
语法
ls -[aCdFglrRsI] name
- name可以是目录或文件,如果name为空,将显示当前目录下内容
- 默认下,只显示目录下文件名,而且按alpha顺序
选项
权限、创建者、大小按B计算,若用KB计算,使用-lh、最后的修改时间、文件名
- -C 将结果用列表呈现
- -r (reverse) 反序列
- -R (recursive递归) 将列出子目录的全部子目录,即完整的层次树
1 2
| #如,要查看根目录数量 /home/ltheo/:ls -R /| wc -l
|
重要的文件用/(slash)表示目录,如 lthero/
*(star)表示可执行文件,shell脚本或程序, @ 表示链接 | pipe管理符 否则为一般文件
ls --color[=always| =auto | =never] 有三种选项 ls --color=never/no/none都可以表示不用颜色表示
auto是默认的
配置颜色的程序是dircolors
man dircolors查看相关细节
1 2
| #可以查看/bin目录下,全部文件的大小 /home/ltheo/:ls -s /bin
|
- -h (human-readable)将容量大小转成人类能理解的方式
1 2 3
| /home/ltheo/:ls -sh /bin/cat #结果 28K(B) /bin/cat
|
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命令
语法
功能
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命令
语法 :
du-achs name1 name2 name3
1 2 3
| /home/ltheo/:du -h(human-readable) /etc/passwd 单位是1K 8.0K /etc/passwd #如果不写name将指定为当前目录
|
选项
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
|
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命令
功能
语法
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
|