GNU/Linux >> Linux の 問題 >  >> Linux

ツールボックスに追加する20個の1行のLinuxコマンド

多くの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行の例がたくさんあるサイトがたくさんあります。これらの例が、あなた自身のより良いワンライナーを書くことにつながることを願っています。


Linux
  1. Linuxデスクトップに壁紙としてビデオを追加する

  2. 5Linuxルーキーの間違い

  3. 5Linuxネットワークのトラブルシューティングコマンド

  1. ハードウェア情報を表示するためのLinuxコマンド

  2. 私のお気に入りの8つの実用的なLinuxコマンド

  3. これらの4つのツールをLinuxコンテナツールボックスに追加します

  1. Linuxターミナルで冒険に出かけましょう

  2. コマンドラインスキルを磨くための10のチュートリアル

  3. 10Linuxでのファイル検索を改善するためのコマンドの検索[基本]