20200923のLinuxに関する記事は4件です。

[Linux] もっと早く知りたかったショートカットキー

※この記事はプログラミング初心者に向けて書いております。

:runner: はじめに

ショートカットキーって便利ですよね。みなさんもショートカットキーをよく使われていると思います。
通常5秒かかる動作をショートカットキーを使うと1秒で済むなんてこともありますよね。
ほんの数秒の短縮だとしても、今後コードを書いていくことを考えると膨大な時間の節約に繋がります。
覚えるのは面倒くさいですが、初心者のうちにサクッと覚えてしまって、作業効率を上げていきましょう。
個人的にもっと早く知りたかったLinuxコマンドのショートカットを7つ選びました。
shellはbashです。

1.  「カーソルを行頭に」  control + a

※|←カーソルだと思ってください

$aaaaaa|

これが

$|aaaaaa

なんでプログラミングスクールで一番最初に教えてくれなかったのか謎。
矢印キーから卒業しましょう。

2.  「カーソルを行末に」  control + e

$|aaaaaa

これが

$aaaaaa|

長いコマンドでイライラすることが減るでしょう。

3.  「カーソルから行頭まで削除」  control + u

$123|45678

これが

$45678

行末から使えば全て削除できますね。

4.  「カーソルから行末まで削除」  control + k

$123|45678

これが

$123

便利ですね。

5.  「補完機能」  tab

$やら

これが

$やられたらやり返す。倍返しだ!

例えとしてどうなのか疑問ですがこんなイメージだと思ってます。

6.  「一つ前(後)のコマンド履歴を表示」  矢印↑or 矢印↓

さっき使ったコマンドをまた使いたい!
そんな時に便利です。

7.  「履歴を検索」  control + r

