黄工无刷电机学习
直播中

李明聪

7年用户 1110经验值
私信 关注
[问答]

终端显示Command not found的原因是什么?

Shell命令解释器的原理是什么?
终端显示Command not found的原因是什么?

回帖(1)

李明烨

2021-10-18 10:37:11
  1 Shell命令解释器原理

  在正式学习Linux命令之前,我们首先要知道在将Linux命令输入终端之后,系统是如何实现命令所希望的效果的。这就需要引入Shell命令解释器的概念。
  1.1 Linux命令的执行流程

  

  • 用户在终端输入命令字符串
  • 命令字符串被传送给Shell命令解释器
  • Shell命令解释器在环境变量PATH下寻找字符串对应的命令应用程序
  • Shell命令解释器将参数赋给命令应用程序并执行
    注意:
    a.Shell命令解释器与Linux命令本质上都是应用程序,Shell命令解释器的作用实际就是在PATH所包含的文件夹中查找文件名与你输入的字符串相同的文件并执行该文件
    b.环境变量PATH的意义:环境变量是一串目录(即日常所说的文件夹)的集合,Shell命令解释器在环境变量PATH所包含的目录中寻找与命令相对应的应用程序;
    c.环境变量相关命令:
    查询当前环境变量

  echo $PATH   输入指令后的效果
  

  

终端会显示当前PATH所包含的目录,不同的目录用:隔开。
添加新的环境变量
  export PATH=$PATH:/my/dir   其中,$PATH表示原有的环境变量,/my/dir表示你想要在环境变量中添加的目录,可以替换,两者间要用:连接。
  1.2 终端显示Command not found的原因

  

  • 环境变量PATH所包含的目录中无此程序;
  • 该命令不是可执行的程序。

  1.3 添加新的Linux命令的方法

  以添加名为pwdabc的命令为例
  

  • 在PATH中添加pwdabc程序所在的目录;
  • 在以上目录中创建名为pwdabc的命令应用程序;
  • 为新指令添加可执行权限。
    对应的指令如下:

  export PATH=$PATH:/home/book touch pwdabc chmod +x pwdabc   2 Linux指令学习

  2.1 Linux命令提示符

  以百问网提供的Ubuntu镜像为例:
  book@www.100ask.org:~$   由此可见命令提示符可分为四部分:
  

  • 用户名:book;
  • 主机名www.100ask.org
  • 当前所在目录:~,表示家目录;
  • 用户提示符:$ or #,前者表示普通用户,后者表示root用户。

  2.2 Linux命令格式

  命令 【选项】 【参数】
以ls命令为例:
  ls ls -l ls -l /home   由此可看出
(1) 命令部分必须存在,选项和参数可以不存在,其存在与否取决于你希望实现的功能;
(2) 选项前必须加-;
(3) 命令、选项、参数之间用空格隔开,多个空格效果等同于一个空格;
  2.3 pwd命令

  [tr]命令pwd[/tr]
英语来源print working directory
作用打印当前所在目录
常用形式pwd
2.4 cd命令

  [tr]命令cd[/tr]
英语来源change directory
作用切换至指定目录
常用形式cd /目标目录/
使用cd的注意事项:
(1) 切换路径前必须保证目标路径存在,可以使用ls来查看某一路径下的内容;
(2) 要善于使用Tab自动补全内容。
  2.4.1 ~、.和…的含义

  [tr]符号含义[/tr]
~/home/book
.当前目录
(此处应为2个点)上一级目录
例如,以下命令的含义即是切换至目录/home/book:
  cd ~   2.4.2 切换至上一级目录/上一次目录

  cd后加…(此处应为2个点) 可切换至本级目录上一级,例如:
  pwd /home/book cd ../.. pwd /   cd后加-可切换至上一次使用cd挂载的目录,例如:
  pwd /home cd ~ pwd /home/book cd - pwd /home   2.4.3 绝对路径与相对路径

  绝对路径:从根目录一级一级找下去,写完整路径名,例如:
  cd /home/book           //使用绝对路径挂载家目录   相对路径:参照当前所在路径进行查找,常常以.和…开头,例如:
  ./pwd                   //执行当前路径下名为pwd的文件 cd ../videos            //挂载到上一目录下名为videos的目录中去   2.5 ls命令

  [tr]命令ls[/tr]
英语来源list
作用列出目录下的文件/目录
常用形式ls =》列出当前目录下的文件/目录

ls /目标目录 =》列出目标目录下的文件/目录

