命令行语法格式:
提示符 命令 选项(可选) 参数(可选)
各项之间必须用空格或者tab隔开
选项
选项是包括一个或多个字母的代码,前面有一个“-”连字符,用于改变命令执行动作的类型。
可以用 --help 来查找可使用的选项,例如ls --help
man [选项] [命令/函数/文件格式],用于查看手册页面,例如man ls
如果选项是一个完整单词,需要以“--”开头(长选项格式)
参数
参数通常是命令的操作对象,在参数表示的操作路径进行命令。
不添加参数时,默认为当前操作路径
使用多个参数的命令要注意参数的顺序
history命令
列出最近用过的所有命令
想要重复之前某一行的命令,用!+行数,例如:
history
!9
变化:普通管理员变为超级管理员权限
输入重定向
<
输入重定向主要用于改变命令的输入源,让输入不来自于键盘,而来自于一个文件
基本用法:命令<文件名
例如: wc</etc/protocols
输入 wc examples.desktop
输出 240 569 8980 examples.desktop
输入 wc < examples.desktop
输出 240 569 8980
wc[选项][文件]...
若多个文件一起进行统计,则wc最后给出所有指定文件的总统计数
输出:行数 字数 字节数 文件名/文件所在路径名
选项:
-c:只统计字节数
-l:只统计行数
-w:只统计字数
输出重定向
>
输出重定向主要用于改变命令的输出,让标准输出不要显示在屏幕上,而是显示在文件中
例如:ls > file.txt
- cat用于查看文件
- vim是一个文本编译器,可以编辑文本
可用cat或者vim查看file.txt 文件
若想再添加pwd于文件中,直接用 pwd > file.txt会覆盖原来的文本。
使用pwd >> file.txt ,即可将pwd的输出添加到原来file.txt中
管道
管道用于将一个命令的输出作为另一个命令的输入,使用符号"|"来连接命令。前一个命令的输出作为后一个命令的输入。
基本用法:
命令1 | 命令2…… | 命令n
该命令用来在文本文件中查找指定模式的词或短语,并在标准输出上显示包括给定字符串模式的所有行
示例1:
将ls命令的输出结果提交给grep命令进行搜索:ls | grep "ex"
示例2:
在执行输出内容较多的命令时,可以通过管道使用more命令进行分页显示:cat /etc/passwd | more
cat显示文件内容
more命令一次显示一屏文本,满屏后停下来。按回车键下滚一行,按空格键下滚一屏
命令替换
命令替换将一个命令的输出作为另一个命令的参数。shell有两种方式:"$()" 和 "` `"(反引号)
常用的命令格式为:
命令1 `命令2`
命令1 $(命令2)
将 命令2 的输出结果作为 命令1 的参数
命令替换牵涉的概念及命令
绝对路径名:
从根目录(/)开始,由到达相应文件的所有目录名连接而成的,各目录名之间以 / 字符隔开
例如: /home/fmm/dd/my.c
相对路径名:
利用相对当前工作目录的路径指定一个文件。相对路径名不能以"/"开头
例如: 当前目录为/home/fmm,想列出/home/fmm/dd目录的内容,可使用命令: ls ./ldd
./ 或 . 表示当前目录
vim中更改文件名:
- 打开原文件:vim 原文件名
- 在vim中,按下Esc进入命令模式
- 输入:w 新文件名
- 按下Enter键,保存文件并另存为新文件
修改原文件名(保存):
使用:saveas命令 :saveas newfile.txt
创建新文件(另存为):
使用:w命令 :w newfile.txt
脚本fileshell.sh
创建新文件fileshell.sh
在里面写以上三行内容
插入:
user@PC15:~$ cat >fileshell.sh
ls
pwd
date
^C
使用 ls -l查看
ls -l /home
>>>drwxr-xr-x 15 user user 4096 11月 23 16:02 user
在ls -l 的输出中,每一行代表一个文件或目录。第一个字符表示文件类型和权限。如果user是一个目录,那么在第一个字符位置上会显示一个字母“d”,表示目录。如果是文件,这个位置可能现实其他字符,比如“-”表示普通文件。
ls -l
其中一行
-rw-rw-r-- 1 user user 12 11月 23 17:33 fileshell.sh
w代表可写,r代表可读,缺少x可执行
添加可执行权限
chmod +x fileshell.sh
ch代表change改变,mod代表模式
再使用 ls -l查看详细信息,得到一行
-rwxrwxr-x 1 user user 12 11月 23 17:33 fileshell.sh
这里有-x,表示拥有执行权限
shell脚本执行
./fileshell.sh
可以用这种方式执行fileshell脚本,./表示当前目录。但这种方法比较麻烦,每次执行脚本需要进入该脚本所在目录下,不建议用。
方法二:
创建:vi hello.sh
插入:
ls
pwd
date
执行:source hello.sh 或者 bash hello.sh
直接执行(并不用修改脚本权限):source 脚本名 或者 bash 脚本名