LoginSignup
1
0

僕なりのLinux(Ubuntu)備忘録

Last updated at Posted at 2024-05-16

apt

ubuntuの最新パッケージ一覧を取得

sudo apt update

ubuntuの最新パッケージの更新

# 全て
sudo apt upgrade
# 一覧
apt list --upgradable
# 指定
sudo apt install --only-upgrade <packageName>

依存関係が変わり不要となったパッケージの削除

sudo apt autoremove

参考:

https://qiita.com/ynott/items/0c3d99cba3753c7d0ae6

https://qiita.com/010Ri/items/ab1b8034c51fe032a5ad

https://oji-cloud.net/2019/06/16/post-2196/

grep

grep -n 文字列 ファイルのパス

オプション-nは行番号を表示する

grep -C 表示する前後の行数 ファイルのパス

grep -nir '文字列' ./パス --exclude="ファイル名"
grep -nir '文字列' ./パス --exclude-dir="ディレクトリ名"

一括置換

grep -rl '置換対象の文字列' ./* | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g'

sed -i.bakでバックアップファイル作成

参考:

find

基本的な使い方

find 探したいパス -name ファイル名
  • ワイルドカードを使う時は*を使う

180日前から現在までの、カレント直下の、ディレクトリで、修正されたディレクトリを表示する。

find  ./ -maxdepth 1 -type d -mtime -180

less

ログの更新をリアルタイムで追跡

less +F ファイル名

grepとlessで対象のみを出力

grep '検索したい文字列' ファイル名 | less
grep -C 2 '対象の文字列' ファイル名 | less
// -A-B-C 前後

lessの中で検索

/検索したい文字列

lftp

よく使うコマンド達

lftp -u username,password host
lftp sftp://${HOST} -p ${PORT} -u ${USER}

# downloadする
get filename
mget filenames

# Uploadする
put filename
mput filename

# カレントディレクトリをdownload
mirror -F dirname

#カレントディレクトリをupload
mirror -R

設定ファイル(.lftprc

  • 自己証明やIPが動的に動くサーバへの接続時に接続を拒否される時がある。つまり ssl/tls プロトコルでの接続ができない時がある。

    + set ssl:check-hostname no
    + set ssl:verify-certificate no
    
    1. ssl:check-hostname no: この設定は、lftpがSSL/TLS接続でサーバーの証明書を検証する際に、その証明書のホスト名が接続先のホスト名と一致するかどうかのチェックを行わない。
    2. ssl:verify-certificate no: この設定により、lftpはSSL/TLS接続でサーバーから提供される証明書の信頼性(証明書が信頼できる発行元によって署名されているかどうか)を検証しない。

sftp

# 接続する
sftp username@host
> password

sftp sshHost

# ダウンロードする
get fileName
get -r dirName

diff

Linuxdiff

diff -uwBb ./{main,recruit}/cms-admin/.htaccess

vim diff

vimdiff ./{main,recruit}/cms-admin/.htaccess

開いた状態で :vertical diffsplit recruit/cms-admin/.htaccess` `

file

  • テキストファイル

    文字だけで構成される、人間が読むことのできるファイル

  • バイナリファイル

    テキストファイル以外の人間が読むことのできないファイル

拡張子:人間が種類を区別しやすくするための印。中身と関係ない

ファイルシグネチャ: ファイルの先頭に数バイト決められた文字列が並んでいる。OSはこれで種類を判断する

file {filename}

でファイルの情報を表示。textだったらテキストファイル、dataだったらバイナリファイルか表示不能なファイル

crontab

[artis@sitexweb2 crontab]$ crontab -l
0  * * * * /usr/bin/php /data/www/app/cli-generator.php 1>/dev/null 2>>/home/hoge/tools/crontab/error.log
30 0 * * * /usr/bin/sh  /home/hoge/tools/backup/backup.sh 1>/dev/null 2>>/home/hoge/tools/backup/error.log
// cronに設定されている内容をリストで出力する

[artis@sitexweb2 crontab]$ crontab -l > crontab.txt
// cronに設定されている内容をcrontab.txtに書き込む(最新とtxtに書き込まれている内容に差がある場合があるから)

[artis@sitexweb2 crontab]$ vim crontab.txt
// 任意の行を削除する

[artis@sitexweb2 crontab]$ crontab < crontab.txt
// crontab.txtに書き込んだ内容をcrontabに反映する。

[artis@sitexweb2 crontab]$ crontab -l
30 0 * * * /usr/bin/sh  /home/hoge/tools/backup/backup.sh 1>/dev/null 2>>/home/hoge/tools/backup/error.log

ping

ping [option] <host>
ping -c 5 www.google.com

ftp

su

su
> password: rootユーザーのパスワード

でrootユーザーになれる。

プロンプトの記号が $#になる。

exti
Ctrl + C

でログアウト

sudo

sudo [option] command
> password: 一般ユーザーのパスワード

[option]
-b 指定したコマンドをバックグラウンドで実行
-l そのユーザーに対して許可されているコマンド一覧表示
-u ユーザーを指定して実行

そのコマンドだけroot権限で実行できる。

ユーザー・グループ

調べ方

  1. 対象のディレクトリの所有者とグループを確認

    grep "グループ名" /etc/group
    # or
    getent group グループ名
    
    グループ名:パスワードフィールド(通常は使用されないためxが表示される):グループID:グループメンバーのリスト
    

​ という出力がされる。そのグループに含まれる全ユーザーの一覧である。

  1. そのグループに含まれているユーザーのみが、そのグループに付与されている権限を行使できる。つまり、出力された一覧に、期待しているユーザーがいない場合、そのユーザーはothersとして扱われる。

権限

wrx

  • drwxrwxrwx 777 ディレクトリ

  • frwxr-xr-x 755 ファイル(fのかわりに - の可能性あり)

  • r 4 w 2 x 1 これの足し算で権限がきまる

    chmod 777 file名・directory名
    chmod -R 777 directory名
    
  • 読み取り r

    • ファイル:内容を閲覧できる
    • ディレクトリ:それ内のファイル名やディレクトリ名の一覧を閲覧できる
  • 書き込み w

    • ファイル:内容を変更・削除できる
    • ディレクトリ:それ内に新しいファイル¥ディレクトリを作成、既存のものを削除できる
  • 実行 x

    • ファイル:プログラムやスクリプトなら、実行できる
    • ディレクトリ:それ内にcdで入ることができる

Apacheサーバーの権限

  • Apache(HTTPD)プロセスは特定のユーザー(apachewww-dataなど)として実行される。Webサーバーがアクセスできるファイルやディレクトリに限定し、最小限の権限のみを与えるべき。
  • 例えば、Webサイトのファイルにはrを与え、ログファイルやアップロードされたファイルにはwを与える。プログラムやスクリプトには必要なものにxを与える。

ln

基本的な使い方

ln -s <targetDir/File> <linkName>
# 同じ名前のシンボリックリンクがカレントに貼られる
ln -s <targetDir>

シンボリックリンクの名前を変更したい時は、一旦削除して再度リンクを貼るのような手順を踏む

rm <linkName>
ln -s <targetDir> <linkName>

WSL Shutdown

wsl --shutdown

ファイル

そのファイルの情報を調べる

stat <filename>

標準出力をファイルに書き込む

ls -a > <file>

ファイル名のみ知りたい

cd targetDir
ls -F | grep -v / | sed s/\*$//g

ファイルの一部分のみ見たい

tail test.log -n 100
head test.log -n 100

2ファイルの中身を比較

# file1 と file2 をソートされた状態で比較する
sort file1.txt > file1_sorted.txt
sort file2.txt > file2_sorted.txt

# file1にはないがfile2にある行を表示
comm -13 file1_sorted.txt file2_sorted.txt
  • ここでの comm コマンドのオプションは以下の意味がある:

    • -1 : file1 にのみ存在する行を表示しない

    • -3 : 両方のファイルに存在する行を表示しない

ファイルの行数

wc -l <file>

ファイル数を数える

ls -1 | wc -l
find . -type f | wc -l

curl

curl -Ss -I -u "username:password" https://hoge.co.jp

-Ss・・・サーバーからのエラーメッセージを表示する

-I・・・HTTPヘッダーのみを取得する

-u・・・Basic認証で使用するIDPWを指定できる

PHPの情報を調べる

  • サーバーにインストールされている、PHPの情報や PHP.ini の情報を調べたい時に使います。

  • 権限によっては見れない可能性もあるので注意。

phpinfo()関数を使う

  • コマンドラインから直接phpinfo()関数を実行する

    php -i
    php -i | grep memory_limit
    

confファイルを直接確認する

  • php.iniファイルがどこにあるか確認した上で、直接ファイルの内容を確認する

    php --ini
    cd path_to/
    less -S php.ini
    

特定の設定値だけを確認する

  • PHPのCLIツールを使用して直接確認できる

    php -r "echo init_get('memory_limit');"
    

cat

  • もちろんファイルの閲覧に使う(標準出力で見る)
  • 標準出力なので、> を用いることで、ファイルに記述できる
  • もともとはファイルを連結して標準出力に出力する、という意味

ファイルの閲覧

cat file1

別ファイルへの書き込み

cat file1 > file2

別ファイルへの追記

cat file1 >> file2

ファイルを連結して出力

cat file1 file3 file3

行番号を付けて出力

cat -n file1

標準入力での入力を書き込む

cat > file
hoge
fuga

ヒアドキュメントを利用して書き込む

cat <<EOF > file
hoge
fuga
moga
EOF

参考:

https://qiita.com/sudo00/items/d910fbf5ff81bb3fee21

https://eng-entrance.com/linux_command_cat

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0