ラベル script の投稿を表示しています。 すべての投稿を表示
ラベル script の投稿を表示しています。 すべての投稿を表示

2018-09-16

zsh: Utility for Karabiner-Elements

遅ればせながらKarabiner-Elementsに手を出し始めました。従来のKarabinerではprivate.xmlで全て書き下していたので、戸惑うところが多数あります。

特に「記憶力の低下が激しい老人」にとって、「ComplexModifications」の設定は困難です。

そこで、ダウンロードした「ComplexModifications」の置かれているディレクトリについて簡易リストをするスクリプトを作ったので紹介します。
 ~/.config/karabiner/assets/complex_modifications

実行例(listComplexModifiers)

Figure 1. Example of listComplexodifiers
出力は下記になります;
  1. 通常のls(file name order) 
  2. ファイル毎の「description 」の抽出リスト

スクリプト

#!/bin/zsh 

# listComplexModifiers

cd ~/.config/karabiner/assets/complex_modifications
thisDir=$(pwd | sed "s%$HOME%~%")
echo "•$0:t for '$thisDir'"

echo "(1) Json files"
ls -1 | sort -f | nl -w3 -s'  '

echo "(2) Json-file & its Descriptions"
j=$[0]
for file in *
do 
 j=$[j+1]
 printf "%3d  %s\n" $j "$file"
 cat "$file" | grep description | sed 's%"description":%• %g'
done


感想


先代Karabinerがスポーツ車だとすれば、 Karabiner-Elementsは優雅なセダンと感じます。細かな配慮が欠落しています。例えば、
  •  Karabiner「Mouse Keys v2」の「Warp cursor position」は亡くなり、
  •  Karabiner「Launcher Mode v2」の「Dictionary: O+Q,Q(press Q twice」も亡なりなりました。
でも、日本語のサイト(Karabiner-ja)では回答がされていないので質問ができず、自前の「ComplexModifications」で違う方法を模索するしかありません。

Dictionaryについて言えば、スクリプトによる利用法の改善に努めています。



この記事の履歴
  1. 開始 2018-09-16-1350

2016-06-20

zsh: 現在のディレクトリ中のファイル名の「特定部分A」を「特定部分B」に変えるスクリプト


zsh: 現在のディレクトリ中のファイル名の「特定部分A」を「特定部分B」に変えるスクリプト
zsh: Script to change the "specific part-A" to "specific part-B" of file-names in a current directory


概要


私は、Firefoxの外部CSS(Profile/chrome/userContent.css)をスクリプト経由で操作したくなりました。他方、細かなCSSの操作はStylishでしています。これらの為に、ファイル名を一括して変更するスクリプトが必要になりました。「old2new」がその答えで、具体例とソース・コードを以下に示します。


具体例

Figure 1: Demonstration of "old2new"




ソース・コード(old2new)



#!/bin/zsh 

# USAGE: old2new OLD NEW↩

# FUNCTION:
#   1) 変えたいファイルがあるディレクトリに移動
#   2) ファイルの「変ええたい一部」を$1(OLD)に入れる
#   3) 「その変更後の値」を$2(NEW)に入れる
#     NEWは何もなし("")でも可。
#   4) *${OLD}* --> *${NEW}*

# 2016-06-19-21:52

###############################################################################
# list current dir: % old2new ↩
if [[ ( $1 == "" ) && ( $2 == "") ]] ; then
  echo " • list of current dir"
 ls -dlG *
 exit
fi


###############################################################################
# for: % old2new OLD NEW↩

old="$1" # specific part-A
new="$2" # specific part-B


myls=( ${(f)"$(ls -d *)"} )
j=$((0))
for file in $myls ; do
 [[ -d "$file" ]] && continue
 [[ -f "$file" ]] || continue
 
 new_file=$( echo "$file" | grep "$old" | sed "s%$old%$new%" )
 [[ "$new_file" == "" ]] && continue
 j=$((j+1))
 echo -n "  • $j " 
 mv -fv "$file"  "$new_file"
done

if [[ $j -eq 0 ]]; then
 echo " •• old file: *${old}* not detected"
else
 echo " •• ---------------------------------------------------------------------- "
 ls -dlG *"${new}"*
fi


感想


時々、このようなスクリプトを作ろうかと思ったが、面倒くさいのでサボっていた。もう少し頑張れば、連番の付与もできそうだ...。


この記事の履歴

  1. 開始2016-06-20-01:16




2016-05-27

/Volumes内のドライブのUUIDをリストするスクリプト

5日ほど前に、Yosemiteで 「Update 2016-003」を実施しました。その後3日ほどしてから、DiskUtilで見ると、システム・ドライブの表示順序が不規則に入れ替わるようになりま した。「Apple サポート・コミュニティ: Mac OS X Technologies(Japan)」でこの現象を質問中です。
少なくとも「/etc/fstab」に「ドライブ毎に、UUID、種類、名前」をリストする必要があるようです。そこで、/Volumesの中にあるドライブのUUIDをリストするスクリプト、uuidsを作ったのでご紹介します。


terminalでの動作結果
Figure uuids action at terminal



スクリプト: uuids

#!/bin/zsh 
#
# uuids: list UUIDs in /Volumes/*
#
# USAGE: uuids↩
#_
# 2016-05-27(金) 18:11:14 
#
 
get_uuid(){
 #diskutil info "$1" | grep "Disk / Partition UUID:" | sed 's%[^0-9A-Z-]%%g' 
 diskutil info "$f" |grep 'Disk / Partition UUID:' |\
  sed 's%Disk / Partition UUID:    %%' | tr -d ' '  
}
 
 
mylc=( ${(f)"$(ls  /Volumes )"} )

echo "  #  UUIDs in /Volumes                      Drive Names"
echo " --  ------------------------------------  -----------------------------"
 
j=$((0))
for f in ${(O)mylc} ; do
 j=$((j+1))
  
 myu=$(get_uuid "$f")
 
  printf " %2d  %s  %s\n" $j $myu $f
done


この記事の履歴
  1. 開始2016-05-27(金) 23:18:54

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...