ls
이런 작업을 수행하는 새 명령을 정의하고 싶습니다 .
일반 명령을 사용할 때의 첫 번째 명령은 다음과 같습니다 ls
.
$ls
undergrade.AI undergrade.KDD
undergrade.AI2 undergrade.micro
undergrade.ANN undergrade.OOT
undergrade.autoMata undergrade.OS
undergrade.bulletin undergrade.parallelAndDistributedProgramming
undergrade.CG undergrade.pop
undergrade.CLP undergrade.PPL
undergrade.comNet undergrade.researchingMethod
undergrade.comOr undergrade.SA
undergrade.comSec undergrade.SE
undergrade.DBMS undergrade.softwareTesting
undergrade.discrete undergrade.webApps
code.ajax code.cc code.erl code.html code.js code.pl code.py
code.sage code.x3d code.c code.cl code.go code.jquery code.lisp
code.pro code.roo code.sh code.xml
내가 원하는 새로운 ls의 경우:
$ls_new
undergrade code
내가 입력할 때 첫 번째 단어만 표시되도록 하고 싶습니다 ls_new
.
이 명령이 왜 필요한가요?
category.subj
왜냐하면 내가 일반을 사용할 때 ls
필터링, 그룹화 및 표시하려면 몇 가지 명령이 필요하지만 이름만 필요하기 때문입니다 category
.
답변1
이렇게 하면 원하는 작업이 수행됩니다.
ls|sed 's/\..*//'|sort -u|column
쉘의 터미널 너비가 $COLUMNS인 경우 다음이 더 좋습니다.
ls|sed 's/\..*//'|sort -u|column -c $COLUMNS
답변2
또 다른 방법 awk
:
ls | awk -F. '$1 != p { p=$1; print $1}'