Вы можете использовать setxkbmap
или xmodmap
, чтобы поменять местами Caps Lock и Escape. С xmodmap
вы можете получить:
! Remove Caps_Lock modifier from real Caps Lock key
clear Lock
! Set real Caps Lock key to present as (left) control
keycode 66 = Control_L
! Set real Escape key to present as Caps Lock
keycode 9 = Caps_Lock
! Make a fake key to hold the Escape keysym, so xcape can use it
keycode 255 = Escape
! Make Caps_Lock and Control_L work as one would expect
add Lock = Caps_Lock
add Control = Control_L
(Строки, начинающиеся с !
, являются комментариями.)
Поместите это в ~ / .xmodmaprc
и запустите xmodmap ~ / .xmodmaprc
,
затем запустите xcape -e '# 66 = Escape'
, чтобы добавить функциональность Escape к реальной клавише Caps Lock.
Я думаю, вы почти получили его. Вы можете использовать базовое имя «$ 0»
до найти имя сценария внутри сценария и распечатать счетчик строк всего, кроме
#!/bin/bash
if [ $# -eq 0 ]
then
for k in *
do
if [[ ! -d "$k" && "$k" != `basename "$0"` ]]
then
wc -l "$k"
fi
done
else
for k in $*
do
wc -l "$k"
done
fi
Я взял на себя смелость
k
вместо l
(не рекомендуется для имен переменных, я почти уверен, но не могу найти ссылку (ее можно спутать с 1
, I
)) echo
, как указал @Serg. РЕДАКТИРОВАТЬ Я добавил двойные скобки и тест для каталогов, чтобы игнорировать их, в условное выражение if
.
#!/bin/bash
if [[ "$#" != 0 ]]; then
# only process the names given to us
wc -l "$@"
exit
fi
# process all regular files in this directory, avoiding this script
for f in ./*; do
if [[ "$f" != "$0" ]] && [[ -f "$f" ]]; then
wc -l "$f"
fi
done
Вместо сценария вы также можете объединить три (3) команды в одну строку и распечатать желаемые результаты.
Например.
find . -maxdepth 1 -type f -name "*.txt" -exec cat {} + | wc -l
Если вы не хотите выполнять поиск только в текущем каталоге, но также рекурсивно подсчитывать строки, вы можете удалить переключатель «-maxdepth 1» или изменить номер в зависимости от ваших потребностей.