シェルの起動
2011-02-01-2 / カテゴリ: [shell][Android] / [permlink]

% adb shell
adbはSDK revision7まではtoolsの下にあったけど、revision8からはplatform-tools以下にあるので注意。(6→7だったかも知れん。うろ覚え)
エミュレータと実機、みたいに、複数のデバイスが接続されている場合は
% adb shell
error: more than one device and emulator
となってしまうので、
% adb devices
List of devices attached
emulator-5554   device
HT**********    device
で一覧を出して、
% adb -s emulator-5554 shell
と、シリアルナンバーでデバイスを指定してやる。

詳しくは
% adb -h
で見れる。

なお、シェルコマンドは(sshのリモートコマンド実行の要領で)
% adb [-s serialnumber] shell [command [arg...]]
で、一気に実行できる。

ちなみにシェルはsh(だよな?)。タイムマシンに乗った気分。
環境によって違うと思うけど、エミュレータ(2.2/デフォルトパラメタで作成)だと
# printenv
printenv
ANDROID_ROOT=/system
LD_LIBRARY_PATH=/system/lib
PATH=/sbin:/system/sbin:/system/bin:/system/xbin
ASEC_MOUNTPOINT=/mnt/asec
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
ANDROID_BOOTLOGO=1
ANDROID_ASSETS=/system/app
EXTERNAL_STORAGE=/mnt/sdcard
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=9,32768
# cat /proc/cpuinfo
cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 279.34
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5

Hardware        : Goldfish
Revision        : 0000
Serial          : 0000000000000000

desireII(2.2/ドノーマル)だと
$ printenv
printenv
ANDROID_ROOT=/system
LD_LIBRARY_PATH=/system/lib
PATH=/sbin:/system/sbin:/system/bin:/system/xbin
ASEC_MOUNTPOINT=/mnt/asec
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/com.htc.framework.jar:/system/framework/com.htc.android.pimlib.jar:/system/framework/com.htc.android.easopen.jar:/system/framework/com.scalado.util.ScaladoUtil.jar
ANDROID_BOOTLOGO=1
ANDROID_ASSETS=/system/app
EXTERNAL_STORAGE=/mnt/sdcard
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=10,65536
$ cat /proc/cpuinfo
cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 162.54
Features        : swp half thumb fastmult vfp edsp thumbee neon
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0x00f
CPU revision    : 2

Hardware        : bravo
Revision        : 0083
Serial          : 0000000000000000

などなど

シェルスクリプトが動かん
2008-01-21-2 / カテゴリ: [linux][shell][ubuntu] / [permlink]

6.06から7.10まで上げた場合

/bin/sh のリンク先が /bin/dash になってる。
/bin/bash に張り直すのもちょっと危険な気がするので、自前のスクリプトのshebangを#!/bin/bashに書き換えた。

Perl使いでよかった。(シェルスクリプトは少ない)
というか、もう #!/bin/sh と書く習慣がなくなってきたってことなのかな。

履歴のインクリメンタルサーチとCtrl-sによるstop
2006-09-28-2 / カテゴリ: [unix][shell] / [permlink]

zshやbashでCtrl-rすると、入力文字列をキーにしたインクリメンタルサーチができる。逆サーチ(メッセージを見る限り『^rが逆』ぽいけど^^;)はCtrl-s
でもデフォルト状態のCtrl-sは端末のstopに割り当てられているので、入出力がロックされてしまう(解除はCtrl-q)
% stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo -echoe -echok -echonl -noflsh -tostop -echoctl -echoke
なので、端末のstopのキーバインドを変更する。
% stty stop ^x (Ctrl-xに変更)
stty: invalid integer argument ... とか表示される場合はクォートで囲むか、Ctrl-vの後にアサインしたいキーコンビネーション(ハット+キーでなく、コントロールを押下しながら設定したいキー)を入力。
stopを使わないのであれば、
% stty stop undef

これで、Ctrl-s/Ctrl-rでインクリメンタルサーチ可能

やっぱWinよりUNIX/Linux系の方が戯術ネタあるよなぁ。
というか、最近一番使うシェルってエクスプローラなんだよなぁ。
(いや、あまり使ってないか?)

tar + gz + gpg で暗号化バックアップ
2006-09-28-1 / カテゴリ: [暗号][shell][command] / [permlink]

共用ファイルサーバへのファイルバックアップ、とか。
PASS=パスフレーズ
SRC=バックアップ元
DST=バックアップ先
% echo ${PASS} | { tar zcvf - ${SRC} | gpg --batch -o {DST} --passphrase-fd 3 -c; } 3>&0

--batch で対話モードのオフ
-o FILENAME で出力ファイル名の指定
--passphrase-fd N でパスフレーズの入力ディスクリプタ指定

1年以上シェルスクリプトでコード書いてないから書式が…(汗)

参考:Symmetric key encryption by GnuPG

