linux感叹号非命令
-
在Linux命令行中,感叹号(!)不是一个命令,而是一个特殊字符,有着特殊的用途。
感叹号有两种常见的用法:历史命令展开和命令行历史管理。
1. 历史命令展开:感叹号可以用来展开之前执行过的命令。在命令行上输入感叹号加上一个字符,Linux会在历史命令中查找最近使用的匹配命令,并自动替换成该命令。例如,输入”!ls”将会展开成之前执行的最近一条以”ls”开头的命令。
2. 命令行历史管理:使用感叹号可以对命令行历史进行管理。以下是一些常用的命令行历史管理技巧:
– !!:执行上一条命令。
– !n:执行历史命令列表中第n个命令,例如”!3″表示执行历史命令列表中的第3个命令。
– !-n:执行倒数第n个命令,例如”!-2″表示执行倒数第2个命令。
– !string:执行最近一条以指定字符串开头的命令,例如”!ls”表示执行最近一条以”ls”开头的命令。
– !?string:执行最近一条包含指定字符串的命令,例如”!?test”表示执行最近一条包含”test”的命令。总之,感叹号在Linux命令行中有着特殊的用途,可以用来快速执行历史命令以及方便地管理命令行历史。
2年前 -
Linux中的感叹号“!”在命令行中有许多不同的含义和用法。下面是一些常见的用法:
1. 逻辑非运算符:在Shell中,感叹号可以用作逻辑非运算符。它用于取反一个条件。例如,如果一个条件为真,使用感叹号可以将其变为假。例如,如果文件file存在,可以使用命令`[ ! -f file ]`来判断文件是否不存在。
2. 命令替换:感叹号可以用于执行上一个命令并将其输出插入到当前命令中。使用感叹号加圆括号`!()`来实现。例如,可以使用`echo $(ls)`来将ls命令的结果插入到echo命令中。
3. 历史命令:感叹号可以用来引用之前执行的命令。感叹号后跟一个数字可以引用特定的历史命令。例如,使用`!10`来执行之前的第10个命令。
4. 模式匹配:感叹号可以用于模式匹配。例如,可以使用`ls !(*.txt)`来列出除了以.txt结尾的文件之外的所有文件。
5. 变量替换:感叹号可以用于变量替换。使用`$!`表示上一个后台运行的命令的进程ID。这可以用来对后台运行的命令进行管理和操作。
总结起来,Linux中的感叹号可以被用作逻辑非运算符、命令替换、历史命令引用、模式匹配和变量替换。熟练掌握这些用法可以让你更有效地使用Linux命令行。
2年前 -
在Linux中,感叹号(!)在命令行中有两种不同的用法:作为历史命令扩展和作为逻辑求反运算符。在本文中,将详细讲解这两种用法以及如何正确使用感叹号。
1. 感叹号作为历史命令扩展:
在Linux的命令行中,可以使用感叹号来引用之前使用过的命令。下面是一些常见的使用方式:1.1 重复最后一个命令:使用感叹号加上一个感叹号(!!)可以快速重复上一条命令。例如:
“`
$ ls
$ !!
“`
上述命令会再次执行`ls`命令。1.2 重复包含特定关键字的命令:使用感叹号加上关键字可以重复之前包含该关键字的命令。例如:
“`
$ history | grep ls
$ !grep
“`
上述命令会重复执行包含`grep`关键字的命令。1.3 重复之前执行的第N个命令:使用感叹号加上数字N可以重复之前执行的第N个命令。例如:
“`
$ !4
“`
上述命令会重复执行历史记录中的第4个命令。1.4 重复匹配最近的命令:使用感叹号加上一部分命令可以重复最近匹配的命令。例如:
“`
$ ls
$ ll
$ lal
$ !l
“`
上述命令会重复最后一次以`l`开头的命令,即`ll`。注意:在使用感叹号作为历史命令扩展时,可以通过使用单引号或者反斜杠来避免对特殊字符的解释。
2. 感叹号作为逻辑求反运算符:
在Linux的命令行中,感叹号可以用作逻辑求反运算符,用于取反逻辑表达式的结果。这在shell脚本中经常用到。例如,想要判断一个目录是否存在,可以使用以下命令:
“`
if [ ! -d “$DIRECTORY” ]; then
echo “目录不存在”
fi
“`
上述命令中的感叹号用于求反,即如果目录不存在,则返回结果为真。在逻辑求反运算符中,还可以使用两个感叹号(!!)来表示逻辑非(not)的含义。
注意:感叹号作为逻辑求反运算符时,一般需要与方括号([])一起使用,方括号用于构建逻辑表达式。
综上所述,感叹号在Linux命令行中既可以作为历史命令扩展的重复命令工具,又可以作为逻辑求反运算符来处理逻辑表达式。通过正确使用感叹号,可以提高命令行的效率和灵活性。
2年前