Linux 出现command not found 错误解决

Linux 出现command not found 错误解决,第1张

在很多人学习Linux命令行,会经常遇到command not found 错误,出现上述错误主要有以下几种情况: 命令书写错误,如有些人将Windows命令与Linux命令搞错,如查看ip相关信息,Linux命令行应该为ifconfig 环境变量没有配置好,这里一般有两种解决方法,第一,可以切换到root用户执行命令,第二种,就是配置用户的环境变量,其指令如下: export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ----------------------------分割线---------------------------- Linux命令找不到?(找不到命令) 这个问题其实很简单,如果你在终端输入一个命令,而系统提示你说命令没有找到(Command not found)的话,要么是因为你没有装相应的软件包,要么就是因为路径设置的问题。如果是因为软件包的问题,那没有别的好说的,安装相应的软件包就好了。而另外一种情况,则需要对用户的路径进行设置。这里针对普通用户和超级用户分开介绍,以 RedHat 些列为例。 一、普通用乎如果一些程序没有安装在系统默认的路径(ie /bin/, /usr/bin, /usr/local/bin/ )里面,这个时候普通用户想要调用这些命令,必须设定路径。方法很简单:以普通用户登录,然后在终端输入: vi ~/.bash_profile 会出现如下的内容:# .bash_profile export PATH此时,只要在export PATH前面加入自己的路径即可,例如我的修改后如下:[ www.linuxidc.com @localhost bin]$ cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:/usr/local/programs/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux-gnu/bin/export PATH 二、超级用户这里主要是一些用在系统管理上的命令,例如ifconfig, route等等, 他们位于/sbin, 或/usr/sbin/下。其实这些命令本身就没有任何问题,软件包早已安装完毕,路径设置也没有丝毫问题。而出现Command not found的原因在于:在终端使用su变成超级用户的时候没有将root的路径(环境)一起切换过来,从而导致身份虽然已经是root,但是工作的环境和路径依旧是普通用户的。这种问题的解决方法有两个,其一是按照(一)里面提到的,对普通用户的工作路径进行修改,但是这样比较麻烦。其二则简单的多,只要在使用su的时候在其后家上一个空格和”-“ ,即将su改为 su - 。这样就可以在成为root的同时将root的工作路径也一起切换过来了。如果你已经使用su变成了root,那也没有关系,只要在输入一下su - 就好了。 原文地址: http://www.linuxidc.com/Linux/2012-12/75632.htm

linux

command

shell1.

pwd:

查看当前所在目录。2.

cd

:用于打开一个目录。

cd

/:打开根目录。

cd

/bin:打开根目录下的bin

目录。

cd

..:返回上一级目录。

cd

../..:

返回上两级目录。

cd

usr/local/bin:

打开usr

目录下local

目录下的

bin

目录。

cd

~:

打开用户的住目录。3.

ls

:查看目录命令。

ls

-a:

显示所有文件及目录,包括隐藏文件。

ls

-l:

显示文件的详细列表,显示文件名、文件形态、权限、文件大小等信息。

ls

-r:

将文件以字母的倒序排列显示。

ls

-t:

将文件依建立的时间先后排列显示。

ls

-A:

同a

但不显示

.

目录及

..

目录。

ls

-F:

在列出的文件名称后面添加一符号。表明是文件还是目录。

ls

-R:

依次列出目录中的文件。4.

touch

:创建一个空文件。5.

mkdir

rmdir:创建和删除目录。

参数p

可以制定建立多级目录。也可以用于删除多级目录在目录是空的前提下。6.

cp

:文件复制命令。

cp

[参数]

源文件或目录

目标文件或目录

-a:

通常在拷贝目录时使用。它保留链接、文件属性、并拷贝目录下的所有内容。其作用等同于

dpR

参数组合。

-d:

拷贝时保留链接。这里所说的链接相当与windows

中的快捷方式。

-f:

覆盖以存在的目标文件而不给出提示。

-i:

f

相反,给出提示。

-p:

除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

-r:

若给出的源文件是一目录文件,此时将复制该目录下的是所有子目录和文件。

-l:

不复制文件,只是生成链接。7.

mv

:文件移动和更名命令mv。

-b:

若覆盖文件,则覆盖前先备份。

-f:

如果目标文件或目录与现有的文件或目录同名,则直接覆盖已有的文件或目录。

-i:

覆盖钱先询问用户。

-S:与

-b

参数一起使用,可以指定备份文件所要附加的字尾。

-u:

在移动或文件更名时,若目标文件已存在,且其文件日期比源文件文件新,则不覆盖目标文件。

-v:

执行时显示详细信息。

-V:

-b

一起使用,制定备份的方法。8.

rm

:删除文件爱你与目录命令。

-d:

把删除的目录的硬链接数据删除,删除该目录。

-f:

强制删除文件或目录。

-i:

删除文件或目录之前询问用户。

-r:

递归处理,将制定目录下的所有文件及子目录全部删除。

-v:

显示命令执行过程。9.

ln

:创建链接命令。

-b:

覆盖目标文件之前的备份。

-d:

建立目标的硬链接。

-f:

强行建立文件或目标的链接。

-i:

覆盖已有文件之前先询问用户。

-n:

把符号链接的目的目标视为一般的文件。

-s:

对源文件建立符号链接,而非硬链接。

-S:

-b

参数备份目标文件。10.

wc

:查看文件信息命令。

-l:

显示文件的文本行数。

-w:

显示文件的字数。

-c:

显示文件中的字符数。11.

cat

:文件查看命令。

-n:

由1

开始对所有输出行进行编号。

-b:

-n

相似,但是对空白行不编号。

