Linux命令随记:修订间差异

来自三线的随记
(创建页面,内容为“记一下一些我觉得我容易忘掉的组合命令吧。。 find -type f -size +10M -exec ls -lh {} \; ls /dev/sd{a,b} <blockquote> Bash 有个功能叫大…”)
 
无编辑摘要
 
(未显示同一用户的10个中间版本)
第1行: 第1行:
记一下一些我觉得我容易忘掉的组合命令吧。。
记一些容易忘掉的组合命令。。太杂碎不适宜单开页面


===命令参数简要使用===
find -type f -size +10M -exec ls -lh {} \;
find -type f -size +10M -exec ls -lh {} \;


ls /dev/sd{a,b}
ls /dev/sd{a,b}


<blockquote> Bash 有个功能叫大括号扩展,大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。</blockquote><blockquote>花括号用来匹配一组用逗号分隔的字符串中的任一个。左花括号之前的所有字符称为前文(preamble),右花括号之后的所有字符称为后文(preamble)。前文和后文都是可选的。花括号中不能包含不加引号的空白符。</blockquote>
使用grep去过滤一些- (hyphen) 开头的字符串
echo "--123" | grep -- --123
原理: <blockquote>
; <samp>--</samp>
: Delimit the option list. Later arguments, if any, are treated as operands even if they begin with ‘<samp>-</samp>’. For example, ‘<samp>grep PAT -- -file1 file2</samp>’ searches for the pattern PAT in the files named <samp>-file1</samp> and <samp>file2</samp>.
</blockquote>
 
==== 使用 jq 命令只取第一层key name ====
jq 'keys' config.json
 
==== 使用jq配合storcli命令获取raid虚拟磁盘名字或者定位os盘名字 ====
定位方法: https://www.superweb999.com/article/654883.html (DG/VD就是 raid的卷组/系统里卷组的顺序 对应关系)
storcli /c0 /vall show J | jq '(.Controllers[]."Response Data"."Virtual Drives"[])'|jq 'select(.Name == "OTHER_RAID0")'
 
storcli /c0 /vall show J | jq '(.Controllers[]."Response Data"."Virtual Drives")
 
=== 在使用ssh-copy-id命令设置公钥免密的时候同时指定会话加密算法 ===
ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o "Ciphers=aes256-cbc" -i ~/.ssh/key-file [email protected]
 
===<big>Linux 音频架构ALSA中的Alsa工具</big>===
====<big>显示的是当前所有可用的麦克风设备:</big>====
pi@raspberrypi:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 
====<big>显示的是当前所有可用的音频输出设备</big>====
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
apt-get install sox libsox-fmt-all
 
libsox-fmt-all包含mp3的解码器和其它格式的解码器。
 
播放音乐:
$ play Crystals.mp3
systemctl daemon-reload
 
===大括号扩展 - 理论===
Bash 有个功能叫大括号扩展,大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。
花括号用来匹配一组用逗号分隔的字符串中的任一个。左花括号之前的所有字符称为前文(preamble),右花括号之后的所有字符称为后文(preamble)。前文和后文都是可选的。花括号中不能包含不加引号的空白符。
PS: 按照百(bai)度(du)的说法,这个叫做大括号-> {},但是他也叫做花括号
 
====大括号扩展 - 实验记录====
 
 
使用 ls 命令配合测试大括号扩展特性1
 
前提: touch test1 test2 test3 test4 test10
 
预期结果: test1 test2 test3 test4 test10 be showed
{| class="wikitable"
! colspan="3" |ls
|-
|ls test[1,4]
|test1 test4
|-
|ls test[1,10]
|test1
|-
|ls test[1-4]
|test1 test2 test3 test4
|√
|-
|ls test[1-9]
|test1 test2 test3 test4
|√
|-
|ls test[1-10]
|test1
|-
|
|
|
|-
|ls test{1,9}
|ls: cannot access 'test9': No such file or directory
 
test1
|-
|ls test{1,4}
|test1  test4
|x
|-
|ls test{1-9}
|ls: cannot access 'test{1-9}': No such file or directory
|x
|-
|ls test{1-10}
|ls: cannot access 'test{1-10}': No such file or directory
|x
|-
|going to completed
|
|
|}
 
 
使用 ls 命令配合测试大括号扩展特性2
 
前提: touch testa testb testc testd
 
预期结果: testa testb testc testd be showed
{| class="wikitable"
! colspan="3" |ls
|-
|ls test[a,d]
|testa  testd
|-
|ls test[a-d]
|testa  testb  testc  testd
|√
|-
|ls test[a-e]
|testa  testb  testc  testd
|√
|-
|
|
|
|-
|ls test{a,d}
|testa  testd
|-
|ls test{a,e}
|ls: cannot access 'teste': No such file or directory
 
testa
|-
|ls test{a-d}
|ls test{a-d}
 
ls: cannot access 'test{a-d}': No such file or directory
|x
|-
|ls test{a-e}
|ls test{a-e}
 
ls: cannot access 'test{a-e}': No such file or directory
|x
|-
|going to completed
|
|
|}
 
 
使用 touch 命令配合测试大括号扩展特性1
 
预期结果: touch testa testb testc testd
 
实验结果:
{| class="wikitable"
! colspan="2" |touch
!
|-
|touch test[a,d]
|只有 test[a,d] 文件
|-
|touch test[a-d]
|只有 test[a-d] 文件
|-
|touch test{a-d}
|只有 test{a-d}文件
|-
|touch test{a,d}
|有testa, testd文件
|××
|}
使用 touch 命令配合测试大括号扩展特性2
 
