lsコマンドでディレクトリのみを一覧で表示

こんな状態から

Directory1
Directory2
Directory3
Directory4
Directory5
sample1.apk
sample2.apk
sample3.apk

ディレクトリのみ一覧で表示したい場合

ターミナルに以下をぶちこむ

ls -1F | grep /

表示結果

Directory1/
Directory2/
Directory3/
Directory4/
Directory5/

lsオプション説明

-1
1行に1ファイルずつ表示する

-F
ファイル名にファイル・タイプを表す記号を付けて表示する。ディレクトリは"/",実行可能ファイルは"*",シンボリック・リンクは"@",FIFOは"|",ソケットは"="で表わす

最後のスラッシュが邪魔だけど...
もっと良い方法ないですかね


参考リンク
Linuxコマンド集 - 【 ls 】 ファイルやディレクトリの情報を表示する:ITpro

Xmllintで属性を指定してXmlから値を取得

またまたシェルスクリプトとxmllintを使う機会があった。

今度はxmlに同名タグが複数存在しており、属性で絞って値を取るというパターンだった。

やりたいこと

以下のxmlがあったとする。

<!-- sample.xml -->
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <long name="aaa" value="12345" >いぬ</long>
    <long name="bbb" value="56789" >ねこ</long>
</map>

longタグ内にあるname="aaa"のvalueの値「12345」を取得したい。

前回と同じくxmllintを使って取得する。

準備&おさらい

準備&おさらいとして、単にvalueのみを指定してxmllintで取る。

echo 'cat map/long/@value' | xmllint --shell sample.xml

結果はこうなる

/ > cat map/long/@value
 -------
 value="12345"
 -------
 value="56789"

name="aaa"もname="bbb"の両方のvalueがヒットしてしまう。
これを条件を与えて絞るようにする。

xmllintに条件を加える

name=aaaのみを得るには、long[@name="aaa"]とする。

echo 'cat map/long[@name="aaa"]/@value' | xmllint --shell sample.xml

とすると、結果はこうなる。

/ > cat map/long[@name="aaa"]/@value
 -------
 value="12345"

無事にname=aaaのみのvalueが取れた。

できた

あとは変数だけを取得するなら、自分はこうしてみた

value=`echo 'cat map/long[@name="aaa"]/@value' | xmllint --shell sample.xml |grep value= | sed 's/[^"]*"\([^"]*\)"[^"]*/\1/g'`
echo $value

結果はこうなる。

1234

これで目標達成となった。

<br

おまけ

「いぬ」の値を取る場合はこうした。

value=`echo 'cat map/long[@name="aaa"]' | xmllint --shell sample.xml | grep value= | sed 's/^.*<long.*>\(.*\)<\/long>.*$/\1/'`;
echo $value

結果はこうなる。

いぬ


参考リンク
- Test XML command line with xmllint | - Softwaretester -

Qiitaに初投稿してきた

ブログに書くほどの事じゃないんだろうけど(笑)

いつも閲覧ばかりしているQiitaに、初投稿してきた。

qiita.com

投稿の中身は、昨日このブログで書いた記事と同じ(笑)

Qiitaでは技術ネタの収集にお世話になってるもんで、たまには俺も投稿しようかなーと。


投稿した後に、別にxmllint使わなくてもgrepだけでも取得できる事に気付き、
そんなツッコミが絶対来るだろうなぁ、とビクビクしている今日この頃です。

ShellScriptとxmllintでxmlを解析

ShellScriptド素人がxmlの中身を取り出したかったので、色々調べた

xmllintとは

xmllintとはlibxml2を使用したツールで、XMLファイルに対して以下の機能を持ったのコマンドラインツールです。

このxmllintを使って、以下のxmlを解析して値&属性値を取り出す

sample.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<top>
    <int name="hoge" value="327">100</int>
</top>


327を取り出す場合、以下のようにする

echo 'cat /top/int/@value' | xmllint --shell sample.xml | grep value= | sed 's/[^"]*"\([^"]*\)"[^"]*/\1/g'


100を取り出す場合、以下のようにする

echo 'cat /top/int' | xmllint --shell sample.xml | grep value= | sed 's/^.*<int.*>\(.*\)<\/int>.*$/\1/' 



参考にしたサイト
* ShellScriptでXMLの内容を取り出す | Opentone Labs.
* sedで「ダブルクォーテーションに囲まれた文字列」を抽出する方… - 人力検索はてな

adbでスクリーンショットをファイル名+年月日付きで出力する

.bashrcに以下を追加する

export ANDROID_SDK=AndrodSDKのパス

alias sshot=$ANDROID_SDK"/tools/screenshot2 ~/screenshot.png; mv ~/screenshot.png ~/screenshot_`date '+%y%m%d%H%M%S'`.png";

# screenshot_160322141020.pngと出力される

保存するパスは自分で好きなように設定するべし

dose not contain the JNI_CreateJavaVM symbol

ついにMacBookProをEl Capitanにアプデした後、Aptana Studioを起動してみると

"/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib"
does not contain the JNI_CreateJavaVM symbol.

というエラーダイアログが出て起動しなかった。

OMG!とビビりつつググる

stackoverflow.com

下のリンクからJava for OS X 2015-001をインストールしなさい、とのこと

ダウンロード - Java for OS X 2015-001

あれー、これ前に入れたことあったような...

と思いつつインストールすると、あっさりとAptana Studioが起動

めでたしめでたし

Adblock FastはNexus6に効果がなかった

広告が邪魔なのでブロックできるアプリを探していると、こんなの見つけた play.google.com

Adblock Fast

なんか良さげ!

何も考えずNexus6に入れてみる



うーん、広告がブロックされている気配がない...

アプリの説明を読んでみると

The app requires and blocks ads in Samsung Internet 4.0 and up (not in other apps). After installing, follow the in-app instructions to turn ad blocking on.

Samsung Internetというアプリにしか効果がないようだ…

入れた意味なかった…

ちゃんと説明を読まない俺がダメなんですけどね

Samsung Internetとは

そのSamsung Internetとは何だろう?と調べると

play.google.com

サムスン端末じゃないとインストールできないっぽい

俺は無駄な時間を過ごしたのか

結局、広告はブロックできず、
効果のないアプリをインストールしては調べ、
読者は無駄な時間を費やしてしまったのか

いや、そうではない

収穫はあったのだ
あなたが開発者ならね

なーんと、Adblock Fastのアプリ説明にgithubリポジトリが載っていて、ソースが見れるじゃありませんか!

GitHub - rocketshipapps/adblockfast: A new, faster ad blocker for Android, iOS, Chrome, and Opera.

広告をブロックする処理がどうなっているのか、勉強になりそう!
(俺は読んでないけど)



こうして、会社の昼休みが終わっていくのであった