Linuxコマンド(ターミナル)ティップス

dpkg

ビルドしたdebianパッケージをインストールする際などに使用。

Install a package

$ sudo dpkg -i DEB_PACKAGE

Remove a package

$ sudo dpkg -r PACKAGE_NAME

rpm2cpio / cpio

rpmパッケージからの中身抽出

Ex)

$ rpm2cpio systemd-rpm-macros-245-1.fc33.noarch.rpm | cpio -idmv
./usr/lib/rpm/fileattrs
./usr/lib/rpm/fileattrs/sysusers.attr
./usr/lib/rpm/macros.d/macros.systemd
./usr/lib/rpm/macros.d/macros.sysusers
./usr/lib/rpm/sysusers.generate-pre.sh
./usr/lib/rpm/sysusers.prov

ターミナルのロケールを日本語から英語に変更。

ホームディレクトリの ~/.bashrcファイルに以下を追加します。

export LANG=C

ロケールの確認

$ locale
LANG=C
LANGUAGE=ja:en
LC_CTYPE="C"
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_COLLATE="C"
LC_MONETARY=ja_JP.UTF-8
LC_MESSAGES="C"
LC_PAPER=ja_JP.UTF-8
LC_NAME=ja_JP.UTF-8
LC_ADDRESS=ja_JP.UTF-8
LC_TELEPHONE=ja_JP.UTF-8
LC_MEASUREMENT=ja_JP.UTF-8
LC_IDENTIFICATION=ja_JP.UTF-8
LC_ALL=

日本語でのディレクトリ表記などが文字化けするので、日本語表記が必要な場合は、コマンド前にLANG=ja_JP.UTF-8を追加すること。
ex)

$ LANG=ja_JP.UTF-8 sudo apt update
or
$ LANG=ja_JP.utf8 sudo apt update

ターミナルによるQRコード生成

$ printf "https://ficus.myvnc.com" | curl -F-=\<- qrenco.de

ficusonline-qrcode

/dev/urandomファイルによる乱数生成(抽出)

head, trコマンドとの組合せにより乱数生成(抽出)

文字列レンジ指定:A-Z,a-z,0-9 文字数40

$ RAMDOM_1=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40)
$ echo $RANDOM_1
l3DX4F3yh5ZxvQt5AGE9ndiYxvfUlJvpXY2NrTkJ

文字列レンジ指定:a-f,0-9 文字数128

$ RANDOM_2=$(head /dev/urandom | tr -dc a-f0-9 | head -c 128)
$ echo $RANDOM_2
92169f319761ab50531e07ad814c193f4e5af5c8e247dc82918927e718b69c3796d943ff2707e91de20b67cd95b130e35972f5f488843744384c98e1d29eae83

crontab

起動アプリ・シェルコマンドのスケジュール設定

$ sudo crontab -e
       # use /bin/sh to run commands, no matter what /etc/passwd says
       SHELL=/bin/sh
       # mail any output to `paul', no matter whose crontab this is
       MAILTO=paul
       #
       CRON_TZ=Japan
       # run five minutes after midnight, every day
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       # run at 2:15pm on the first of every month -- output mailed to paul
       15 14 1 * *     $HOME/bin/monthly
       # run at 10 pm on weekdays, annoy Joe
       0 22 * * 1-5    mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
       23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
       5 4 * * sun     echo "run at 5 after 4 every sunday"

以下5つのfieldによりスケジュールを設定

          field          allowed values
          -----          --------------
          minute         0-59
          hour           0-23
          day of month   1-31
          month          1-12 (or names, see below)
          day of week    0-7 (0 or 7 is Sunday, or use names)
  • /etc/crontab : メインシステムのcrontabファイル
  • /var/spool/cron/ : rootを含むユーザ定義のcrontabファイル格納ディレクトリ($ sudo crontab -e
  • /etc/cron.d/ : 導入アプリなどのcrontabファイル格納ディレクトリ

以下5つのフィールドではなく @ 表記によるスケジュール設定

   @reboot    :    Run once after reboot.
   @yearly    :    Run once a year, ie.  "0 0 1 1 *".
   @annually  :    Run once a year, ie.  "0 0 1 1 *".
   @monthly   :    Run once a month, ie. "0 0 1 * *".
   @weekly    :    Run once a week, ie.  "0 0 * * 0".
   @daily     :    Run once a day, ie.   "0 0 * * *".
   @hourly    :    Run once an hour, ie. "0 * * * *".

ネットワークソケットの確認コマンド

ss(簡易)

ex)

$ sudo ss -tlpen | grep 7443

netstat(詳細)

ex)

$ sudo netstat -tupln | grep -e freeswitch -e 7443

Sed .*

https://www.gnu.org/software/sed/manual/sed.html

$ cat file
six
asdf
one two six
one isix
boo
$ sed 's/.*six.*/fault/'  file
fault
asdf
fault
fault
boo