20210308のLinuxに関する記事は7件です。

Linux の Google Chrome / Chromium を快適にする

0. ねらい

  • いつでもダークモードを有効にする.
  • Linux でもHWデコードをさせる.

1. 環境

OS: Arch Linux
CPU: Intel Core i5 10210u
GPU: Intel UHD Graphics
Google Chrome 89.0.4389.82
Chromium 89.0.4389.82 ※Google のサーバとの同期機能がなくなった
で実施した.

2. Google Chrome の場合

2.1. Google Chrome の導入

yay -Syu google-chrome

# yay をインストールしていない場合
sudo pacman -S base-devel git
cd /tmp/ && git clone https://aur.archlinux.org/yay-bin && cd yay-bin && makepkg -si && rm -rf /tmp/yay-bin
# をして yay をインストールしてから google-chrome のインストールを行う.

2.2. 起動オプションの追記

/opt/google/chrome/google-chrome を書き換えて起動オプションを追記する.
/opt/google/chrome/google-chrome の最終行にある

exec -a "$0" "$HERE/chrome" "$@"

の最後に
--force-dark-mode --enable-features=WebUIDarkMode --use-gl=desktop
を追記して,

exec -a "$0" "$HERE/chrome" "$@" --force-dark-mode --enable-features=WebUIDarkMode --use-gl=desktop

とする.

オプションの意味

  • --force-dark-mode:ダークモードを有効にする.
  • --enable-features=WebUIDarkMode:Google Chrome の設定画面などでもダークモードを有効にする.
  • use-gl=desktop:レンダリング API を OpenGL にする.

2.3. Google Chrome の試験運用機能を有効にする

Google Chrome を起動し,アドレスバーに chrome://flags と入力する.すると,以下のような画面が現れる.
image.png
ここで設定を変更できる.

変更する設定

GPU が対応していればこれで動画再生支援が有効になるはずです.

3. Chromium の場合

3.1. Chromium の導入

sudo pacman -Syu chromium

3.2. 起動オプションの追記

~/.local/share/applications/chromium.desktop ← Google Chrome と方法が違う!
を書き換えて起動オプションを追記する.
~/.local/share/applications/chromium.desktop 内にある 全ての

Exec=・・・

行の末尾に
--force-dark-mode --enable-features=WebUIDarkMode --use-gl=desktop
を追記する.

以下 Google Chrome の場合と同じなので 2.3 を参照すること.

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

久しぶりにKaliをアップデートしようとしてエラー(EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository)になった時やったこと

リポジトリキーの期限切れに関するGPGエラーに対処する

以下サイトを参考に、
参考:しばらくの間Kaliインストールを更新しなかった場合(tsk2)、リポジトリキーの期限切れに関するGPGエラーが表示されることに注意してください(ED444FF07D8D0BF6)

以下コマンドでアップデートが実行できた。

wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add
sudo apt update
sudo apt full-upgrade -y
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ファイルのバックアップ時に日付をつける(2回目実行時は時間秒数を追加) 〜 Linux シェルスクリプト 

初めましてshoです。
今回はとあることがキッカケで以下の処理を目的とするシェルスクリプトを作成いたしました!

・任意のファイルを日付つきでバックアップする(cpコマンド)
・同じ日に同じファイルのバックアップがあった際は時間、秒数を追加してバックアップする
・実行時は実行内容の表示

簡単なコードなので実用性は低いとは思います。もしアドバイス等何かあればコメントいただけると嬉しいです。

(※学習記録やメモ書き目的で始めました。ほぼ初学者レベルなので理解が浅いところや誤りがあるかと思いますがよろしくお願いします。またアドバイス等コメントいただけるとすっごく嬉しいです。早く先輩方のお力になれるよう精進します。)

とりあえずシェルスクリプトの中身

#!/bin/sh

file_name="$@"
backup_file_name=${file_name}.$(date +%Y%m%d)

if [ ! -e ${backup_file_name} ]
then
 cp -pv ${file_name} ${file_name}.$(date +%Y%m%d)
else
 cp -pv ${file_name} ${file_name}.$(date +%Y%m%d_%H%M%S)
fi

実行結果

#ls
file1 file2
#backup-shell file1
`file1' -> `file1.20210307'
#ls
file1  file1.20210307  file2
#backup-shell file1
`file1' -> `file1.20210307_165426'
#ls
file1  file1.20210307  file1.20210307_165426  file2

解説!

照らし合わせながら処理の流れ。

file_name="$@"
→シェルスクリプト実行時に受け取った引数(今回の場合バックアップしたいファイルのこと)を変数file_nameに格納

