LoginSignup
38
37

More than 5 years have passed since last update.

Shell Tips

Last updated at Posted at 2014-04-26

はじめに

思いつく限りシェル(コマンド)で使える技を並べていきます。補完の方よろしくお願いします。

空白を削除する

$ tr -d ' '

出力結果を表示しないようにする

$ echo test > /dev/null 2>&1

改行も含め出力する

$ cat << EOF
a

b

c
EOF

ちなみに、出力結果は、以下のようにして保存できます。

$ cat << EOF > ~/hoge.txt
a
b
c
EOF

bashで現在地のパスを取得する

$ dir=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)

zshで現在地のパスを取得する

$ dir=${0:a:h}

変数のクォーテーションなどを取り除く

$ com=test
$ com="eval echo '$'$com"

curlで連続保存する

$ curl -O https://hoge.txt -O https://huga.txt

curlをサイレントにする

$ curl -s -O https:/hoge.html

sedで連続置換する

$ sed -e 's/hoge/huga/g' -e 's/huga/hugahuga/g'

sedで上書き保存する

$ sed -i "" -e "s/hoge/huga/g" test.txt

-iはバックアップを作ります。作りたくないので、nullにしています。

通常なら-ieでいけたと思っていたのですが、Macでは上手く行かなかったような気がします。

jqで括弧を取り除く

$ echo {"hoge":"huga"} | jq -r .

改行をスペースに変換する

$ perl -p -e 's/\n/ /g'

出力しない一括設定

#!/bin/zsh
exec > /dev/null 2>&1

ls -a .
pwd

区切りを設定し、値を取得する

$ echo ho,ge,hu,ga | cut -d ',' -f 3

この場合、huが取得されます。

行末の改行コードを削除する

$ ruby -0777 -ne 'print $_.chomp("")'

パス内から優先順位が高いものを実行する

#!/usr/bin/env ruby

envがそうです。

指定した行を抜き出す

cat test.txt | awk 'NR==3'

test.txt3行目を抜き出します。

引数によって処理を変える

#!/bin/zsh

if (( ${#*} == 2 )); then
    echo $1 $2
else
    echo no
f

$2です。

ファイルの有無によって処理を変える

#!/bin/zsh

sc="../script"
if [ -e $sc/path.sh ];then
    echo ok
else
    echo no
fi

-eです。

結果によって処理を変える

#!/bin/zsh

if ls ~/test.txt;then
    echo ok...test.txt
else
    echo no...test.txt
fi

または、以下の様な書き方もできます。

if [ $# == 0 ]; then

if [ $# -eq 0 ]; then

何もしないコマンド

:

タイムスタンプの変更

touch *

以外の文字を検索する

$ echo "test ok hoge huga" | grep -v -e zsh

一致した行の上下を含める

$ grep -a -B 25 -A 100 

-Aが下で-Bが上です。

重複していないものを抜き出す

$ sort test.txt | uniq -u

キーの入力待機

#!/bin/zsh

echo enter!
read key

前のコマンドの引数以外を抜き出す

$ !:-

前のコマンドの引数を実行する

$ !$

前のコマンドの引数ヘッダを抜き出す

$ !$:t

xargsを任意の位置に置く

find . -name "*.rb" -type f | xargs -I {} echo Hello, {} !

追記

出力しないようにする

LINK

$ echo test &>/dev/null
38
37
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
37