一、 基本命令
0x001命令格式
命令格式:命令 [选项] [参数]
有些命令并不遵守这个格式,中括号表示可省略
0x002 ls
-- list directory content
ls
是可以列出当前文件夹下的文件和文件夹
- 命令格式:ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]
- 常用命令
-
ls -l
:按列列出当前文件夹下的文件,同时显示文件的所有信息 -
ls -a
:列出当前文件夹下的所有文件,包括.和..和隐藏文件 -
ls -al
: 命令混用(前两个命令功能的合并\顺序并不影响)
-
0x003 cd
移动到某个目录
- 命令格式:cd [dir]
- 常用命令:
-
cd ..
:上一级目录 -
cd /
:根目录 -
cd ~
:当前用户目录 -
cd -
:进入上一次目录
-
- 说明:
- 相对地址跳转:
cd dirname
|cd ./dirname
:跳转到当前目录下的dirname
文件夹 - 绝对地址跳转:
cd /dirname
:跳转到/dirname目录下
- 相对地址跳转:
0x004 mkdir
-- make directories
递归创建文件夹
- 命令格式:mkdir [-pv] [-m mode] directory_name ...
- 常用命令:
-
mkdir dirname
:在当前目录下创建dirname文件夹 -
mkdir dirname1/dirname2
:在当前目录下的dirname1
目录下创建dirname2
,如果dirname1
不存在,则先创建dirname1
再创建dirname2
-
0x005 pwd
-- persent working directory
查看当前目录
0x006 rmdir
-- remove empty directory
删除空白目录
- 命令格式:rmdir [-p] directory ...
- 常用命令:
-
rmdir dirname
:删除当前文件夹下的dirname
-
rmdir dirname\dirname
:删除当前文件夹下的dirname
下的dirname
-
0x007 cp
--copy
复制文件
-命令格式:
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
常用命令
cp filename filename2
:复制filename
为filename2
cp -a filename filename2
:复制filename
为filename2
,所有信息都一样,包括时间
0x008 mv
--move
剪切、改名
-
命令格式:
- mv [-f | -i | -n] [-v] source target
- mv [-f | -i | -n] [-v] source ... directory
-
常用命令格式:
-
mv source target
:重命名source
为target
-
mv source tatgetdir/target
:剪切source
到targetdir
-
0x009 rm
-- remove
删除文件
命令格式:rm [-dfiPRrvW] file ...
-
常用命令格式:
-
rm -rf filename
:强制删除filename
,问都不问
-
二、命令是什么?
0x001 实验:
实验环境:
语言:C语言
系统:MAC
windows系统实验结果差不多一致,不通的只是环境变量的设置方法和命令程序所在的文件夹不同而已
xcode新建一个c语言项目
//
// main.c
// CommandLine
//
// Created by 冬追夏赶 on 9/23/16.
// Copyright © 2016 lyx. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
for(int i=1;i<argc;i++){
printf(argv[i]);
printf("\n");
}
return 0;
}
- build并将可执行文件重命名为mls
- 将mls所在的文件夹加入环境变量:.bash_profile
- 命令行输入: mls -a
说明:
c语言的main
函数中存在两个形参,分别是argc
和argv[]
,argc
参数是数组长度,argv
则是传入的参数,在该程序中,argc
为2
,argv[1]
为-a
,从代码可以看出,这里直接跳过了数组中的第一个值,因为第一个值代表该程序所在的位置。
由这个实验可以看出,所谓的命令其实不过是一个一个的程序,我们在启动这些程序的时候需要输入一些参数,比如mls -a
中的 -a
来实现该程序的特定功能,也就是说,其实我们也可以自己实现这些工具来替换系统中的其他命令,比如我可以将我的mls
实现的功能等同ls
,则就可以替换系统中的ls
了。不过没有这种必要,这里只是为了说明命令是什么,如果实现而已。
在命令行中键入:
echo $PATH
可以看出:
我们到该目录下看看
cd /bin
可以看到,刚刚执行的那些命令都在这儿,尝试直接调用执行:
./ls
与之前执行的结果一致