목차
1. 명령 번호를 사용하여 기록에서 명령 실행 " > 1. 명령 번호를 사용하여 기록에서 명령 실행
2. Linux에서 이전에 실행한 명령 실행 " >2. Linux에서 이전에 실행한 명령 실행
3에서 명령을 다시 실행하세요. 3. 이전 명령의 매개변수를 새 명령에 전달하세요" >3에서 명령을 다시 실행하세요. 3. 이전 명령의 매개변수를 새 명령에 전달하세요
4. 명령에서 두 개 이상의 매개변수를 처리하는 방법" >4. 명령에서 두 개 이상의 매개변수를 처리하는 방법
5. 특정 키워드를 기반으로 최근 명령 실행" >5. 특정 키워드를 기반으로 최근 명령 실행
6、在Linux中重复上次执行的命令" >6、在Linux中重复上次执行的命令
7、使用’!’操作符删除除一个文件之外的所有文件" >7、使用’!’操作符删除除一个文件之外的所有文件
운영 및 유지보수 엔진스 Linux 명령에서 '!' 연산자의 8가지 신비한 용도

Linux 명령에서 '!' 연산자의 8가지 신비한 용도

Jun 27, 2023 pm 12:51 PM
linux 연산자

'!' 기호를 사용하는 대부분의 Linux 명령 사용법은 셸마다 다를 수 있습니다. 내가 제공하는 예제는 일반적으로 bash 셸에서 사용되지만 일부 다른 Linux 셸에서는 구현이 다를 수도 있고 '!' 기호의 특정 용도를 전혀 지원하지 않을 수도 있습니다.

Linux 명령에서 '!' 기호의 놀랍고 신비한 용도에 대해 살펴보겠습니다.

Linux 命令中“!”操作符的八个神秘用途

1. 명령 번호를 사용하여 기록에서 명령 실행

유용한 팁은 이전에 실행한 명령에서 기록 명령을 찾아서 다시 실행할 수 있다는 것입니다. 먼저 'history' 명령을 실행하여 명령 번호를 찾습니다.

linuxmi@linuxmi:~/www.linuxmi.com$ history
로그인 후 복사

Linux 命令中“!”操作符的八个神秘用途

Linux에서 최근 실행된 명령 찾기

기록에서 명령 번호별로 명령을 실행하려면 아래와 같이 '!' 기호 뒤에 명령 번호를 사용하면 됩니다.

$ !58
로그인 후 복사

Linux 命令中“!”操作符的八个神秘用途

명령번호별로 명령어 실행

위 명령어를 실행하면 히스토리 58번째 줄에 있는 명령어가 실행됩니다.

실제 명령 번호는 명령 기록에 따라 다를 수 있다는 점에 유의하세요. History 명령을 사용하여 명령 목록과 해당 줄 번호를 볼 수 있습니다.

2. Linux에서 이전에 실행한 명령 실행

이전에 실행한 명령을 실행된 순서대로 실행할 수 있습니다. 실행된 두 번째 명령은 -2로 표시됩니다. 마지막에서 끝까지. 일곱 번째는 -7입니다. !-n을 사용할 수 있습니다. 여기서 n은 인용하려는 명령의 역수입니다. 아래와 같이

$ history$ !-3$ !-6$ !-10
로그인 후 복사

Linux 命令中“!”操作符的八个神秘用途

Linux

3에서 명령을 다시 실행하세요. 3. 이전 명령의 매개변수를 새 명령에 전달하세요

'/home/linuxmi/snap' 디렉터리의 내용을 나열해야 합니다. , 그래서 다음 명령을 실행했습니다.

$ ls /home/linuxmi/snap
로그인 후 복사

그런 다음 실행 가능한 파일을 확인하려면 "ls -l" 명령을 실행해야 한다는 것을 깨달았습니다. 전체 명령을 다시 입력하는 대신 다음과 같이 이전 명령에 전달된 매개변수를 이 새 명령에 전달하면 됩니다.

$ ls -l !$
로그인 후 복사

Linux 命令中“!”操作符的八个神秘用途

여기서 '!$'는 이전 명령에 전달된 매개변수를 이 새 명령에 전달합니다.

4. 명령에서 두 개 이상의 매개변수를 처리하는 방법

바탕화면에 1.txt라는 텍스트 파일을 생성한다고 가정해 보겠습니다.

