多くのLinuxユーザーは、1行で複数のアクションを実行したり、グラフィカルユーザーインターフェイス(GUI)で通常10回のクリックと同じ数のウィンドウを実行したりする、特に巧妙なコマンドを作成した後、永続的な達成感を経験しています。伝説的なものであることに加えて、ワンライナーは、ターミナルがそのような強力なツールであると考えられている理由の素晴らしい例です。
この記事の終わりまでに、次のようになります。
- Linuxでの作業を容易にする20個のコマンドのリスト
- 単純なコマンドを組み合わせてより強力なコマンドを作成する可能性についての理解
- これらのコマンドを実行すると予想されるよりも楽しい
特に重要な順序はありませんが、これらはLinuxターミナルのトップ20のワンライナーです。長いコマンドのいくつかを\
で分割しましたが 読みやすくするための記号です。結局のところ、これらは1ライナーであるため、端末の1行にすべてを入力できます。
1。異なる名前のファイルにコマンドを適用する
シェル{}
演算子はこれに最適です。これは、{}
で囲まれた3つのディレクトリの例です。 :
$ mkdir -p -v /home/josevnz/tmp/{dir1,anotherdir,similardir}
2。その場でファイルを編集する
エディターを使用せずに、1つ以上のファイルの文字列を置き換えますか?確かに、sed
救助へ:
$ sed -i 's#ORIGINAL_VALLUE#NEW_VALUE#g' myfile1 myfile2
しかし、待ってください、Perl愛好家は彼らが同じことをすることができるとあなたに言うでしょう:
$ perl -p -i -e 's#ORIGINAL#NEW_VALUE#' myfile1 myfile2
3。 Webサーバーを使用してファイルをすばやく共有する
これを少なくとも1回使用していない場合は、手を挙げてください。 ディレクトリをすばやく共有するには:
$ cd $mydir && python3 -m http.server 8888
4。 journalctlで失敗を見つける
時々物事が壊れます。 journalctl
の組み合わせを使用して、最新のエラーを見つけることができます。 、従来のツールと一緒にsort
およびuniq
:
$ journalctl --no-pager --since today \
--grep 'fail|error|fatal' --output json|jq '._EXE' | \
sort | uniq -c | sort --numeric --reverse --key 1
898172 "/usr/bin/dockerd"
752 "/usr/local/sbin/node_exporter"
30 "/usr/bin/gnome-shell"
26 "/usr/bin/cat"
22 "/usr/libexec/gsd-media-keys"
[...]
この場合、Dockerデーモンは不幸なようです。
[このeBookをダウンロードして、RedHatリモート試験の準備をしてください。 ]
5。暗号化されたファイル転送を介してバックアップを作成します
ssh
を使用する およびtar
安全なバックアップを作成します。彼らはピーナッツバターとゼリーのように一緒に行きます:
$ tar --create --directory /home/josevnz/tmp/ --file - *| \
ssh raspberrypi "tar --directory /home/josevnz \
--verbose --list --file -"
サンドイッチに材料を追加するのと同じように、圧縮と暗号化を使用してバックアップジョブにフレーバーを追加できます。
6。インスタントファイルを書き込む
これは、複数行のドキュメントを作成する必要がある場合の優れたトリックです。
$ cat<<DOC>/my/new/file
Line1
Line2
A $VARIABLE
DOC
cat > file
だけでもかまいません 、編集が完了したら、EOF文字を入力するだけです( Ctrl + D ):
[josevnz@dmaf5 temp]$ cat > testfile
This is a test
multiple lines
and here we go
[josevnz@dmaf5 temp]$
7。ファイルを検索し、一部の拡張子を含め、他の拡張子を除外します
この例では、grep
を使用しています 特定のファイルを検索する方法。かなり速くて覚えやすいです:
$ grep -R 'import' --include='*.java' --color MySourceCodeDir
または、find
を試すこともできます 方法(xargs
を使用 多数の一致を適切に処理するため):
$ find MySourceCodeDir/ -name '*.java' -type f -print| xargs \
grep --color 'import
なぜfind
、あなたは尋ねるかもしれませんか? find
を組み合わせることができます -exec
を使用 最初にファイルに対してアクションを実行してから、結果をフィルターに渡します。ここでは処理の可能性は無限大です。
8。 topまたはhtopなしでメモリを監視する
これはほとんどだまされています。 free
などのコマンドを繰り返します 、5秒ごとに、違いを強調します:
$ watch -n 5 -d '/bin/free -m'
9。ディスクパーティションサイズを表示する
lsbk
を使用する (リストブロック)およびjq
(コマンドラインでJSONを操作するため)パーティション情報を表示するには:
$ lsblk --json | jq -c '.blockdevices[]|[.name,.size]'
["loop0","55.5M"]
["loop1","156M"]
["loop2","32.3M"]
["zram0","4G"]
["nvme0n1","476.9G"]
10。ファイルタイプをすばやく表示する
とは 関数はwi
で呼び出されます 。ファイルの種類がすぐにわかります。
単一のファイルを確認するには:
$ function wi { test -n "$1" && stat --printf "%F\n" "$1"; }
複数のファイルをチェックするには:
$ function wi { test "$#" -gt 0 && stat --printf "%n: %F\n" "$@"; }
注 :関数は優れており、エイリアスと同じ機能を実行できます。
11。インストールされているRPMのサイズを表示する
RPMベースのシステムを使用している場合は、遅かれ早かれ、クエリをフォーマットします。次に例を示します:
$ rpm --queryformat='%12{SIZE} %{NAME}\n' \
-q java-11-openjdk-headless
[Red Hat Training&Certification:Red HatEnterpriseLinuxスキルパスからの最新のコースと試験のトレーニングとテスト。 ]
12。ファイルのグループの合計サイズを表示する
この場合、find
コマンドはフィルターとして機能し、各ファイルのサイズをバイト単位で表示し、最後に合計サイズを表示します。
$ t=0; for n in $(find ~/Documents -type f -name '*.py' -print | xargs \
stat --printf "%s "); do ((t+=n)); done; echo $t
または、関数(より良い)が必要な場合は、次のアプローチを試してください:
$ function size { t=0; test -d "$1" && for n in $(find $1 \
-type f -name '*.py' -print| \
xargs stat --printf "%s "); do ((t+=n)); done; echo $t; }
size $mydir
13。ディレクトリ上のすべてのGitリポジトリを更新します
あなたはすでにGitがどれほど有用かを知っています。更新をより効率的に行うための秘訣は次のとおりです。
$ for i in */.git; do cd $(dirname $i); git pull; cd ..; done
14。コンテナを使用してWebディレクトリを公開する
今日、コンテナは非常に重要です。このワンライナーは、Podmanを介してディレクトリを公開します:
$ podman run --rm -v .:/usr/share/nginx/html:ro,Z \
-p 30080:80 -d nginx
15。天気をチェック
この機能を使用して、今日ジャケットが必要かどうかを確認します。
weather() { curl -s --connect-timeout 3 -m 5 http://wttr.in/$1; }
16。 Webサーバーにヒットする上位10個のIPアドレスを表示する
Web管理者がNginxで頻繁に使用するタスク(Apacheでも機能する可能性があります)を使用して、アクセスログからWebサーバーにアクセスする上位10のインターネットプロトコルアドレスを取得します。
$ cat /var/log/nginx/access.log | cut -f 1 -d ' ' | sort | \
uniq -c | sort -hr | head -n 10
17。 Pythonの助けを借りてBashのラウンドフロート
Pythonを使用するとかなりクールなことができますが、この例では数値を丸めるだけです:
$ echo "22.67892" | python3 -c "print(f'{round(float(input()))}')"
23
18。ミニ電卓を実行する
この関数は、コマンドラインで可変精度(デフォルトは2)のクイック計算機を定義します。 bcを使用します。次のような関数を作成します:
$ function qqbc() { echo "scale=${2:-2}; $1" | bc -l
次に、簡単な計算を実行します:
$ qqbc "2/3"
.66
追加の精度が必要な場合は、2番目のパラメーターを定義するだけです:
$ qqbc "2/3" 4
.6666
このツールはqqbc
と呼ばれます 古い関数qbc
を改良したものだからです 。
19。 CSVをJSONに変換する
このトリックは、CSVファイルをJSON形式に変換するためのこの人気のレシピの変更です:
$ python3 -c \
"import csv,json,sys;print(json.dumps(list(csv.reader(open(sys.argv[1])))))" \
covid19-vaccinations-town-age-grp.csv
20。 Dockerを使用してコマンドをインストールして実行する
Dockerがインストールされていて、システムに多数の依存関係をインストールせずに(クイック実行中に)コマンドを実行したい場合は、これで十分です。
$ docker run --rm --interactive curlimages/curl curl \
--verbose --location --fail --silent --output - \
https://example.com
このコマンドは、最新バージョンのcurl
を実行します コンテナから、後でそれを削除します。コマンドがダッシュ(-
)で終わっていることに注意してください )、curl
を通知します 端末に出力します。ここでは可能性は無限大です。
まとめ
単純なコマンドの強力な組み合わせを構築できることは、UnixとLinuxが非常に人気がある理由の1つです。
幸運にも。これらのワンライナーを学ぶことは難しくありません。簡単なコマンドの機能を覚えておいてから、多くの簡単なコマンドを組み合わせて強力なレシピを作成する方法を考えてください。
常にman
を確認してください ページを開くか、info
を使用してください ツールが他に何ができるかを理解するためのコマンド。あるツールが別のユーティリティと組み合わせなくてもすべてを実行できることを知って驚かれるかもしれません。
インターネット上には、1行の例がたくさんあるサイトがたくさんあります。これらの例が、あなた自身のより良いワンライナーを書くことにつながることを願っています。