-s:

当遇到有连续两行以上的空白行,就轮换为一行。12.

head

tail:查看文件视图命令。

head

-n5

001.c:

查看文件的前5

行。

head

400b

001.c:

查看文件的前

400

字节。

head

4k

001.c:

查看文件的钱4KB

文件内容。

head

3m

001.c:

查看文件前3MB

文件内容。

tail

与之相反,从文件尾开始计算。13.

chmod

:文件权限设置命令。

文件的三级权限:

u:

所有者。

g:

群组。

o:

除了所有者和同组用户之外的用户。

权限的权限字符表示:

r:

表好似可读取。

w:

表示可写入。

x:

表示看执行。

常用的命令参数:

-c:

若文件权限已经更改,显示其更改动作。

-f:

若文件权限无法被更改,则不显示错误信息。

-v:

显示文件变更的详细资料。

-R:

对目录下的所有文件与子目录进行相同的权限设置。14.

find

:查找文件命令

find。

find

目录

文件名15.

man

:系统帮助命令。

man

[命令]

16.

info

:系统中另一个帮助文档。

man

是linux

系统的标准帮助手册,info

是自由软件的帮助手册。

内容要比

man

丰富。17.

环境变量。

查看所有:

export

查看某个:

export

$[环境变量名称]

设置变量:

[变量名]=[值]18.

在系统配置文件中定义环境变量。

环境变量的系统配置文件是

/etc/profile。19.

shell

的运算符。

shell

中的运算符可以实现变量的赋值、算数运算、测试、比较等功能。

在ubuntu

中可以用echo

$[expression]输出一个表达式的值。20.

shell

的输入和输出。

echo

$str

将结果输出到终端。

echo

$str

>file

将结果保存到文件中,如果没有文件会新建一个文件。如果已经有文件则会覆盖以前的文件。

>>

表示追见到现有的文件后面。

echo

输出的内容,可以有下面的格式控制字符。

/c:

末尾加上,表示这一行输出完毕后不换行。

/t:

输出一个跳格,相当与按下

TAB

按键。

/n:

输出一个换行。

需要注意的是,如果要输出特殊字符,必须加

-e选项,否则输出的结果中会直接输出字符。加

-n

选项可以禁止echo

输出后的换行。21.

read

命令读取信息。

如果只读入一个变量,会把键盘上输入的所有信息赋值给这个变量。按

Enter

键,结束输入。

如果输入多个变量,用空格键将输入的变量隔开。如果输入变量的个数多于需要读取的变量的个数,将会把剩余的变量赋值给最后一个变量。

在读取语句后面添加

<filename,

表示从文件中读取数据,并且赋值给变量。22.

文件重定向。

command

>

filename

把标准输出重定向到一个文件中。

command

>>

filename

把标准输出以追加的方式重定向到一个文件中。

command

1

>

filename

把标准输出重定向到一个文件中。

command

>

filename

2

>

&1

把标准输出和标准错误一起重定向到一个文件中。

command

2

>

filename

把标准输出的错误重定向到一个文件中。

command

2

>>

filename

把标准输出以追加的方式重定向到一个文件中。

command

>>

filename

2

>

&1

把标准输出和标准错误一起追加到一个文件中。

command

<

filename

>

filename2

把command

命令以filename

文件作为标准输入,以filename2

文件作为标准输出。

command

<

filename

command

命令以filename

文件作为标准输入。23.

引号的使用方法。

双引号

表示引用一个字符串。字符串里不能直接使用$、引号、双引号、反斜线、反引号

这些特殊字符。

反引号

用于执行引号中的系统命令,然后及那个命令的结果返回。这个返回的结果可以赋值给一个变量。

反斜线

用于对特殊字符进行转义。24.

测试语句

文件测试语句:

文件状态的测试指的是对文件的权限、有无、属性、类型等内容进行判断。与其他语言不同的是,test

命令的测试结果,返回0

表示测试成功。返回1

时表示测试失败。

数值测试:

数值测试是比较两个数值的大小或相等关系,相当与C

语言中的比较运算符。shell

程序中的数值测试有下面两种形式。

test

第一个 *** 作数

数值比较符

第二个 *** 作数

用中括号代替

test

命令。[

第一个 *** 作书

数值比较符

第二个 *** 作数

数值比较符号:

-eq:

两个数是否相等。

-le:

第一个数是否不大于第二个数。

-gt:

第一个数是否大于第二个数。

-ne:

两个数是否不相等。

-ge:

第一个数是否不小于第二个数。

-lt:

第一个数是否小于第二个数。

command或shell模块,那么脚本中调用的是subprocess.Popen(args,kwargs)函数,command和shell的区别就在于command模块使用shell=True,而shell模块使用shell=False,就是一个调用了shell,一个没有。

官方文档中是不建议使用shell=True的,因为这可能导致shell injection安全问题,但是有些情况下用shell模块就很方便,比如我要批量删除一些文件,

ansible -i inventory all -m command -a "rm -f /etc/yum.repos.d/CentOS.repo" -U root -s -f 50 -kK

你如果执行以上命令的话,是不会删除掉那些文件的 ?

因为你的命令行中包含了通配符号,通配符必须要有在shell环境中才能被识别出,不然,它只能删除CentOS.repo这一个文件。 《linux就该这么学》

所以你需要执行以下命令才能成功

ansible -i inventory all -m shell -a "rm -f /etc/yum.repos.d/CentOS.repo" -U root -s -f 50 -kK

而这两个命令所生成的可执行脚本的区别就一行

<MODULE_ARGS = 'rm -f /etc/yum.repos.d/CentOS.repo'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7168466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存