Open9
また Unix コマンドで唸っている私へ
ピン留めされたアイテム
ファイルから特定のフィールドを取り出す
cut を使うと実現できます。
% cut -d: -f1,3 /etc/passwd | head
root:0
toor:0
daemon:1
operator:2
bin:3
tty:4
kmem:5
games:7
news:8
man:9
ファイルを横方向に連結する
paste を使うと実現できます。
% 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
ファイルの「ここ」から「そこ」までを表示
sed を使うと実現できます。
% 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
ファイルの途中から表示する
tail を使うと実現できます。
% printf 'hoge\nfuga\npiyo\n' | tail -n +2
fuga
piyo
環境変数の一部分を切り出す
Shell Command Language の記法を使うと実現できます。
$ hoge="https://example.com/index.html"; echo ${hoge%/*}
https://example.com
$ hoge="https://example.com/index.html"; echo ${hoge%%/*}
https:
$ hoge="https://example.com/index.html"; echo ${hoge#*.}
com/index.html
$ hoge="https://example.com/index.html"; echo ${hoge##*.}
html
表形式のデータから一部の列を取り出す
cut を使うと実現できます。
ファイルから特定のフィールドを取り出すと同様です。
$ cut -f 2-4 <<EOF
A B C D E
1 2 3 4 5
6 7 8 9 10
EOF
B C D
2 3 4
7 8 9
Bash で直前のコマンドを sudo する
Event Designator を使うと実現できます。
$ 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
特定のディレクトリ配下以外を find する
-prune
オペランドを使うと実現できます。 これは、GNU find の用語ではアクションに該当します。 以降に式を続ける場合は、OR 演算子 -o
を置いてから続けます。
$ 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>.