Linux関係(主にUbuntu)

  • ホームディレクトリの名称(デスクトップ等)を日本語から英語に変更する
  • ディレクトリ内を検索する
  • VSCodeのインストール
  • Ubuntu 20.04LTSで古い認証方法(Diffie-Hellman key exchange sha1)を有効にする
  • Ubuntuにおけるbash_profileについて
  • ImageMagick6でepsやpsファイルを扱えるようにする
  • ターミナルを開き直さずに~/.bashrcの変更内容を反映する
  • lsで特定の名前のついたファイルを検索する
  • ~/.ssh/configに接続先を登録する

  • ホームディレクトリの名称(デスクトップ等)を日本語から英語に変更する

    LANG=C xdg-user-dirs-gtk-update
    

    ウィンドウが表示されるので,"Don't ask me this again"にチェックした後"Update Names"をクリック。

    ディレクトリ内を検索する

    find ファイル名

    VSCode(Visual Studio Code)のインストール

    Microsoft提供のテキストエディタ。(個人的には)VimやEmacsよりかなり使いやすい。
    Snapからインストールする(Ubuntu 20.04LTSではデフォルトで使える)。

    sudo snap install --classic code

    *Snapが使えない場合,ここを参考にインストールする。

    Ubuntu 20.04LTSで古い認証方法(Diffie-Hellman key exchange sha1)を有効にする

    Ubuntu 20.04LTSだと古い方式がデフォルトで認証されず,古いサーバにログインできないことがある。 しかし,~/.ssh/configに以下の設定を書き足すことでログインできるようになる。

    Host サーバ名
    KexAlgorithms diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

    *サーバ名は適切な名前に置き換えること。

    Ubuntuにおけるbash_profileについて

    Ubuntuでは(Bashがデフォルトの場合)ログイン時に実行される~/.bash_profileや~/.profileがデフォルトでは実行されない。 したがって,環境変数などの設定は基本的に~/.bashrcに書くようにする。

    ImageMagick6でepsやpsファイルを扱えるようにする

    インストール直後のImageMagick(バージョン6以上)でeps等をjpg等に変換しようとすると以下のエラーが表示される。

    convert -density 200 -rotate +90 -flatten hoge.ps hoge.png 
    # convert-im6.q16: attempt to perform an operation not allowed by the security policy `PS' @ error/constitute.c/IsCoderAuthorized/408.
    # convert-im6.q16: no images defined `japan.png' @ error/convert.c/ConvertImageCommand/3258.
    

    これは,ImageMagickのセキュリティ設定により,デフォルトではps形式やeps形式の処理を禁止しているためである。
    これらを処理するためには,/etc/ImageMagick-6/policy.xmlのpsやepsに関する権限(rights)を以下のとおり変更する必要がある。
    *policy.xmlを変更する際には,管理者権限で(i.e., スーパーユーザーやsudoを使って)テキストエディタを開くこと。

    # /etc/ImageMagick-6/policy.xml 90行目付近
    <!-- disable ghostscript format types -->
    <policy domain="coder" rights="read|write" pattern="PS" />  <!-- rightsを"none"から"read|write"に書き換える -->
    <policy domain="coder" rights="none" pattern="PS2" />
    <policy domain="coder" rights="none" pattern="PS3" />
    <policy domain="coder" rights="read|write" pattern="EPS" /> <!-- rightsを"none"から"read|write"に書き換える -->
    <policy domain="coder" rights="none" pattern="PDF" />
    <policy domain="coder" rights="none" pattern="XPS" />
    

    policy.xmlを保存した後,先程のconvertコマンドを実行すると正常に変換が行われる(はず)。

    ターミナルを開き直さずに~/.bashrcの変更内容を反映する

    ~/.bashrcはターミナルを起動時にのみ読み込まれる。したがって,~/.bashrcを保存したらすぐその変更が反映されるわけではない

    ターミナルを再起動せず(開き直さず)に変更内容をターミナルに反映したい場合,sourceコマンドを実行する。

     source ~/.bashrc 

    lsで特定の名前のついたファイルを検索する

    lsの標準出力をパイプでgrepに渡すことで,特定の名前のついたファイルのみのリストを表示する。

    ls | grep 特定の名前

    例えば,lsの結果からjpgファイルのみを出力したい場合は

    ls | grep .jpg
    
    # hoge.jpg
    # huga.jpg
    

    とすれば,ディレクトリ内にあるファイルの内jpgファイルのみを抽出できる。

    ~/.ssh/configに接続先を登録する

    SSH先のアドレスが複雑だったりログインする際に色々なオプションを付けりする必要がある場合,コマンドが長くなってしまう。

    そんなときは~/.ssh/config (/home/ユーザー名/.ssh/config)に接続先情報を登録してしまうと便利。接続先の情報を以下のように登録する。

    Host hoge-type1
        Hostname hogehoge.hugahuga.nagoya-u.ac.jp
        User hogege
        IdentityFile ~/.ssh/keyhoge
    

    と入力して保存しておくと,次回から

    ssh -X hoge-type1

    とするだけでリモート先に公開鍵認証を用いて入ることができる。これは

    ssh -X -i ~/.ssh/keyhoge hogege@hogehoge.hugahuga.nagoya-u.ac.jp

    と入力してログインすることと同じである。