linuxmi@linuxmi ~/www.linuxmi.com% touch /home/linuxmi/linuxmi.go
로그인 후 복사

그런 다음 전체 경로를 사용하여 cp 명령을 사용하여 '/home/avi/Downloads' 디렉터리에 복사하세요.

linuxmi@linuxmi ~/www.linuxmi.com% cp /home/linuxmi/linuxmi.go /home/linuxmi/go
로그인 후 복사

이제 cp 명령에 두 개의 매개변수를 전달합니다. 첫 번째는 '/home/avi/Desktop/1.txt'이고 두 번째는 '/home/avi/Downloads'입니다. echo 명령을 실행하고 다른 매개변수를 사용하여 두 매개변수를 서로 다른 방식으로 인쇄할 수 있습니다.

linuxmi@linuxmi ~/www.linuxmi.com% echo "第一个参数是:!^"echo "第一个参数是:/home/linuxmi/linuxmi.go"第一个参数是:/home/linuxmi/linuxmi.golinuxmi@linuxmi ~/www.linuxmi.com% echo "第二个参数是:!cp:2"echo "第二个参数是:/home/linuxmi/go"第二个参数是:/home/linuxmi/go
로그인 후 복사

첫 번째 매개변수는 "!^"로 표시될 수 있으며, 다른 매개변수는 "![명령 이름]:[매개변수 번호]"를 실행하여 인쇄할 수 있습니다.

위 예에서 첫 번째 명령은 'cp'이고 두 번째 매개변수를 인쇄해야 합니다. 따라서 "!cp:2"입니다. 5개의 매개변수가 있는 xyz 명령의 경우 4번째 매개변수를 가져와야 하는 경우 "!xyz:4"를 사용하고 필요에 따라 해당 매개변수를 사용할 수 있습니다. 모든 매개변수는 "!*"를 통해 액세스할 수 있습니다.

Linux 命令中“!”操作符的八个神秘用途

2개 이상의 매개변수 처리

5. 특정 키워드를 기반으로 최근 명령 실행

키워드를 기반으로 최근 실행된 명령을 실행할 수 있습니다. 자세한 내용은 다음과 같습니다.

$ ls /home > /dev/null				[Command 1]$ ls -l /home/linuxmi/linuxmi > /dev/null		[Command 2]	$ ls -la /home/linuxmi/linuxmi.com > /dev/null	[Command 3]$ ls -lA /usr/bin > /dev/null			[Command 4]
로그인 후 복사

여기에서는 ls 명령을 사용했지만 옵션과 폴더가 다릅니다. 또한 콘솔을 깨끗하게 유지하기 위해 각 명령의 출력을 "/dev/null"로 보냅니다.

이제 키워드를 기반으로 마지막으로 실행된 명령을 실행합니다:

$ ! ls			[Command 1]$ ! ls -l		[Command 2]	$ ! ls -la		[Command 3]$ ! ls -lA		[Command 4]
로그인 후 복사

Linux 命令中“!”操作符的八个神秘用途

检查输出,你会惊讶地发现你正在运行已经执行过的命令,只是使用了ls关键词。

6、在Linux中重复上次执行的命令

你可以使用(!!)操作符来运行/修改你上次执行的命令,这是一个简写符号,允许你引用在命令行中执行的上一个命令。

例如,我运行了一个单行脚本来查找Linux机器的IP地址:

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/
로그인 후 복사

然后突然我发现我需要将上述脚本的输出重定向到一个名为ip.txt的文件中,那么我该怎么办呢?我需要重新输入整个命令并将输出重定向到文件吗?好吧,一个简单的解决方案是使用上箭头键来调出上一条命令,并在末尾添加’> ip.txt’来将输出重定向到文件。

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt
로그인 후 복사

感谢上箭头键的救命作用。现在考虑以下情况,下次我运行下面的单行脚本。

ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:
로그인 후 복사

当我运行脚本时,bash提示返回了一个错误,信息为“bash: ifconfig: command not found”,我很容易猜到我以一个普通用户的身份运行了这个命令,而它应该以root身份运行。

那么解决办法是什么呢?登录为root然后重新输入整个命令是很困难的!在上一个示例中的(上箭头键)在这里也无法帮助。所以,要调用用户的最后一个命令,需要输入“!!”(不需要引号)

