コマンドを実行するときに コマンドの前に echo を付けて試してみることがあります。
$ export testfile=dummy.txt $ echo rm $testfile rm dummy.txt
この後、echo を消して実行するわけですが !* を使うことで 同じことを簡単に実行できます。
$ export testfile=dummy.txt $ echo rm $testfile rm dummy.txt $ !* rm $testfile rm: cannot remove `dummy.txt': No such file or directory
!* には、前に実行したコマンドの「コマンドより後ろのワード」が格納されるため echo の後ろから実行されるわけです。
!^ だと「コマンドより後ろのワード」の先頭、 !$ が「コマンドより後ろのワード」の最後になります。
$ echo 1 2 3 4 5 1 2 3 4 5 $ echo !^ echo 1 1 $ echo 1 2 3 4 5 1 2 3 4 5 $ echo !$ echo 5 5
ちなみに前に実行したコマンド全体は !! に格納されるため !! だけだと、前のコマンドを再実行になります。
$ echo 1 2 3 4 5 1 2 3 4 5 $ !! echo 1 2 3 4 5 1 2 3 4 5
ちなみに、この「コマンドより後ろのワード」はパイプやリダイレクトも含みます。
$ echo 1 2 3 4 5 > /tmp/test.txt $ echo !$ echo /tmp/test.txt /tmp/test.txt
使うときは、ちょっとだけ注意です。
bash では、次のようにリダイレクトだけで 0バイトのファイルを作ることができるようです。
これまではコロンリダイレクトとか /dev/null を使ってました。
$ : > zero.txt $ cat /dev/null > zero.txt
リダイレクトだけでいけます。
$ > zero.txt $ ls -l zero.txt -rw-r--r-- 1 xxxxxx xxxxxx 0 2015-08-19 21:24 zero.txt
シンプルですが、書き間違いと思われそうですね。
手作業中に使用するのには便利で良さそうです。
Excel で範囲の入力中に、カーソル移動して 数字だけを変えたいときがあります。
そのままカーソルキーを押すと下のように 別のセルを選択してしまい 入力欄の中を移動することができません。
ここは、通常のセルの入力と同じように [F2] キーを押すと 編集モードになります。
これでカーソル移動ができるようになります。
@ITなど、ブラウザ上で文字を選択した時に背景色が変わるサイトがあります。 今回は、それをやってみます。
CSS で、selection という擬似要素を指定します。 IE でも 9 以降は対応しているみたいですね。
こんな感じです。
::-moz-selection { background-color: red; color: white; } ::selection { background-color: red; color: white; }
Firefox には プレフィックスを付ける必要があります。 あと、次のようにカンマで続けて書くと片方がエラーになって無効になるので 同じ内容ですが 2につ分けて書く必要があります。
これで選択した文字の背景色が変わります。
(見本用に画像になっています)
ただ背景色を変えるだけじゃなくて 仕掛けを作ることもできます。
次の文字列を選択してみてください。 対応しているブラウザであれば、文字が浮かび上がります。
eI3kOyrpWJQguTQDtftV7w8N2fkHhRKrdTqZeRY6MRNPy2i7J zGha1UFB9gw821cQz3zVuGSfk91KUq56IeqUdjUvuMIZSBZoS BU5qsGUUfMHq29tkUfGvvhnYy7fofDNAlMaApA141GLqfgasB AqNHo6IznJEF7yLmnhCnGx33TdeEFp1QAZawGPjlvFZk23ViR xIadWlDZ2gRDHkkhRxHNWgjKvghsbTSlxD1eLZAKiFYzef6gQ DiQNwYvhPc0VDlRZDVN1s0I46UlkOWA8Q52MY8jXFGhvWURdl 7VrrQ9pMARdguzhRMM30dAJ6vgAvFPYyFu78xIYekwvSUSoUV rwZNaO7q5L2UXEQSEDSTsJzDqZTkPsLF3qlJwVNk9QzIGsKe1 ZtKT7ZK9aEQCoexVfazYzaAEt66zgz0dTQ026kmTNoXtPZpZf 6YuU3tF6Ltz1H4TRFrl2VLSKbbhJ8wyhNBKCIY5nz3kWuUm9d XSz0HPcFj7Rt6kutpTd3WzAd2xdBtwOWDmsb8w68ksFNYQuEB t5i9Dxnmpy130oJbWUzqanVR281iwEXdd0Nk3COyFPtqsMApG y8boq6xvmFrle0HcAaMzxNw7ty4nOYztWqAofnGs6Uy23V9Xf sfs7VReM8zhTNfzfKhW6CG9jV0a9kwp7ts8gWKItKJ97ijcsw utTgn39HQqERZHBskYzR3CNJYUtfmRl9nk835duoVBPeKsSQl ffIuPzWsHU5bOn3NizzK25ZFYLankAURekF8E4zBcpKqR6vCA FkEi5YuyDuuOm3Z8L6bvugc6f0D6zMEbRukiBqgr6oJLTEiJE
対応しているブラウザじゃない人はゴメンなさい。
SQLite で作成したデータベースのファイルが SQLite のどのバージョンで作成したかですが file コマンドで確認することができました。 (Ubuntu10.04環境)
$ file database.sqlite2 database.sqlite2: SQLite 2.x database $ file database.sqlite3 database.sqlite3: SQLite 3.x database
おひさしぶりです。
cowsay コマンドでランダムに絵柄を変えたいと思っていたんですが、 そのためにはランダムで絵柄を指定する必要があります。
絵柄の一覧は次のようなコマンドで取得できます。
$ cowsay -l | grep -v "^Cow"
ここから、ランダムに 1行取得します。 最初は Bash の配列を使って 次のようにやってました。
$ LIST=(`cowsay -l | grep -v "^Cow"`) $ FMT=${LIST[$(($RANDOM % ${#LIST[@]}))]}
1行でできないかと調べていたら sort コマンドには -R オプションが あったりすることを知りました。
次のようになりました。
$ cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | sort -R | head -n 1
cowsay と fortune も入れて、これで完成です。
$ fortune | cowsay -n -f `cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | sort -R | head -n 1`
・・・と思っていたら、shuf なんてコマンドもあるようで 次のようになりました。
$ fortune | cowsay -n -f `cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | shuf -n 1`
色々とありますね。
テキスト処理は覚えておくと、開発中のちょっとしたことに使えて便利なので 遊びながら覚えていきたいものです。