Unix & Linux

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

6
sh递归副本(cp -r)-如何排除子文件夹
我需要运行使用远程脚本ssh通过Ruby(网/ SSH)递归复制文件夹,并排除子文件夹。我正在寻找最快的方法,所以这样做rsync不是很好。另外,我了解ssh使用sh而不是bash。 在bash中,我这样做: cp -r srcdir/!(subdir) dstdir 而且效果很好。但是,当我通过启动脚本时ssh收到错误消息 sh: 1: Syntax error: "(" unexpected 因为它正在使用sh。 我已经检查了sh手册页,但是没有排除文件的选项。 我ssh使用sh正确的假设吗?还有其他建议吗? 编辑1: 如果有用,则输出sudo cat /etc/shells如下: # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux /usr/bin/screen 编辑2: 确定。因此,bash可用,这似乎不是问题。我已验证ssh实际上正在使用bash。这个问题似乎与括号或感叹号的转义有关。我试图从外壳(macos)运行命令,这是实际的命令: ssh -i .ssh/key.pem ubuntu@X.X.X.X 'mkdir /home/ubuntu/OpenFOAM/ubuntu-4.1/run/LES_New-Area_residuals2/N; cp -r /home/ubuntu/OpenFOAM/ubuntu-4.1/run/LES_New-Area_residuals2/mesh/!\(constant\) /home/ubuntu/OpenFOAM/ubuntu-4.1/run/LES_New-Area_residuals2/N; ln -s /home/ubuntu/OpenFOAM/ubuntu-4.1/run/LES_New-Area_residuals2/mesh/constant /home/ubuntu/OpenFOAM/ubuntu-4.1/run/LES_New-Area_residuals2/N/constant' 这样我会收到另一个错误 cp: …
8 shell  ssh  cp 

1
生成参数序列以传递给程序?
我目前正在使用大括号和gloglo的组合来一次在vlc中播放多个文件: vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}* 但是数字总是全序列的,有没有办法以某种方式更简单地指定它,也许像 vlc K20-{06-17}* ?也许seq以某种方式使用? 我可以用 $ echo K20-{$(seq -s, -f "%02.0f" 06 17)}* K20-{06,07,08,09,10,11,12,13,14,15,16,17}* 但这似乎并没有扩大*。可以解决吗?
8 bash 

3
固件包:它们实际上是做什么的?
在我的CentOS上,yum update出现了以下内容: (6/38): iwl1000-firmware-39.31.5.1-62.el7_39.31.5.1-62.2.el7_5.noarch.drpm (7/38): iwl105-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm (8/38): iwl135-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm (9/38): iwl2000-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm (10/38): iwl2030-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm (11/38): iwl3160-firmware-22.0.7.0-62.el7_22.0.7.0-62.2.el7_5.noarch.drpm 等等 这些就是所谓的“固件包”。例如,让我们找到其中一些已安装的: rpm --query --all | grep firmware 然后查询其信息: rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch 我们得到: Summary : Firmware for Intel(R) Centrino Wireless-N 105 Series Adapters Description : This package contains the firmware required by the iwlagn driver …

