
~/Pictures
フォルダからファイル名を取得し、コマンドの引数として指定したいと思いますnomacs
。ファイル名にスペースが含まれているので、Bash置換を使用してスペースをエスケープします(フォルダの最後のファイルもインポートしたい)。
パスワード:
names=$(\ls ~/Pictures * | tac)
SAVEIFS=$IFS
IFS=$'\n'
names=($names)
IFS=$SAVEIFS
screenshot=~/Pictures/${names[0]}
screenshot=${screenshot// /\\ }
nomacs $screenshot
ファイル名の例:Screenshot from 2017-09-13 18-05-42.png
問題はこれがうまくnomacs $screenshot
いかないことですが、実行してみるとnomacs Screenshot\ from\ 2017-09-13 18-05-42.png
期待どおりに動作します。
スペースを脱出するには、特別なBash技術を使用する必要がありますか?
答え1
あなたのスクリプトから収集した内容によれば、最初の項目の出力を反転してls
最初の項目を選択します。 Bashを使用してこれを行うもう1つの方法は次のとおりです。
files=(~/Pictures/*)
nomacs "${files[-1]}"
これにより、グローバル拡張で配列が埋められ、~/Pictures/*
最後の要素がnomacs
プログラムに渡されます。