backup_file_name=${file_name}.$(date '+%Y%m%d')
→変数backup_file_nameにスクリプト実行時に受けとったファイル名を日付つきで格納

if [ ! -e ${backup_file_name} ]
→変数backup_file_nameのファイルが存在していなければ次の処理をする
then
 cp -pv ${file_name} ${file_name}.$(date +%Y%m%d)
→シェルスクリプト実行時に受け取ったファイルに日付をつけてコピーする
else
 cp -pv ${file_name} ${file_name}.$(date +%Y%m%d_%H%M%S)
→もし変数backup_file_nameのファイルが存在していたら時間と秒数を追加してコピーする
fi

もうちょっとだけ詳しく

file_name="$@"

”$@” はシェルスクリプト起動時に付けられた引数の内容をそのまま受け取りたい時に使うもの。
この書き方で下記の

#backup-shell  file1
(↑シェルスクリプト名)(↑コピーしたいファイル名)

のようにスクリプト実行時に「スクリプト名 コピー元ファイル名」と入力すればコピー元ファイルをそのまま引き継ぎスクリプトファイル内の変数 $filename に格納してくれる。

if [ ! -e ${backup_file_name} ]

-e は対象が存在しているか確認するもので、今回は ! をつけているので
「対象が存在していない場合」という条件にして最初の処理をしています。
(※「!」をつけると否定文になる)

でも -e は「ファイルタイプにかかわらず、存在すればコマンド実行する場合」に用いられるらしいのでもっと厳密に指定して実行したい場合は違うの使った方がいいのかな。。

・・・てかですね、理解した的に言っていますがこの「-e」を発見するのにめっさ苦労しました。
ひどい。もっとググり力つけたい。

ざっくり書きましたが以上です!
最後まで読んでくださった方いましたらありがとうございます!

参考にしたサイト↓

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

[はじめてのLinux]Linuxコマンドの種類

Linuxコマンドの種類とどういった処理をするコマンドなのかについて書いていきます。
また、Linuxコマンドを使用する際に、CLIという物を使っていくのでコマンドを入力していく前にCLIについて説明をしていこうと思います。

CLIとは

[Command Line Interface] コマンドラインインターフェースの略
例えばファイルを開いたり、特定のディレクトリに移動したりといった操作をキーボードでコマンドと呼ばれる文字列を入力し、その文字列を実行する事によって行う物。
スクリーンショット 2021-03-08 11.01.34.png
日頃やっているファイルのアイコンをクリックしてそのファイルに移動する、ファイルを削除する時にそのファイルの上で右クリックをしてゴミ箱に入れるをクリックしてファイルを削除というのはGUI([Graphical User Interface] グラフィカルユーザーインターフェース)と言う物を使用して操作している。

GUIと比較した時のCLIを使うメリット

  • 操作がGUIより軽快にできる
    • 例えば特定のファイルがある場所まで移動したいという状況の時、そのファイルがディレクトリの奥深くにある場合だとGUIだとディレクトリをクリックして、またその中にあるディレクトリをクリックしてというのを繰り返さないとそのファイルのある場所までたどり着かないけど、CLIなら一つのコマンドでそのファイルのある場所まで移動が出来る
    • ファイル数が膨大にある場合、特定の名前のファイルを探すのがGUIだと大変だけど、CLIだとコマンドをくみ合わせる事で探すことが可能。
  • 複数の処理を組み合わせで同時に行う事が出来る。
    • GUIだと一つ一つマウスでクリックして行っているような作業がCLIだとパイプラインという物を使う事でコマンドを組み合わせて同時に実行する事が出来る。

CLIを使うデメリット

  • 最初は覚えるのが大変
    • GUIだと直感で操作できるが、CLIだとコマンドを入力して実行する事で処理を行うのでどのコマンドを実行するとどういった処理が出来るかというのを覚えるまでが大変

コマンドの種類と処理の内容

これから出てくるターミナルというのはコマンドを入力して実行する為の黒・もしくは白の画面の事

echo

画面に文字を出力する

ターミナル
echo "こんにちは"
こんにちは

pwd (print working directory)

自分が今いるディレクトリを表示する

ターミナル
pwd
ここにディレクトリのパスが表示される

ls (list)

今いるディレクトリにあるファイルを表示する

ターミナル
ls
表示されたファイル名 表示されたファイル名 表示されたファイル名 

Linuxコマンドにはオプションという補助機能のような物をつける事も出来る

ターミナル
ls -a #ファイル名が.(ドット)から始まる隠しファイル(見えないようになっているファイル)も表示出来る
ターミナル
ls -l #ファイルの詳細(所有者やファイルの編集権限も表示出来る)
ターミナル
ls -la #隠しファイルを含めた全てのファイルの詳細を表示)