su -c “!!” root
로그인 후 복사

这里的su是切换用户的命令,root是要切换到的用户,-c是以指定的用户身份运行命令的选项,最重要的部分是!!将被替换为上次运行的命令。是的!你需要提供root密码。

7、使用’!’操作符删除除一个文件之外的所有文件

在Linux中,’!’操作符(也称为”bang”操作符)用于历史扩展,它允许你引用先前的命令并对其执行各种操作。要从目录中删除除了特定文件(important_file.txt)之外的所有文件,可以使用带有’!’操作符的rm命令,如下所示。

$ rm !(important_file.txt)
로그인 후 복사

要从文件夹中删除除了扩展名为’.pdf’之外的所有文件类型。

$ $ rm !(*.pdf)
로그인 후 복사

8、检查Linux中的目录是否存在

在这里,我们将使用’! -d’来验证目录是否存在,如果目录不存在,则紧随其后的是逻辑与操作符(&&),打印出目录不存在,如果目录存在,则紧随其后的是逻辑或操作符(||),打印出目录存在。

逻辑是,当[ ! -d /home/linuxmi/linuxmi.com ]的输出为0时,它将执行逻辑与之后的内容,否则它将转到逻辑或(||)并执行逻辑或之后的内容。

$ [ ! -d /home/linuxmi/linuxmi.com ] && printf '\nno such /home/linuxmi/linuxmi.com directory exist\n' || printf '\n/home/linuxmi/linuxmi.com directory exist\n'
로그인 후 복사

类似于上面的条件,但是如果所需目录不存在,它将退出命令。

$ [ ! -d /home/linuxmi/linuxmi.com] && exit
로그인 후 복사

在脚本语言中的一般实现,如果所需目录不存在,它将创建一个目录。

[ ! -d /home/linuxmi/linuxmi.com] && mkdir /home/linuxmi/linuxmi.com
로그인 후 복사

위 내용은 Linux 명령에서 '!' 연산자의 8가지 신비한 용도의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

아파치를 시작하는 방법 아파치를 시작하는 방법 Apr 13, 2025 pm 01:06 PM