(reverse-i-search)`': 

:の後に検索したい文字を打ちます。

:speech_balloon: 最後に

以上7個のショートカットキーを紹介しました。他にも便利なショートカットがあるみたいなので、より効率を求める人は調べてみるといいかもしれませんね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxのno_proxyでネットワークアドレスを指定する

はじめに

Proxy環境下で検証を行っていると、特定の宛先への通信はProxyを経由して欲しくないと言う場面があります。
通信先が一意に決まっていれば良いのですが、特定のネットワーク宛の通信はProxyを通したくないと言うケースも発生するかと思います。
調べてみたところLinuxの環境変数no_proxyでネットワークアドレスを指定する方法が見当たらなかったので記事にさせていただきました。
※あまりに見つからなすぎて不安なので、間違い等あればコメントいただけると有難いです。

2020/09/23_補足(twitterで親切な方が教えてくれました)

Linuxに設定するno_proxyはあくまで環境変数でしかありません。
実際にはcurlやyumなどLinux上で動作するソフトウェアがno_proxyと言う環境変数を読み込んで動作する形になります。
なので書き方次第であるソフトウェアでは意図した通り認識してくれたけど別のソフトウェアでは意図した通り認識してくれない、なんてことも起こりえます。
以下の例で試したのはcurlによるHTTPリクエスト時にno_proxy設定をネットワークアドレスで読み込ませるケースなので使用するソフトウェアによっては意図した通りに読み込まないかもしれません。

環境

Ubuntu 18.04.4 LTS
(CentOS 7でも同様の動きでした)

設定方法

自身の環境では環境変数no_proxyで以下のようにネットワークアドレスを指定(192.168.2.0/24)することで、
そのネットワーク宛通信はProxyを経由せずに行うことができているように見えました。

~/.bashrc

export http_proxy=http://proxy.example.com:8080/
export https_proxy=http://proxy.example.com:8080/
export no_proxy=127.0.0.1,localhost,192.168.2.0/24

参考

自身が最初に見つけた以下の記事では上記とは異なる方法でネットワークアドレスを指定していました。
ただこのやり方だと対象が多くなった場合に引数が長すぎてvimなどが起動できなくなる問題が発生してしまいます。

no_proxy にネットワークアドレスとかワイルドカードを指定しても期待通りに動かない、でどうするかというお話
https://sechiro.hatenablog.com/entry/2013/08/06/no_proxy_%E3%81%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%A8%E3%81%8B%E3%83%AF%E3%82%A4%E3%83%AB%E3%83%89%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

RPMパッケージ内のファイル確認/展開方法について

利用シーン

  • rpmパッケージ内のファイルを確認したい場合。
  • rpmパッケージ内のファイルをインストールせずに取り出したい場合。

実行コマンド

  • rpm2cpio = cpioファイルに変換するコマンド
  • cpio = アーカイブファイルの操作を行うコマンド

    • [--list] = リスト表示
    • [-i] = 展開(標準入力からアーカイブファイルを受け取り展開:コピーインモード)
    • [-d] = ディレクトリ作成(展開時に必要なディレクトリが存在しない場合に自動的に作成)

実行例1:rpmパッケージにどのようなファイルが存在するか確認したい場合

[root@hogehoge ~]# rpm2cpio google-noto-sans-georgian-fonts-20141117-5.el7.noarch.rpm | cpio --list
./etc/fonts/conf.d/66-google-noto-sans-georgian.conf
./usr/share/appdata/google-noto-sans-georgian.metainfo.xml
./usr/share/fontconfig/conf.avail/66-google-noto-sans-georgian.conf
./usr/share/fonts/google-noto
./usr/share/fonts/google-noto/NotoSansGeorgian-Bold.ttf
./usr/share/fonts/google-noto/NotoSansGeorgian-Regular.ttf
124 blocks
[root@hogehoge ~]# 

実行例2:rpmパッケージ内のファイルをインストールせずに取り出したい場合

[root@hogehoge ~]# rpm2cpio google-noto-sans-georgian-fonts-20141117-5.el7.noarch.rpm | cpio -id
124 blocks
[root@hogehoge ~]# 
[root@hogehoge ~]# ls -l
drwxr-xr-x  3 root    root           19  5月 2 18:20 usr
drwxr-xr-x  3 root    root           19  5月 2 18:20 etc
[root@hogehoge ~]#
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Systemdを使ったRaspberry Piのプログラムの自動起動

はじめに

本記事の内容は、やってみてとりあえず上手くいった手順のみです。

対象アプリケーション

https://qiita.com/takmot/items/987b493afeeada75925f
上記記事のUDP受信プログラムを.NET Coreで作成し、ラズパイ向けにpublishしたものです。

このアプリケーションをラズパイ上の/home/pi/work/udp/publish/udp_receiverに配置しました。udp_receiverは実行ファイル名です。

SystemD Unit ファイル

PCでSystemD Unit ファイルを作成します。
ファイル名はudp_receiver.service[実行ファイル名].service)にします。
内容は以下です。

[Unit]
Description=UdpRecv
After=network.target

[Service]
User=root
Type=simple
ExecStart=/home/pi/work/udp/publish/udp_receiver

[Install]
WantedBy=multi-user.target

Descriptionは名前なので任意です。
ExecStartに実行するプログラムのパスを指定します。
あとはそのままで良いはずです。

自動起動設定

作成したSystemD Unit ファイルをFTPでRaspberry Piに転送。
SystemD Unit ファイルの格納パスは、/etc/systemd/system/になります。
sudo mv udp_receiver.service /etc/systemd/system/等で移動します。

あとは以下コマンドを実行していきます。※udp_receiverは実行ファイル名です。

  1. サービスを再読み込みする
sudo systemctl daemon-reload

2.サービスの自動起動を有効化する

sudo systemctl enable udp_receiver

以下、実行結果です。
image.png

3.サービスを開始する

sudo systemctl start udp_receiver

4.サービスの動作状況を確認する

sudo systemctl status udp_receiver

以下、sudo systemctl status udp_receiver実行結果です。

● udp_receiver.service - UdpRecv
   Loaded: loaded (/etc/systemd/system/udp_receiver.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-09-23 16:33:39 JST; 5s ago
 Main PID: 1240 (udp_receiver)
    Tasks: 8 (limit: 4915)
   Memory: 5.1M
   CGroup: /system.slice/udp_receiver.service
           mq1240 /home/pi/work/udp/publish/udp_receiver

 9月 23 16:33:39 raspberrypi systemd[1]: Started UdpRecv.
 9月 23 16:33:40 raspberrypi udp_receiver[1240]: Receive wait

5.Raspberry Piを再起動する

sudo reboot

6.再起動後プロセスが自動起動しているか確認する

sudo ps -x

以下のように起動していました。
image.png

また、今回はUDPポート8888を開いているのでそれも確認します。

sudo lsof -i:8888

以下、結果です。
image.png

7.プログラムを停止する

sudo systemctl stop udp_receiver

8.自動起動を無効化する

sudo systemctl disable udp_receiver

参考記事

https://qiita.com/KEINOS/items/f3e6b3064b0cbe35fd03
https://tomosoft.jp/design/?p=11697

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む