cd (Change Directory)

違うディレクトリに移動する

ターミナル
cd ../ #一つ上の階層に移動
cd ../../ #二つ上の階層に移動
cd ./ディレクトリ名 #同じ階層の別のディレクトリに移動
cd ディレクトリ名 #cd ./ディレクトリ名と同じ処理

cd ~/ #ホームディレクトリ(サーバに接続した時にいるディレクトリに移動
cd /ディレクトリ名/ディレクトリ名 #絶対パスで指定(ルートディレクトリを基準とする)

階層やルートディレクトリとは

DlvWDxGG.jpg
ディレクトリは、一番上にあるルートディレクトリを基準に下に枝分かれしている(階層構造という)
ホームディレクトリというのはサーバに接続した時にいるディレクトリの事を指す

mkdir (Make Directory)

ディレクトリを作成する

ターミナル
mkdir ディレクトリ名 #指定したディレクトリ名のディレクトリを今いる場所に作成
mkdir ~/ディレクトリ名 #ホームディレクトリに指定したディレクトリ名のディレクトリを作成

cat

ファイルの中身を表示する。
サーバの中の設定ファイル等を編集せずに中身だけみたい時に使われたりする。
(編集をしないからvimエディタで開いて見る必要がないのとvimエディタで開いた場合誤操作をした時に設定ファイルの中身を変えてしまう可能性がある為)

ターミナル
cat ファイル名 #指定したファイルの中身を表示

cp (Copy)

ファイルをコピーする

ターミナル
cp コピー元のファイル名 コピー先のファイル名
#コピー先に指定したファイルが無ければ新規にファイルを作り、あればコピ元のファイルの中身に上書きする
cp コピー元のファイル名 ディレクトリ名
#指定したディレクトリの中にコピー元のファイルをコピーする

mv (Move)

ファイルを移動する。移動先が同じディレクトリならファイル名変更の処理をする

ターミナル
mv 移動元のファイル 移動先のファイル名もしくはディレクトリ名
mv 移動元のファイル1 移動元のファイル2 移動先のディレクトリ
#移動元のファイルは複数選択する事が出来る。

rm (remove)