zsh で TAB 補完時に大文字小文字無視
2006-06-23-2 / カテゴリ: [unix][shell] / [permlink]

compctl -M 'm:{a-z}={A-Z}'
でGo

Linux だとあんまり大文字使わないんだけど、windowsだと何故か割と大文字使うんだよね…

ターミナルソフトのタイトルバーにCWD(とか)を表示する
2005-09-13-2 / カテゴリ: [linux][cygwin][shell] / [permlink]

bash の場合
export PROMPT_COMMAND='echo -ne "\033]0;${USERNAME}@${HOSTNAME}: ${PWD}\007"'
set-language-env の設定だけど :D

PROMPT_COMMAND は bash の環境変数で、bash がプロンプトを出す前に実行されるもの
Bash Prompt HOWTO

んーと、bash の PS1 とかで有効な \w とかが使えないので、ホーム以下のパスは ~ を使いたければ
export PROMPT_COMMAND='echo -ne "\033]0;${USERNAME}@${HOSTNAME}: `pwd|sed -e s#$HOME#~#`\007"'
かな。


追記
pwd|sed にすると、cygwin だと結構重いのでやめました。

zsh/tcsh で、「以外」のワイルドカード
2005-08-29-4 / カテゴリ: [unix][linux][shell] / [permlink]

'^'を入れると、指定以外のリストになる。
ls ^*.pl
末尾が .pl 以外のリスト

     An entire glob-pattern can also be negated with `^':

         > echo *
         bang crash crunch ouch
         > echo ^cr*
         bang ouch

     Glob-patterns which do not use `?', `*', or `[]' or which
     use `{}' or `~' (below) are not negated correctly.
man tcsh(1) より
{} との併用は不可なのか。

bash は使えないのね…

zshを使ってコマンドを指定回数連続実行
2005-04-22-2 / カテゴリ: [unix][linux][shell] / [permlink]

% zsh -c "repeat COUNT command"
ベンチ計ったりするには
% time zsh -c "repeat 100 command >/dev/null"
見たいな感じで

tcsh,bash,zsh(TABが補完キーのシェル)でタブ(\t)の入力
2005-03-09-2 / カテゴリ: [unix][linux][shell] / [permlink]

C-v のあと、TAB を押下する
grep なんかで \t を見つけたいとき使え

zsh のエイリアスでパイプ指定
2005-03-02-5 / カテゴリ: [unix][linux][shell] / [permlink]

alias -g L='| lv'
alias -g H='| head'
alias -g T='| tail'
alias -g W='| wc'
alias -g G='| grep'
これで
% command L

% command | lv
と同じことになる

zsh の TAB 補完設定
2005-03-02-4 / カテゴリ: [unix][linux][shell] / [permlink]

compctl -c man which
compctl -/ cd rmdir
compctl -u su chown

zsh の最強 TAB 補完設定
2005-03-02-3 / カテゴリ: [unix][linux][shell] / [permlink]

$ autoload -U compinit
$ compinit
とする
やや重い

bash の TAB 補完で補完対象を特定のものにする
2005-03-02-2 / カテゴリ: [unix][linux][shell] / [permlink]

.bashrc に
complete -c {man,which}  # man,which の引数は command に
complete -d cd           # cd の引数はディレクトリに
complete -u {su,chown}   # su,chown の引数はユーザ名に

zsh 履歴をインクリメンタルサーチ
2005-01-21-1 / カテゴリ: [linux][shell] / [permlink]

C-r で入力待ち、そのまま文字をタイプする。同じ文字をサーチする場合は続け
て C-r をタイプする。検索対象は入力文字の先頭からということはなく、全てが
対象。
C-r pl で、*.pl の実行履歴、みたいな。
正規表現で ^grep な検索もOK
http://www.namazu.org/~satoru/unimag/3/

bash でも使えた…

環境変数の一時変更(sh/csh 関係なし)
2004-12-08-1 / カテゴリ: [unix][shell] / [permlink]

$ env KEY=val command

csh/tcsh ^D ログアウト制御
2004-10-19-1 / カテゴリ: [unix][linux][shell] / [permlink]

% set ignoreeof   ^D でログアウトできなくする
% unset ignoreeof ^D でログアウトできるようにする

Perl コマンドラインオプション -a … split モード
2004-09-13-1 / カテゴリ: [perl][shell][command] / [permlink]

$_ をスペースで区切って@Fにいれる。

シェルスクリプトで標準入力からの値入力取得
2004-08-20-1 / カテゴリ: [unix][shell] / [permlink]

read シェル変数
「[Enter]おすまで停止させる」にもつかえるよ

指定複数ファイルを一気に nkf
2004-06-10-2 / カテゴリ: [linux][shell][command] / [permlink]

for i in *; do nkf -ed $i > tmp; \mv tmp $i; done
カテゴリ: shell / 1 2 次ページ

最終更新時間: 2013-05-02 16:12