ubuntu 小ネタ集

ubuntuの小ネタ集

ファイル(ファイルマネージャ)のアドレスバーをテキスト形式にする

ファイルマネージャのアドレスバーが気持ち悪いので、見慣れたテキスト形式にしたい場合は以下のコマンドで。

gsettings set org.gnome.nautilus.preferences always-use-location-entry true

[!NOTE] 一時的にテキスト形式にした場合は「CTRL+L」

これまでに apt でインストールしたパッケージを調べる

apt でインストールされたパッケージ一覧は apt list --installedで取得できるけど、
自分で入れたのか関連パッケージで入ったのかがイマイチよくわからないのと、
実際にどんなパッケージ名でインストールすれば良いのかが分かりにくいので。

zgrep -1 install `ls -tr /var/log/apt/history.log*`

lsのオプションで-trを指定しているのでタイムスタンプが古いファイルから検索される(つまりapt実行の古い順)。
コマンドラインの一つ前の行に実行日時、一つ後ろの行に実行者が入っているので、これを目安に必要な情報をピックアップできる。
“install” をgrepで引っかけているので、たまに余計なのも引っかかるけど、ご愛敬ということで(笑)。

アンインストールしたのは別途調べないといけないけど…
removeとpurgeで引っかければいけるかな?
こんな感じ。

zgrep -1 -e remove -e purge `ls -tr /var/log/apt/history.log*`

[!NOTE] 現在インストール済みパッケージを知りたいだけなら以下でも大丈夫。

apt list --installed

手動でインストールしたものだけ取得したい場合は以下(つまり、関連パッケージとしてインストールされたものを除く)。

apt list --installed | grep -v 自動

ファイルがどのパッケージに含まれているかを調べる方法

コマンドを実行して○○が見つからないと言われて、どのパッケージをインストールすれば良いのか分からないときに。

最初にapt-fileをインストール

sudo apt install apt-file

実行前に以下でパッケージ情報を更新しておく。そんなに頻繁にやらなくても良い。

sudo apt-file update 

で、以下で検索。

apt-file search ○○

逆にパッケージに含まれるファイル一覧を取得したい場合は以下。

apt-file show <パッケージ名>

リソースモニタツール netdataのインストール

ツールのインストール

sudo apt update
sudo apt install netdata

設定変更

リモートマシンからブラウズできるように、/etc/netdata/netdata.confbind socket to IPの設定値を0.0.0.0 に変更する。

サービスの再起動

設定を変更したので再起動。

sudo systemctl restart netdata 

あとはブラウザで対象マシンのポート19999 にアクセスすればOK

http://192.168.XXX.XXX:19999

VirtualBox上のUbuntuとclipboardの共有がおかしくなったときの対処方法

VirtualBox上のUbuntuでclipboardの共有の動作がおかしくなることがある。
その場合、以下で対応可能。

ps aux | grep 'VBoxClient --clipboard' | grep -v grep
pkill -f 'VBoxClient --clipboard'
/usr/bin/VBoxClient --clipboard

これで正常にclipboardの共有ができるようになるはず。

ubuntu 18.04 で IPv6を無効にする方法

ubuntu 18.04 では IPv6を無効にする方法には、以下の手順で行う。

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6  =  1
sudo sysctl -p
#!/bin/bash
/etc/init.d/procps restart

exit 0
sudo chmod 755 /etc/rc.local

これで起動の度にIPv6は無効になる。

参考: Ubuntu 18.04 で ipv6 を無効にする

lessのオプション

lessのオプションで便利そうなもの一覧。

デフォルトのオプションを指定するには .bachrc に以下のように追加しておけば良い。

export LESS="-iMR"

lsやgrepの出力をlessしたときも色付きで表示する方法

ls --color=always | less -R
grep --color=always if .bashrc | less -R

.bashrc に 以下を設定しておくと便利かと思ったけど…
ただし、同時にlessのデフォルトオプションに-R を指定しておかないと悲しいことになる。
でも、ファイルにリダイレクトしたときに悲しいことになるので、やめておいた方が無難…

export LS_OPT='--color=always' 
export GREP_OPT='--color=always' 
alias ls='ls ${LS_OPT}'
alias grep='grep ${GREP_OPT}'

ファイルの”START” から “END” までを抽出する

sed -n "/START/,/END/p" «ファイル名»

bashスクリプトのコメント

ブロックコメント