Apache를 시작하는 단계는 다음과 같습니다. Apache 설치 (명령 : Sudo apt-get Apache2를 설치하거나 공식 웹 사이트에서 다운로드) 시작 apache (linux : sudo systemctl start : windes (선택 사항, Linux : Sudo SystemCtl

Apache80 포트가 점유 된 경우해야 할 일 Apache80 포트가 점유 된 경우해야 할 일 Apr 13, 2025 pm 01:24 PM

Apache 80 포트가 점유되면 솔루션은 다음과 같습니다. 포트를 차지하고 닫는 프로세스를 찾으십시오. 방화벽 설정을 확인하여 Apache가 차단되지 않았는지 확인하십시오. 위의 방법이 작동하지 않으면 Apache를 재구성하여 다른 포트를 사용하십시오. Apache 서비스를 다시 시작하십시오.

데비안에서 nginx ssl 성능을 모니터링하는 방법 데비안에서 nginx ssl 성능을 모니터링하는 방법 Apr 12, 2025 pm 10:18 PM

이 기사에서는 데비안 시스템에서 NGINX 서버의 SSL 성능을 효과적으로 모니터링하는 방법에 대해 설명합니다. NginxOxporter를 사용하여 Nginx 상태 데이터를 프로 메테우스로 내보낸 다음 Grafana를 통해 시각적으로 표시합니다. 1 단계 : nginx 구성 먼저 Nginx 구성 파일에서 stub_status 모듈을 활성화하여 nginx의 상태 정보를 얻어야합니다. nginx 구성 파일에 다음 스 니펫을 추가하십시오 (일반적으로 /etc/nginx/nginx.conf에 있거나 포함 파일에 위치) : location/nginx_status {stub_status

데비안 시스템에서 재활용 빈을 설정하는 방법 데비안 시스템에서 재활용 빈을 설정하는 방법 Apr 12, 2025 pm 10:51 PM

이 기사는 데비안 시스템에서 재활용 빈을 구성하는 두 가지 방법 인 그래픽 인터페이스와 명령 줄을 소개합니다. 방법 1 : Nautilus 그래픽 인터페이스를 사용하여 파일 관리자를 엽니 다. 데스크탑 또는 응용 프로그램 메뉴에서 Nautilus 파일 관리자 (일반적으로 "파일")를 찾아 시작하십시오. Recycle Bin 찾기 : 왼쪽 탐색 표시 줄에서 재활용 빈 폴더를 찾으십시오. 찾을 수없는 경우 검색하려면 "기타 위치"또는 "컴퓨터"를 클릭하십시오. 재활용 빈 속성을 구성하십시오 : "Recycle Bin"을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오. 속성 창에서 다음 설정을 조정할 수 있습니다. 최대 크기 : 재활용 빈에서 사용 가능한 디스크 공간을 제한하십시오. 유지 시간 : 재활용 쓰레기통에서 파일이 자동으로 삭제되기 전에 보존을 설정합니다.

Apache 서버를 다시 시작하는 방법 Apache 서버를 다시 시작하는 방법 Apr 13, 2025 pm 01:12 PM

Apache 서버를 다시 시작하려면 다음 단계를 따르십시오. Linux/MacOS : Sudo SystemCTL 실행 Apache2를 다시 시작하십시오. Windows : Net Stop Apache2.4를 실행 한 다음 Net Start Apache2.4를 시작하십시오. Netstat -A |를 실행하십시오 서버 상태를 확인하려면 Findstr 80.

네트워크 모니터링에서 데비안 스나이퍼의 중요성 네트워크 모니터링에서 데비안 스나이퍼의 중요성 Apr 12, 2025 pm 11:03 PM

검색 결과는 "DebianSniffer"와 네트워크 모니터링에서 특정 응용 프로그램을 직접 언급하지는 않지만 "스나이퍼"는 네트워크 패킷 캡처 분석 도구를 지칭하며 Debian 시스템의 응용 프로그램이 다른 Linux 배포판과 본질적으로 다르지 않다고 추론 할 수 있습니다. 네트워크 모니터링은 네트워크 안정성을 유지하고 성능을 최적화하는 데 중요하며 패킷 캡처 분석 도구는 핵심 역할을합니다. 다음은 네트워크 모니터링 도구 (예 : Debian Systems에서 실행되는 스나이퍼와 같은)의 중요한 역할을 설명합니다. 네트워크 모니터링 도구의 가치 : 빠른 결함 위치 : 네트워크 실행, 패킷 손실률 등과 같은 네트워크 메트릭의 실시간 모니터링, 네트워크 실패의 근본 원인을 신속하게 식별하고 문제 해결 시간을 단축 할 수 있습니다.

Debian Readdir의 성능을 최적화하는 방법 Debian Readdir의 성능을 최적화하는 방법 Apr 13, 2025 am 08:48 AM

Debian Systems에서 ReadDir 시스템 호출은 디렉토리 내용을 읽는 데 사용됩니다. 성능이 좋지 않은 경우 다음과 같은 최적화 전략을 시도해보십시오. 디렉토리 파일 수를 단순화하십시오. 대규모 디렉토리를 가능한 한 여러 소규모 디렉토리로 나누어 읽기마다 처리 된 항목 수를 줄입니다. 디렉토리 컨텐츠 캐싱 활성화 : 캐시 메커니즘을 구축하고 정기적으로 캐시를 업데이트하거나 디렉토리 컨텐츠가 변경 될 때 캐시를 업데이트하며 readDir로 자주 호출을 줄입니다. 메모리 캐시 (예 : Memcached 또는 Redis) 또는 로컬 캐시 (예 : 파일 또는 데이터베이스)를 고려할 수 있습니다. 효율적인 데이터 구조 채택 : 디렉토리 트래버스를 직접 구현하는 경우 디렉토리 정보를 저장하고 액세스하기 위해보다 효율적인 데이터 구조 (예 : 선형 검색 대신 해시 테이블)를 선택하십시오.

Apache를 시작할 수없는 문제를 해결하는 방법 Apache를 시작할 수없는 문제를 해결하는 방법 Apr 13, 2025 pm 01:21 PM

다음과 같은 이유로 Apache가 시작할 수 없습니다. 구성 파일 구문 오류. 다른 응용 프로그램 포트와 충돌합니다. 권한 문제. 기억이 없습니다. 프로세스 교착 상태. 데몬 실패. Selinux 권한 문제. 방화벽 문제. 소프트웨어 충돌.

See all articles