ファイルの削除をする。
また、ディレクトリは通常のrmコマンドでは削除出来ない。
(`ディレクトリ名' を削除できません: ディレクトリですといエラーが出る

ターミナル
rm ファイル名 #指定したファイルを削除する
rm -r ディレクトリ名 #-rをつけるとディレクトリに入っているファイルも一緒に削除できる
rmdir ディレクトリ名 #ディレクトリを削除するLinuxコマンド。ただしディレクトリにファイルがあるとがエラー出る

touch

タイムスタンプの更新
ファイルがなければ空ファイルが生成される

ターミナル
touch ファイル名

grep

正規表現を使って指定したファイル内に指定した文字列を含む行を表示する

例えば

ターミナル
ls #ファイル一覧を表示
linux.php
cat linux.php #linux.phpの中身を表示

テスト
楽しい
テストは楽しい
#linux.phpの中身

grep "テスト" linux.php #linux.phpの中に「テスト」という文字列を含む行があるかを調べる
テスト
テストは楽しい
#あるとこんな感じで「テスト」を含む行の文字列が返ってくる

実務だとログファイルと呼ばれる数万行あるファイルの中に特定のユーザidが含まれているかを調べる時にも使ったりするらしいです。

パイプライン

パイプとは、コマンドの標準出力を次のコマンドに渡す処理のことをいいます
https://webkaru.net/linux/commands-pipeline/より引用

標準出力とはざっくり言うとコマンドの実行結果の事。
パイプラインを使って複数のコマンドを組み合わせると一つの処理として実行することが出来る。

使用例

ターミナル
ls #ファイル一覧を表示

#実行結果
form.php  form2.php  greeding.php  hello  linuxform.php  test.php  test2.php

 ls | grep "form" #lsコマンドの実行結果をgrepコマンドに渡す。

#実行結果
form.php
form2.php
linuxform.php
#ls | grep "form"を実行するとファイル名にformという文字列のついたファイルを表示する

リダイレクト

出力先を変える物
https://products.sint.co.jp/topsic/blog/standard-input-output より引用

標準入力: データの取得元(何も設定を変えなければキーボードからデータを取得する)
標準出力: データの出力先(ターミナルやファイル)

ターミナル
echo "こんにちは"
#実行結果
こんにちは
#この場合は標準入力はキーボード、標準出力はターミナル

cat greeding.php
#実行結果
こんばんわ
#この場合は標準入力はファイル(greeding.php)、標準出力はターミナル

#リダイレクトを使って実行。greeding.phpの中身をgreeding2.phpに出力する
cat greeding.php > greeding2.php

#greeding2.phpの中身を確認
cat greeding2.php
#実行結果
こんばんわ

cat greeding.php >> greeding2.php
# >>はファイルの最後の行に中身を追加する。
# ファイルに既に中身がある場合、>だと内容を上書きし、>>だと上書きせず最後の行に中身を追加する

#grepコマンドと組み合わせる事も出来る
#cat.php内の猫という文字列を含む行を探し、その行をconfirm_cat.phpの中に書き込む

grep "猫" cat.php > confirm_cat.php

#cat.phpの中身
cat cat.php
これは猫
あれも猫
こっちは犬
あっちはうさぎ
それは猫

#confirm_cat.phpの中身
これは猫
あれも猫
それは猫

実務ではgrepコマンドとリダイレクトを組み合わせて、ログファイルの中身を別のファイルに写し変えてじっくり見るために使ったりすることもあるそうです

以上になります!
ここまで読んで頂きありがとうございます!

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

Linuxコマンドのメモ

ディレクトリ操作 現在のディレクトリの場所を表示 [pwd]

・ディレクトリの中身ではなく、ディレクトリの現在の場所を指す。

pwd

画面をクリアする [clear]

・ctrl + Lでも可能。

clear

ディレクトリの操作 ディレクトリの作成 [mkdir]

mkdir 'ディレクトリ名'

ディレクトリの操作 中身をリスト表示 [ls]

ls

・lsの後に-lとつけると所有者と権限なども表示される

ls -l

ディレクトリの操作 ディレクトリ間を移動 [cd]

cd 'パス指定'

サブディレクトリを含んだディレクトリの作成 [mkdir -p]

mkdir -p 'ディレクトリ名/サブディレクトリ名'

ディレクトリの移動 [mv]

mv 'ディレクトリ名' '移動先のディレクトリ名'

ディレクトリの削除 [rmdir, rm]

・rmdirは空のディレクトリしか削除できないため、実務ではあまり使用されない。

rmdir 'ディレクトリ名'

・実務では主にrmが使用される。
・オプションの-rはリカーシブでディレクトリの中身全ても含むということ。

rm -r 'ディレクトリ名'

ディレクトリのコピー [cp]

・オプションの-rは先述したように、リカーシブでディレクトリの中身も全て含むことです。

cp -r 'コピー元のディレクトリ名' 'コピー先のディレクトリの名前'

ファイルの操作 作成 [touch]

touch 'ファイル名'

ファイル操作 移動・リネーム [mv]

・移動はディレクトリと同様です。

mv 'ファイル名' '移動先のディレクトリ名'

・ファイルのリネームも可能

mv '変更したいファイル名' '変更後のファイル名'

ファイルの内容を確認する [cat]

cat '確認したいファイル名'

ファイルの内容を確認する [less]

・catとの相違点はスクロールが出来る。

less '確認したいファイル名'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[grep -B30] 条件Aで絞って、さらに条件Bで絞ってBの行の前30行を抽出する

grep "#AAAAAA" ./file_XXX | grep -B30 '"XXXX_id"=>"0"'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[はじめてのLinux]Linuxにログインする方法

サーバに接続する方法

sshというコマンドを使う

sshとは

Secure shellの略
自分のパソコンからサーバに安全に接続する為のプロトコル
ssh以外にサーバに接続する方法として
telnet
と言うものを使う方法があるが、telnetだと通信内容が暗号化されないので入力したパスワードをそのまま送ってしまう。
sshは通信内容を暗号化するので、telnetより安全にサーバに接続ができる。
何故ssh接続を使うのかというと通信内容を暗号化しないで接続すると、入力したパスワードが外に漏れる危険性があり万が一漏れた場合にそのパスワードを使って悪意のある人間がサーバに接続しサーバを勝手に編集したりといったことが出来る為

接続する為のコマンド

ターミナル
ssh testuser@ipアドレス

ssh: sshコマンド
test: ID(ユーザ名)
ipアドレス: 通信の相手先を識別するために割り振られた番号

補足

実務上は公開鍵・秘密鍵という物を使った認証をするのでパスワードは使わない
理由
セキュリティ上の問題。パスワードを使った認証にすると、パスワードの管理の仕方が難しい為
(例えばメモ帳に書いたり、付箋にパスワードを書いてパソコンに貼ったりするといった方法だと他人にパスワードが知られてしまう、サーバに接続する際にパスワードを入力している所を第三者に見られたりするとそのパスワードを使って接続出来てしまう為)

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