预期结果: touch test1 test2 test3 test4
 
实验结果:
{| class="wikitable"
! colspan="2" |touch
!
|-
|touch test[1,4]
|只有 test[1,4] 文件
|-
|touch test[1-4]
|只有 test[1-4] 文件
|-
|touch test{a-d}
|只有 test{1-4}文件
|-
|touch test{a,d}
|有test1, test4文件
|××
|}
????????going to completed
[[分类:Linux]]
[[分类:Linux]]
[[分类:Todo]]

2023年10月28日 (六) 21:55的最新版本

记一些容易忘掉的组合命令。。太杂碎不适宜单开页面

命令参数简要使用

find -type f -size +10M -exec ls -lh {} \;

ls /dev/sd{a,b}

使用grep去过滤一些- (hyphen) 开头的字符串

echo "--123" | grep -- --123

原理:

--
Delimit the option list. Later arguments, if any, are treated as operands even if they begin with ‘-’. For example, ‘grep PAT -- -file1 file2’ searches for the pattern PAT in the files named -file1 and file2.

使用 jq 命令只取第一层key name

jq 'keys' config.json

使用jq配合storcli命令获取raid虚拟磁盘名字或者定位os盘名字

定位方法: https://www.superweb999.com/article/654883.html (DG/VD就是 raid的卷组/系统里卷组的顺序 对应关系)

storcli /c0 /vall show J | jq '(.Controllers[]."Response Data"."Virtual Drives"[])'|jq 'select(.Name == "OTHER_RAID0")'
storcli /c0 /vall show J | jq '(.Controllers[]."Response Data"."Virtual Drives")

在使用ssh-copy-id命令设置公钥免密的时候同时指定会话加密算法

ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o "Ciphers=aes256-cbc" -i ~/.ssh/key-file [email protected]

Linux 音频架构ALSA中的Alsa工具

显示的是当前所有可用的麦克风设备:

pi@raspberrypi:~ $ arecord -l

**** List of CAPTURE Hardware Devices ****

card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

显示的是当前所有可用的音频输出设备

pi@raspberrypi:~ $ aplay -l

**** List of PLAYBACK Hardware Devices ****

card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]

  Subdevices: 8/8

  Subdevice #0: subdevice #0

  Subdevice #1: subdevice #1

  Subdevice #2: subdevice #2

  Subdevice #3: subdevice #3

  Subdevice #4: subdevice #4

  Subdevice #5: subdevice #5

  Subdevice #6: subdevice #6

  Subdevice #7: subdevice #7

card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

apt-get install sox libsox-fmt-all

libsox-fmt-all包含mp3的解码器和其它格式的解码器。

播放音乐:

$ play Crystals.mp3
systemctl daemon-reload

大括号扩展 - 理论

Bash 有个功能叫大括号扩展,大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。
花括号用来匹配一组用逗号分隔的字符串中的任一个。左花括号之前的所有字符称为前文(preamble),右花括号之后的所有字符称为后文(preamble)。前文和后文都是可选的。花括号中不能包含不加引号的空白符。
PS: 按照百(bai)度(du)的说法,这个叫做大括号-> {},但是他也叫做花括号

大括号扩展 - 实验记录

使用 ls 命令配合测试大括号扩展特性1

前提: touch test1 test2 test3 test4 test10

预期结果: test1 test2 test3 test4 test10 be showed

ls
ls test[1,4] test1 test4 ×
ls test[1,10] test1 ×
ls test[1-4] test1 test2 test3 test4
ls test[1-9] test1 test2 test3 test4
ls test[1-10] test1 ×
ls test{1,9} ls: cannot access 'test9': No such file or directory

test1

×
ls test{1,4} test1  test4 x
ls test{1-9} ls: cannot access 'test{1-9}': No such file or directory x
ls test{1-10} ls: cannot access 'test{1-10}': No such file or directory x
going to completed


使用 ls 命令配合测试大括号扩展特性2

前提: touch testa testb testc testd

预期结果: testa testb testc testd be showed

ls
ls test[a,d] testa  testd ×
ls test[a-d] testa  testb  testc  testd
ls test[a-e] testa  testb  testc  testd
ls test{a,d} testa  testd ×
ls test{a,e} ls: cannot access 'teste': No such file or directory

testa

×
ls test{a-d} ls test{a-d}

ls: cannot access 'test{a-d}': No such file or directory

x
ls test{a-e} ls test{a-e}

ls: cannot access 'test{a-e}': No such file or directory

x
going to completed


使用 touch 命令配合测试大括号扩展特性1

预期结果: touch testa testb testc testd

实验结果:

touch
touch test[a,d] 只有 test[a,d] 文件 ×
touch test[a-d] 只有 test[a-d] 文件 ×
touch test{a-d} 只有 test{a-d}文件 ×
touch test{a,d} 有testa, testd文件 ××

使用 touch 命令配合测试大括号扩展特性2

预期结果: touch test1 test2 test3 test4

实验结果:

touch
touch test[1,4] 只有 test[1,4] 文件 ×
touch test[1-4] 只有 test[1-4] 文件 ×
touch test{a-d} 只有 test{1-4}文件 ×
touch test{a,d} 有test1, test4文件 ××

????????going to completed