3
Shell:在if中使用带有参数的函数
我正在尝试执行以下代码,但是当我尝试在if语句中使用函数时,-bash: [: too many arguments出现错误。为什么会这样呢? 先感谢您! notContainsElement () { local e match="$1" shift for e; do [[ "$e" == "$match" ]] && return 1; done return 0 } list=( "pears" "apples" "bananas" "oranges" ) blacklist=( "oranges" "apples" ) docheck=1 for fruit in "${list[@]}" do if [ notContainsElement "$fruit" "${blacklist[@]}" -a …

2
zsh中函数的调用上下文:等同于bash`caller`
在bash中,我可以写: caller 0 并接收呼叫者上下文的: 电话号码 功能 脚本名称 这对于调试非常有用。鉴于: yelp () { caller 0; } 然后,我可以写信yelp查看正在到达的代码行。 我可以实现caller 0在bash如下: echo "${BASH_LINENO[0]} ${FUNCNAME[1]} ${BASH_SOURCE[1]" 我怎样才能获得相同的输出caller 0中zsh?

4
如何使WLAN始终是默认路由?(ip路由列表)
每当我将4G调制解调器添加到树莓派时,它都会位于默认路由ou之上ip route list,但是我希望所有内容都通过wlan,并且仅使用4G调制解调器接收SSH连接。 我找到了关于如何禁用默认路由的答案。 但是,重新启动后,4G调制解调器会回到顶部。 如何使wlan0始终成为默认规则的第一条规则? 更新: 这是我连接USB加密狗时的dmesg输出: [426102.910168] usb 1-1.5.1: new full-speed USB device number 6 using dwc_otg [426103.046670] usb 1-1.5.1: not running at top speed; connect to a high speed hub [426103.056674] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=1f01 [426103.056693] usb 1-1.5.1: New USB device strings: Mfr=1, …

1
如何禁用KDE Plasma 5.13中的音量弹出窗口?
在旧版本中,我曾经osd.show(percent)在函数increaseVolume和decreaseVolume文件/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/main.qml(博客源)中将其注释掉。但是该文件在Plasma 5.13中不再存在。还有其他禁用它的方法吗?
8 kde  volume  kde5  plasma5 

3
使用$ RANDOM时,我的脚本会产生相同的输出
我试图打印一个随机n字母词,n从命令行本身输入,但是由于某种原因,每次使用相同的值时,我的脚本都会给我相同的答案n。 #!/bin/bash num=$1 egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1 我称我的脚本为: $ bash var3.sh 5 étude # always the same output when using 5 $ bash var3.sh 3 zoo # always the same output when using 3 var3.sh我的脚本的名称在哪里,我要随机打印的单词的长度为5。 如何获得一个真正随机的单词?
8 bash  random 

5
$ find -exec cd =>给出错误:=> find:'cd':没有这样的文件或目录
当我运行此命令时,它起作用: $ find . -inum 888696 -exec ls '{}' \; Conversation.pst Outlook Data File Outlook Data File.sbd Trash Unsent Messages Inbox.pst Outlook Data File.msf Sent.pst Trash.msf Unsent Messages.msf 然而,当更换ls与cd它不工作: $ find . -inum 888696 -exec cd '{}' \; find: ‘cd’: No such file or directory 我知道cd是一个bash内置的,所以我想这里面确实没有任何工作: $ find . -inum …
8 bash  find  cd-command 

1
文件系统已安装为root用户,但由用户拥有。为什么?
我正在安装文件系统root,但我不明白为什么它不是root由非特权用户而是由非特权用户拥有。 这是fstab: cat /etc/fstab [...] /dev/sdb /mnt/projects ext4 defaults 0 2 挂载时会发生以下情况: ls -al /mnt/projects/ total 8 drwxr-xr-x 2 root root 4096 mai 25 17:55 . drwxr-xr-x 3 root root 4096 mai 25 17:55 .. mount /dev/sdb ls -al /mnt/projects/ total 24 drwx------ 3 jerome jerome 4096 mai 25 17:52 …

1
为什么从firefox发出的curl命令不能下载任何内容?
我https://raw.githubusercontent.com/andreafrancia/trash-cli/master/README.rst在Firefox中打开,然后从“工具”->“ Web开发者”->“网络”复制以下curl命令: curl 'https://raw.githubusercontent.com/andreafrancia/trash-cli/master/README.rst' -H 'Host: raw.githubusercontent.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-GB,en;q=0.5' --compressed -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'If-None-Match: "6931c3b4d0e94743bb93a36ed8e8c3f5add12f9a"' -H 'Cache-Control: max-age=0' 当我在lxterminal中运行它时,即使我添加-O了它,它也不会下载任何内容。我想知道为什么它不下载,以及如何使它下载文件? 谢谢。
8 curl  firefox 

2
以文件访问xterm的回滚缓冲区
是否可以以某种方式(作为只读文件或字符设备)访问xterm的回滚缓冲区? 核心问题(避免x / y“问题”)是这样的:有时,我刚刚执行的命令会创建不确定的输出,我想以某种方式使用其输出而无需预先考虑。现在,唯一的方法(我知道)是使用鼠标将文本选择为主选择。
8 xterm 


2
在Debian或Ubuntu中安装软件包之前,请检查是否存在多个依赖项
我已经知道我可以通过运行以下命令来检查存储库中是否存在在Debian或Ubuntu中安装软件包所需的多个依赖关系: apt policy first-package second-package ... last-package 该命令还告诉我当前是否已安装每个软件包。 我的问题是如何快速检查在我当前未安装的受支持版本的Debian或Ubuntu中是否存在多个依赖包。因为我当前没有安装该操作系统,所以无法检查依赖包是否在本地和离线存在,但是我想检查所需的依赖包是否存在于终端的默认存储库中。 此信息的一种可能用途是在安装最新版本的Ubuntu或将现有操作系统升级到最新版本之前,检查是否也可以在最新版本的Ubuntu中安装在Ubuntu中安装的应用程序。

2
如果在dmesg中发现某些内容,如何创建一个无限循环来杀死进程?
我需要创建一个while循环,如果dmesg返回某个/任何值,那么它将终止已确定的进程。 这就是我所拥有的。 #!/bin/bash while [ 1 ]; do BUG=$(dmesg | grep "BUG: workqueue lockup" &> /dev/null) if [ ! -z "$BUG" ]; then killall someprocessname else break fi done 我不知道该! -z不该做[ test -n "$BUG" ] 我认为使用-n表示期望二进制。 我不知道该脚本是否还能工作,因为BUG锁定会中止每个进程,但是dmesg在计算机完全崩溃之前,仍然有几行内容-也许我可以追赶并杀死该进程。
8 linux  bash  scripting 

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.