ls -l =》显示当前目录下文件更详细的信息

ls -a =》显示当前目录下的隐藏文件

ls -h =》将当前目录下文件大小以K(b)、M(b)、G(b)的单位显示
2.6 目录操作:mkdir命令和rmdir命令

  2.6.1 mkdir命令

  [tr]命令mkdir[/tr]
英语来源make directory
作用创建新目录
常用形式mkdir 目录名 =》在当前目录下创建一个新目录

mkdir -p 父目录/子目录 =》连续创建多级目录(若父目录 不存在需加-p选项)
2.6.2 rmdir命令

  [tr]命令rmdir[/tr]
英语来源remove directory
作用删除目录
常用形式rmdir 目录名
注:rmdir不能删除非空目录!
  2.7 文件操作:touch、mv、cp和rm命令

  2.7.1 touch命令

  [tr]命令touch[/tr]
作用创建新文件
常用形式touch 文件名 =》创建一个新文件
注意:
(1) 同一目录下不可创建同名文件;
(2) Linux文件名区分大小写,如file和File不是同一文件。
  2.7.2 mv命令

  [tr]命令mv[/tr]
英语来源move
作用修改文件/目录名、改变文件路径
常用形式mv 旧文件名 新文件名 =》修改文件名

mv 旧目录名 新目录名 =》修改目录名

mv 文件名 目录名 =》修改文件路径
举例:
  mv file1 filea           //将当前目录下的文件file1改名为filea mv dir1 dira             //将当前目录下的目录dir1改名为dira mv file1 dira            //将当前目录下的文件file1移动到目录dira mv file1 ~               //将当前目录下的文件file1移动到家目录 mv ~/file1 ..            //将家目录下的文件file1移动到上一目录   2.7.3 cp命令

  [tr]命令cp[/tr]
英语来源copy
作用复制文件/目录
常用形式cp 源文件名 目标文件名 =》复制出一个和源文件相同的目标文件

cp 源文件名 目标目录名 =》将源文件复制到目标目录下

cp -r 源目录名 目标目录名 =》将源目录下所有内容复制为目标目录

cp -i 源文件名 同名目标文件 =》在替换目标文件前询问是否替换
举例:
  cp file1 file2         //将当前目录下的文件file1拷贝为filea cp file1 dira          //将当前目录下的文件file1拷贝到目录dira下 cp dira dirb           //将目录dira下全部内容拷贝为dirb mv -i file2 dira       //当dira下有同名文件时会询问是否替换   2.7.4 rm命令

  [tr]命令rm[/tr]
英语来源rmove
作用删除文件/目录
常用形式rm 文件名 =》删除该文件

rm -r 目录名 =》删除该目录及其下全部内容

rm -i 文件名 =》删除前确认是否真的要删除

rm -ir 目录名 =》删除该目录及其下全部内容,并在删除前确认是否真的要删除
注意:使用rm命令前一定先确定该文件是否可以删除!防止演变成面向牢饭编程(不是
  2.8 文件查看和编辑:cat和gedit命令

  2.8.1 cat命令

  [tr]命令cat[/tr]
英语来源concatenate
作用将文件内容显示在终端里
常用形式cat 文件名 =》显示文件内容

cat 文件名 文件名 =》将两文件内容依次显示

cat -n 文件名 =》显示文件内容及行号
2.8.2 gedit命令

  gedit 文件名 =》用gedit图形编辑器打开文件。
  2.9 清除屏幕:clear和reset命令

  clear命令:清除终端信息,不删除历史信息,向上滚动鼠标可找回历史信息。
reset命令:清除终端信息,并删除历史信息。
  2.10 帮助信息:man、info和help命令

  2.10.1 man命令

  [tr]命令man[/tr]
英语来源manual
作用查看man手册
常用形式man 命令名 =》查询命令的功能

man 数字1-9 命令名 =》在指定册数查询命令的功能
注意:
(1) man手册各册内容
  [tr]序号内容[/tr]
1可执行程序或shell命令
2系统调用
3库调用
4特殊文件
5文件格式和约定
6游戏
7杂项(包括宏和惯例)
8系统管理命令(通常仅适用于root用户)
9内核例程(非标准)
其中前三项比较重要。
(2) man手册功能介绍页的格式

  

  

  2.10.2 info命令和help命令

  info 命令名 =》查询命令功能,帮助内容较杂乱;
help 命令名 =》查询命令功能。
以上两个命令用的较少,主要使用man命令。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分