Stormvirux는 다른 스레드에서 이 멋진 스크립트를 제공했습니다. 목록 출력에 열 헤더를 넣습니다 ls -l
.
#!/bin/bash
{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename; ls -l ; } | column -t | awk 'NR!~/^(2)$/'
ls -l | head -1
명령줄에서 실행하면 됩니다. 나는 그것을 좋아하고 lsl
bash를 실행하는 Linux 시스템에서 별칭으로 사용하고 싶습니다 .
그러나 나는 구분 기호가 올바르게 해석되도록 작동시키는 방법을 평생 알아낼 수 없습니다. 명령줄에서 alias 명령을 사용하려고 하면(예: 구성 파일에 제출하기 전에 이 작업을 수행함 .bashrc
) 작동하지 않습니다. 올바르게 해석될 수 있도록 다양한 방법으로 패키징하려고 하면 다양한 오류가 발생합니다.
누군가 이것을 별칭으로 작동하게 하는 방법을 알려주거나 이와 같은 것을 별칭으로 작동하게 하려면 무엇을 해야 하는지 명확하게 알려주는 좋은 참조를 알려줄 수 있습니까?
답변1
또 다른 방법은 함수로 정의할 수 있습니다 .bashrc
.
lsl() {
{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename;
ls -l; } |
column -t |
awk 'NR!~/^(2)$/'
ls -l | head -1
}
답변2
별칭으로 사용해야 하는 경우:
alias lsl='{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename; ls -l ; } | column -t | awk '\''NR!~/^(2)$/'\'';ls -l | head -1'
중지 문자열로 해석되지 않도록 내부 작은따옴표를 백슬래시로 이스케이프해야 합니다.
큰따옴표를 사용하면 다음과 같이 해석 !
됩니다 .역사적 확장더 많은 이스케이프가 필요하므로 아마도 가장 혼란스러운 문제일 것입니다( bash: !~/^: event not found
이해할 수 없는 횡설수설인 " "와 같은).
위의 방법도 효과가 있지만 더 좋은 방법은 파일을 경로 어딘가에 두고 실행 가능하게 만드는 것입니다. 예를 들어, 게시물의 내용을 포함하는 ~/.local/bin
스크립트를 만든 다음 이를 다음으로 보냅니다 .lsl
chmod +x ~/.local/bin/lsl
.bashrc
export PATH="$HOME/.local/bin:$PATH"
해당 디렉터리에서 실행 파일을 찾을 수 있는지 확인합니다. 그런 다음 lsl
어디에서나 코드를 실행하도록 작성할 수 있습니다 . 이 접근 방식은 유지 관리가 더 쉽고 이해하기 쉽습니다.