Archive for the ‘bash’ Category

terminal

送信

-P #portNumber

scp -Pxxx filename name@hostname :~/

ポート番号指定のオプションは小文字でなく大文字の-Pである。

コロン以下に転送先ホストのディレクトリを指定できる。

例ではfilenameをリモートサーバーのホームディレクトリに転送している。

受信の場合

scp -Pxxx name@hostname:/home/name/Desktop/hoge.txt ./

例ではリモートサーバー側デスクトップのhoge.txtをローカルサーバーのカレントディレクトリに送っている。

また、ファイルだけでなくディレクトリごと送受信するには、オプション -r を足してディレクトリ名を指定する。

terminal

たとえばあるディレクトリの中に

text1.txt,text2.txt,text3.text,,,text30.txt

と30のファイルがあったとして、それらのファイルの全ての末尾に"hogehoge"と書き込みたい場合。

わたしはこう書きました

find ./ -type f | xargs -I@ echo "hogehoge" >> @

できたかなーと、ファイルの中をみてみると空でした。

かわりに、@というファイルが増えており、その中に30行のhogehogeが追記されていました。

なんじゃこりゃということで、Linuxマスターに尋ねてみると、どうやら |(パイプ)や >>(追記リダイレクト)の記号はそれの以前と以後でコマンドの影響範囲が異なるという事なんですね。

| xargs -I@ echo "hogehoge" >> @

は正しく認識されておらず、>>を介してしまったために@の置換が上手くいっていなかったということです。

ということで、上でやろうとしたことを正しく実行させるにはこうした方がよさそうです。

for n in $(find ./ -type f); do echo "hogehoge" > $n; done

findをコマンド置換によってforに投げて、1ファイル適宜hogehogeを追記するわけですね〜。

シェルスクリプトをわざわざ書くまでもなく、すっきりしました。

ImageMagick-TestCommand

Windowsの縮小専用とか、その他画像をドラッグアンドドロップで縮小する系のソフトウェアは総じて縮小後に何故か彩度が落ちます。

そのため、筆者の様にカメラを趣味にしているものはそれらのソフトを使う気にならず、わざわざ重い画像処理ソフトを立ち上げて縮小しなければならなかったのですが、この度ImageMagickは色落ちしない事が判明しました。

そこで、ImageMagickを使って一括で画像を縮小処理する方法をご紹介します。

目的のディレクトリに移動した後に

ls *.jpg | xargs I@ convert -resize 1280x1280 -unsharp 0.125x1.0+1+0.05 -quality 80 -verbose @ @-resized.jpg

を実行するだけです。
あとはディレクトリの中を覗いてみると、縮小された画像は「ファイル名-resized.jpg」という名前で保存されています。

なお、1280xの値を変更する事で、アスペクト比は保ったまま指定したサイズに縮小が可能です。
1280x1280とすることで長辺1280の画像が生成されます。

qualityオプションは80に設定していますが、筆者としては80くらいがちょうどよいと感じました。
この値を低く設定しすぎると、Jpeg特有のブロックノイズが目立ち始めます。
また、100にすると画像サイズを縮小してもデータサイズがかなりデカイという事になってしまい使い勝手が悪いです。

unsharpオプションの値は複雑なので、一度調べてから変更する事をおすすめします。