Open9

また Unix コマンドで唸っている私へ

KusaReMKNKusaReMKN

ファイルを横方向に連結する

paste を使うと実現できます。

https://pubs.opengroup.org/onlinepubs/9799919799/utilities/paste.html

% paste /etc/group /etc/passwd | head
wheel:*:0:root,mkn      root:*:0:0:Charlie &:/root:/bin/sh
daemon:*:1:     toor:*:0:0:Bourne-again Superuser:/root:
kmem:*:2:       daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
sys:*:3:        operator:*:2:5:System &:/:/usr/sbin/nologin
tty:*:4:        bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
operator:*:5:root,mkn   tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
mail:*:6:       kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
bin:*:7:        games:*:7:13:Games pseudo-user:/:/usr/sbin/nologin
news:*:8:       news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:        man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
KusaReMKNKusaReMKN

ファイルの「ここ」から「そこ」までを表示

sed を使うと実現できます。

https://pubs.opengroup.org/onlinepubs/9799919799/utilities/sed.html

% sed -n '/root/,/tty/p' /etc/passwd 
root:*:0:0:Charlie &:/root:/bin/sh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
KusaReMKNKusaReMKN

Bash で直前のコマンドを sudo する

Event Designator を使うと実現できます。

https://www.gnu.org/software/bash/manual/bash.html#Event-Designators

$ echo "$SHELL"
/bin/bash
$ ls -la /root
ls: cannot open directory '/root': Permission denied
$ sudo !!
sudo ls -la /root
total 28
drwx------  4 root root 4096  8月 17 10:49 .
drwxr-xr-x 18 root root 4096  7月  4 09:14 ..
-rw-r--r--  1 root root  571  4月 11  2021 .bashrc
-rw-------  1 root root   20  7月 21 12:07 .lesshst
drwxr-xr-x  4 root root 4096  8月 17 09:39 .npm
-rw-r--r--  1 root root  161  7月  9  2019 .profile
drwx------  2 root root 4096  7月  4 09:04 .ssh
-rw-r--r--  1 root root    0  8月 17 10:49 .sudo_as_admin_successful
KusaReMKNKusaReMKN

特定のディレクトリ配下以外を find する

-prune オペランドを使うと実現できます。 これは、GNU find の用語ではアクションに該当します。 以降に式を続ける場合は、OR 演算子 -o を置いてから続けます。

https://pubs.opengroup.org/onlinepubs/9799919799/utilities/find.html

$ find . -name '.git' -prune -o -print | head
.
./contents
./contents/index.html
./contents/ayashige.html
./404.html
./favicon.ico
./note
./note/windows
./note/windows/scr
./note/windows/scr/index.html
$ find . -name '.git' -prune -o -name '*.html' -exec grep 'Permanent ID' '{}' + | head
./note/windows/scr/index.html:Permanent ID of this document: <span class="tt">24bb4e589bdf28e3</span>.
./note/windows/mousespeed/index.html:Permanent ID of this document: <span class="tt">3afc39c125d265aa</span>.
./note/xms/index.html:Permanent ID of this document: <span class="tt">50ebb080d8816d2c</span>.
./note/pit8254/index.html:Permanent ID of this document: <span class="tt">694ea6f0d778c925</span>.
./kaibunsho/index.html:Permanent ID of this document: <span class="tt">ab5b0cddd05c6cc5</span>.
./mikan/kusaremkn/index.html:Permanent ID of this document: <span class="tt">79a764ffeaa0c4f3</span>.
./mikan/computers/index.html:Permanent ID of this document: <span class="tt">d6e37b1fd33c9a3f</span>.
./mikan/dictionary/index.html:Permanent ID of this document: <span class="tt">6f2dc68a1a6b1b6e</span>.
./mikan/index.html:Permanent ID of this document: <span class="tt">75bea9dc2deb231e</span>.
./mikan/history/index.html:Permanent ID of this document: <span class="tt">797d93671e2f3c31</span>.