.png)
해당 입력을 두 번 입력하지 않고 하나의 입력에서 두 개의 명령을 어떻게 수행할 수 있습니까?
예를 들어, stat 명령은 파일에 대해 많은 정보를 제공하지만 파일 유형은 나타내지 않습니다.
stat fileName
file 명령은 파일 유형을 알려줍니다.
file fileName
다음과 같이 한 줄로 이 작업을 수행할 수 있습니다.
stat fileName ; file fileName
그러나 fileName을 두 번 입력해야 합니다.
입력이나 입력 변수를 두 번 입력하지 않고 동일한 입력에서 두 명령을 어떻게 실행할 수 있습니까?
Linux에서는 출력을 파이프하는 방법을 알고 있지만 입력은 어떻게 파이프합니까?
답변1
아마도 이것을 위해 내 손가락 관절을 두들겨 패게 될 것입니다. 여기에 트릭을 수행하는 것으로 보이는 bash 버팀대 확장과 평가의 해키 조합이 있습니다.
eval {stat,file}" fileName;"
답변2
를 사용하면 zsh
익명 함수를 사용할 수 있습니다.
(){stat $1; file $1} filename
람다 사용 es
:
@{stat $1; file $1} filename
다음을 수행할 수도 있습니다.
{ stat -; file -;} < filename
( 액세스 시간이 업데이트되므로 stat
첫 번째 작업을 수행합니다).file
나는 할 것이다:
f=filename; stat "$f"; file "$f"
하지만 그것이 변수의 목적입니다.
답변3
또 다른 방법은 다음과 같습니다.
$ stat filename && file "$_"
예:
$ stat /usr/bin/yum && file "$_"
File: ‘/usr/bin/yum’
Size: 801 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 1189124 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:rpm_exec_t:s0
Access: 2014-06-11 22:55:53.783586098 +0700
Modify: 2014-05-22 16:49:35.000000000 +0700
Change: 2014-06-11 19:15:30.047017844 +0700
Birth: -
/usr/bin/yum: Python script, ASCII text executable
이는 bash
및 에서 작동합니다 zsh
. 이는 에서도 작동 mksh
하지만 dash
대화형일 때만 작동합니다. AT&T ksh에서는 file "$_"
해당 회선이 다른 회선에 있을 때만 작동합니다 stat
.
답변4
이 답변은 다른 답변과 유사합니다.
통계파일 이름 && 파일 !#:1
자동으로 반복되는 다른 답변과 달리마지막이전 명령의 인수를 사용하려면 다음을 계산해야 합니다.
ls -ld파일 이름 && 파일 !#:2
다른 답변과 달리 따옴표가 필요하지 않습니다.
stat "useless cat" && file !#:1
또는
echo Sometimes a '$cigar' is just a !#:3.