해당 입력을 두 번 입력하지 않고 하나의 입력에서 두 명령을 어떻게 실행할 수 있습니까?
예를 들어, stat 명령은 파일에 대해 많은 정보를 제공하지만 파일 유형을 나타내지는 않습니다.
stat fileName
file 명령은 파일 유형을 알려줍니다.
file fileName
다음을 통해 한 줄로 이 작업을 수행할 수 있습니다.
stat fileName ; file fileName
단, 파일 이름을 두 번 입력해야 합니다.
동일한 입력에서 이 두 명령을 어떻게 실행할 수 있습니까(입력을 두 번 입력하거나 입력 변수를 입력하지 않고)?
Linux에서는 출력을 파이프하는 방법을 알고 있지만 입력을 파이프하는 방법은 무엇입니까?
답변1
당신은 이것에 대해 긴장할 수도 있습니다. 여기에 트릭을 수행하는 것처럼 보이는 bash 중괄호 확장과 eval의 깔끔한 조합이 있습니다.
eval {stat,file}" fileName;"
답변2
Pass 를 사용하면 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.