ブロックコメントそのものは存在しないが、ヒアドキュメントを応用すれば出来る。
具体的には、コメント部分を<<キーワードキーワードで囲む。

<< キーワード
~~コメント~~
キーワード

例えばこんな感じ。

<< __BLOCK_COMMENT__
~~コメント 1 行目~~
~~コメント 2 行目~~
・・・・・・
~~コメント n 行目~~
__BLOCK_COMMENT__

インラインコメント

コマンドの一部を一時的に削除したい場合など、インラインコメントを使用したい場面がある。
例えば、C言語でfunc(~/* コメントアウト */,~)とする場面のこと。
これをbashスクリプトで実現するには、コマンド置換を応用する。
コマンド置換とは、コマンドを`` で囲んでその出力を別のコマンドのパラメータとする方法のこと。
具体的には、行コメントをコマンド置換で挿入する。
置換されたコマンドはコメントなので結果なにもせずに返ってくるので、その部分は無視される。

ただ、この書き方はとても汚いので、一時的使用にとどめておくのがベター。

command arg1 arg2 `#コメントアウト` arg3 ・・・

例えばこんな感じ。

ls  `#-l`  /etc

シェル変数の設定など、コマンドの前にコマンド置換があるとうまく動かない場合は、以下のようにコマンド置換の後ろに;を挿入する。

`# comment`;var=hoge

bashのファイル名補完の区切り文字を追加する方法

シチュエーション

たとえば、HOGE_PATH=/path/to/hogeと入力したいとき、途中でファイル名の補完処理ができない。
今まで、一旦スペース挟んで入力して、戻ってスペース削除するという手順を踏んでいて、
これが地味にストレス…

ソリューション

~/.bashrc に以下の1行を追加

IFS='«追加したい文字»'$IFS

シチュエーションのように=を区切り文字として追加したい場合は、こんな感じ

IFS='='$IFS
ちなみに

設定内容を確認するには以下。

echo -n "$IFS" | od -c
ちなみに2

デフォルトの設定に戻すには以下。 先頭に$で、シングルクォート' で囲むこと。

IFS=$' \t\n'
言い訳の先取

なんか悪影響出たら元に戻そう。。。

端末(ターミナル)ウィンドウの起動方法によって初期処理を変更する

端末(ターミナル)ウィンドウの環境変数を設定してbashを起動するプロファイルを作成する

環境変数によって.bashrcの処理を変更する

~/.bashrc に環境変数に応じた処理を追加

if [[ ${«設定した環境変数»} = "«期待する文字列»" ]]; then
    «環境変数に応じた処理»
fi

たとえば、こんな感じ。

if [[ ${myUseSetting} = "OPENVINO" ]]; then
    source /opt/intel/openvino/bin/setupvars.sh
    echo "========== bash for openINO =========="
fi

試してみる。
以下のコマンドを実行。

gnome-terminal --profile=«作成したプロファイル名»

たとえば、こんな感じ。

gnome-terminal --profile=openVINO

起動した端末(ターミナル)ウィンドウで追加した初期処理が実行されていることを確認。
通常起動の端末(ターミナル)ウィンドウで追加した初期処理が実行されていないことも確認した方がいいかも。

キーボードショートカットで作成したプロファイルの端末(ターミナル)を起動する

デスクトップで設定したキーの組み合わせを押して起動することを確認

メニューに作成したプロファイルの端末(ターミナル)を起動するアイコンを追加する

以下の手順で新しい.desktopファイルを作成すればよい。

ちなみに、作成したアイコンをデスクトップに置くことも可能(その他の物でもできるけど)

カレントディレクトリ下のファイルの全角文字等を抽出する

grep -r -n -v '^[[:cntrl:][:print:]]*$' .

GUIで設定した項目の変更キーの確認

設定変更の前後でdconfコマンドで値一覧を取得し、その差分を確認することで変更キーが分かる。

dconf dump / > before.txt
# 設定変更
dconf dump / > after.txt

diff -u before.txt after.txt

キーが分かれば、以後は以下のコマンドで設定変更できる。
スクリプトなどに記載する場合に便利。

gsettings set «キー» «値»

ディストリビューションのバージョン確認

以下のコマンドで確認できる。

lsb_release -a

こんな感じで表示される

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

最初の1行は特に気にしなくて良い。
LSB(Linux Standard Base)がインストールされていると、もっと細かい情報が表示されるらしい。