- 投稿日:2020-09-23T22:35:04+09:00
[Linux] もっと早く知りたかったショートカットキー
※この記事はプログラミング初心者に向けて書いております。
はじめに
ショートカットキーって便利ですよね。みなさんもショートカットキーをよく使われていると思います。
通常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)`'::の後に検索したい文字を打ちます。
最後に
以上7個のショートカットキーを紹介しました。他にも便利なショートカットがあるみたいなので、より効率を求める人は調べてみるといいかもしれませんね。
- 投稿日:2020-09-23T19:21:46+09:00
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
設定をネットワークアドレスで読み込ませるケースなので使用するソフトウェアによっては意図した通りに読み込まないかもしれません。no_proxyはOSではなくソフトウェアレベルでCIDR形式を解釈してくれるかが異なるので鬼門ですね
— ぐるっと? (@grugrut) September 23, 2020環境
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
- 投稿日:2020-09-23T17:09:52+09:00
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 ~]#
- 投稿日:2020-09-23T16:57:18+09:00
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
は実行ファイル名です。
- サービスを再読み込みする
sudo systemctl daemon-reload2.サービスの自動起動を有効化する
sudo systemctl enable udp_receiver3.サービスを開始する
sudo systemctl start udp_receiver4.サービスの動作状況を確認する
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 wait5.Raspberry Piを再起動する
sudo reboot6.再起動後プロセスが自動起動しているか確認する
sudo ps -xまた、今回はUDPポート8888を開いているのでそれも確認します。
sudo lsof -i:88887.プログラムを停止する
sudo systemctl stop udp_receiver8.自動起動を無効化する
sudo systemctl disable udp_receiver参考記事
https://qiita.com/KEINOS/items/f3e6b3064b0cbe35fd03
https://tomosoft.jp/design/?p=11697