Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

3
删除文件,但仅当它是符号链接时
理想情况下,我想要这样的命令 rm --only-if-symlink link-to-file 因为我烧掉自己太多次了,所以不小心删除了文件而不是指向文件的符号链接。当涉及到sudo时,这尤其糟糕。现在,我当然要做一个a ls -al,以确保它确实是一个符号链接,但是这样很容易受到操作员错误(类似文件,错字等)和竞争条件(如果有人出于某种原因要我删除文件)的攻击。有什么方法可以检查文件是否为符号链接,并且仅在一个命令中才将其删除?
11 bash  command-line  rm 


1
切勿将`-a`或`-o`运算符与`[`
斯特凡·查泽拉斯写道: 一些规则,例如 总是引用变量 永远不要使用-aor -o运算符(使用多个[命令以及&&and和||shell运算符) [使用POSIX shell 使其可靠。 为什么“从不使用-aor -o运算符”? 我该如何“使用几个[命令以及&&and和||shell运算符”?
11 bash  shell  test 

3
当ssh客户端的参数后面是交互式程序时,为什么sshd不使用伪终端?
连接到SSH服务器的正常方法是ssh username@ip_address。但是用户可能只想在远程计算机上运行程序。因此,程序名称后跟普通参数ssh username@ip_address <program_name>。例如,ssh username@ip_address ls。除了交互式程序(还接受用户输入并提供输出)之外,该参数很好top。输出是 TERM环境变量未设置。 这意味着sshd和top程序之间没有连接(伪)终端。解决方法是-t在整个命令现在变为的地方添加参数ssh -t username@ip_address top。 我的问题是,为什么默认情况下sshd也不能使用伪终端与非交互式程序进行通信,因此无需-t为交互式程序添加参数?
11 ssh  pty 

2
awk内存泄漏?
基于此,我正在运行命令 < /dev/urandom hexdump -v -e '/1 "%u\n"' | awk '{ split("0,2,4,5,7,9,11,12",a,","); for (i = 0; i < 1; i+= 0.0001) printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' | xxd -r -p | sox -traw -r44100 -b16 -e unsigned-integer - -tcoreaudio 我注意到在运行此命令时,awk使用的内存不断增长,例如,在播放75MB原始音频数据时,消耗了500MB以上的内存。流水线中的所有其他命令都维护恒定数量的内存。 使用此内存的awk有什么用,是否有替代方法可以仅使用恒定数量的内存来进行预期的流处理? 如果awk版本很重要: ⑆ awk --version awk version 20070501 这是我根据Thomas Dickey的答案测试的命令: …
11 awk  osx  memory 

3
bash脚本在命令中的临时值
像下面的命令一样, if true; then IFS=":" read a b c d e f <<< "$test" 书中说,IFS ":"在主命令(read a b c d e f <<< "$value")之前使用值分配命令()时,其值暂时对主命令有效。因此,该read命令使用delimiter :。 但是,就像这个命令 if true; then HOME="hello" echo "$HOME" 回声不是你好。以上命令的真正含义是什么?


2
子外壳与子外壳是否相同
有两个名称:subshel​​l和child-shell。 是的,子进程将通过以下任何一种方式启动: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat 是否都相同并具有相同的名称?所有共享相同的属性吗? POSIX 具有以下定义: Shell执行环境由...组成。 但是上面链接的最后一段有: 子外壳程序环境应作为外壳程序环境的副本创建,但不忽略的信号陷阱应设置为默认操作。 特别是: 命令替换,用括号分组的命令以及异步列表应在子shell环境中执行。另外,多命令管道中的每个命令都在子shell环境中。.... 其中sh -c 'echo "Hello"'不包含,也应该称为subshel​​l吗?

2
是否有支持IPv6链接本地地址的浏览器?
我想最后了解一个浏览器,fe80::4216:7eff:fe9f:79ac%enp2s0f0例如允许我浏览的浏览器。我检查过在诸如Firefox和Chrome之类的知名浏览器的错误跟踪器中打开了许多票证。我知道Windows上的Internet Explorer可以提供一个选项,但是我想知道Linux上的任何人。
11 ipv6  browser  url 

2
无法在脚本中使用!$?
只是想知道为什么这不起作用 #!/bin/bash ls /bin ls !$ 我预计会运行ls /bin两次,但是第二次会出现错误,!$因为没有解释 我错过了什么,还是!$只在命令行工作? 我在man bash(Mac上)找不到相关的部分
11 bash 

3
挂起进程而不杀死它
因此,我在后台运行了一个持久性程序。杀死它只会导致它以其他PID重新启动。我想将其挂起(使其进入睡眠状态,而实际上并未杀死它)。杀死-9会这样做吗?如果没有,应该怎么做?
11 process  kill 

2
&6和/ dev / fd / 6有什么区别?
要读取文件描述符6,我可以使用<&6或</dev/fd/6(aka /proc/self/fd/6)。通常两者都可以很好地工作。但是,如果该文件描述符恰好是套接字,则会发生奇怪的事情。例如: $ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345 lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010] cat: /dev/fd/6: No such device or address 这里ls显示描述符确实存在。但是用这种方式不可能访问数据。如果我cat <&6改用其他方法,一切都会再次正常。 两种访问文件描述符的方式有什么区别? 如果数字在变量中给出,是否有访问描述符的好方法?(</dev/fd/$fd可以,但<&$fd不能。) (以上情况在Linux上可以观察到,但在OpenBSD上则不能观察到。-似乎文件描述符在那里是常规字符设备。)

1
如何根据字段的一部分对文件进行排序
我想对文件进行排序: D104HN-D104HA 8.320 4.521 1.69e+05 -- D104HN-D104HB* 8.320 2.823 2.93e+05 -- A90HB#-A90HA 1.655 4.207 7.12e+05 -- A90HB#-F91HA 1.653 4.411 8.59e+04 -- A114HB#-A114HA 1.253 4.098 7.67e+05 -- A114HB#-R111HA 1.251 3.929 1.76e+05 -- A114HB#-W110HA 1.253 4.451 3.68e+04 -- F91HE*-F91HZ 7.237 7.122 7.85e+05 -- F91HE*-K92HA 7.242 3.910 4.88e+04 -- 并得到这个 A90HB#-A90HA 1.655 4.207 …

2
[[.ch。]]在正则表达式中是什么意思?
替代标题:在符合POSIX的正则表达式中,“整理顺序”或“整理元素”是什么? 我在POSIX规范的9.3.5节中找到了确切的技术定义,将其作为列表中的第4个项目,但是对我来说还不是很清楚。 我用Google搜索周围的网站为例子和解释上,并提出了不完全两手空空,但绝对不开明。 我唯一要了解的是,在某些情况下,为了使长度比较和确定“最长匹配”是什么,您可以让正则表达式将多个字符当作单个字符对待(因为正则表达式贪婪且返回最长的匹配项)。 那是全部吗?我很难看到它的用途,但我怀疑我的理解还不完整。 正则表达式的“整理”实际上是什么? 以及如何[[.ch.]]在POSIX规范的例子,涉及到这个?

1
将btrfs放在lvm上有意义吗?
这是OpenSUSE Leap42。我有一台装有2个500 GB SATA HDD驱动器的计算机,为了加快速度,我在系统中放入了一个30 GB的小型SSD驱动器。在安装过程中,HDD断开了连接,因为它们混淆了安装程序(和我)。一旦系统启动,我就很容易地将/ home目录交换为XFS逻辑卷(我主要使用LVM来轻松添加空间)。然后/ opt填满(chrome和botanicula),我想将其放在HDD上。因此,我创建了一个卷并使用BTRFS对其进行了格式化。经过一番@ subvolumes摸索后-fstab中的内容使我在BTRFS上阅读了我所需的内容-/ opt现在的大小为100 GB。 但是问题是:用btrfs格式化LVM卷有意义吗?本质上,它们都是体积处理系统。 为了说明起见,我粘贴了fstab(#注释显示了我的编辑)和vgscan + lvscan输出: ~> cat /etc/fstab UUID=1b511986-9c20-4885-8385-1cc03663201b swap swap defaults 0 0 UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af / btrfs defaults 0 0 UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /boot/grub2/i386-pc btrfs subvol=@/boot/grub2/i386-pc 0 0 UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af /boot/grub2/x86_64-efi bt rfs subvol=@/boot/grub2/x86_64-efi 0 0 UUID=3e103686-52e9-44ac-963f-5a76177af56b /opt btrfs defaults 0 0 #UUID=30e20531-b7f1-4bde-b2d2-fab8eeca23af …
11 linux  partition  lvm  btrfs 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.