Questions tagged «bash»

Bash(Bourne-Again SHell)是默认情况下在Ubuntu命令行界面中使用的shell。

3
如何在运行的shell中编辑变量?
我正在编辑我的PS1提示符,但我不想继续寻找我的bashrc来更新它(因为我的bashrc也重置了其他东西)。我也不想一遍又一遍地复制和粘贴。有没有办法像使用nano(我的默认编辑器)那样交互式地编辑变量? PS1主要是一个示例,因为我想对其他var执行相同的操作。我要以交互方式进行操作的原因是该变量已经很长了,我只需要在其中编辑一些字符即可。而且我只需要在当前shell中进行更改即可。

2
从这个任何恢复?须藤chmod 600。*
警告 - DO NOT运行上面所提到COMMAND 因此,我似乎在这里做了一些相当愚蠢的说明。我试图更改目录中几个文件的权限,所有这些文件都.以sudo / root身份开始读/写。 我尝试一次更改多个文件的尝试似乎在全局上做了非常可怕的事情。在目录中(不是在根目录下)时,我跑着走了sudo chmod 600 .*,现在我要从手机中发布此文件……此刻我仍然打开终端窗口,但是我很确定笔记本电脑是否可以睡觉我已经完全完成了。可笑的是,这意味着这个问题有些紧迫性。 哦,这似乎改变了我该猜到的地方附近该死的权限。我什至无法运行lsor cd ..命令。尝试cd /home/brian或cd ~给出错误bash: cd: /home/brian: Permission Denied以及尝试执行sudo命令只是说bash: /usr/bin/sudo: Permission Denied 我担心会重新启动,不知道是否有任何内置的东西可以从这种愚蠢的东西中恢复,但是我想我会先在这里问一下,然后再使情况变得更糟。我是一个非常新的Linux,因为我将其主要操作系统转换了下来,最近又提倡使用它,但是,哎呀,这有点刺耳。任何想法尝试尝试将不胜感激。 编辑:我想提供有关如何/在何处执行此命令的说明。它是从/.atx $任意目录执行的,但下面有更多详细信息。 以我的常规用户名登录后brian,我打开了/.atx一个包含三个配置类型纯文本文件的终端。每个文件名均以开头.。该目录/名称/文件不是通用软件包的任何部分,而只是我以编程方式移动的任意一组配置。文件包含一些SQL Server连接字符串信息,只希望它们被半遮蔽。

4
循环执行两个序列
我正在尝试在外壳程序的同一循环中遍历两个序列,如下所示: #!/bin/bash for i in (1..15) and (20..25) ; do echo $i ...... .....other process done 任何想法我怎么能做到这一点?
8 command-line  bash  sh 

1
发出“挂起”命令后如何恢复终端功能?
我输入suspend了终端,它暂停了执行。 如何恢复正常的终端功能?我已经尝试过Ctrl+ C,Ctrl+ D,Ctrl+ Q(如此处建议)和Ctrl+ Z,但是这些都不起作用。当然我可以关闭终端并打开一个新终端,但是没有办法“恢复”终端功能吗? 我正在使用默认(bash)shell运行Ubuntu GNOME 16.04。

1
历史命令如何工作?
当我在终端中键入任何命令时,~/.bash_history直到退出会话,该命令才出现在文件中。 另外,当我手动编辑~/.bash_history文件时(例如,我删除了最后三个命令),当我键入文件时,history它仍然显示我从~/.bash_history文件中删除的命令。只有当我退出会话并再次登录时,它们才会消失。 我的~/.bash_history文件和history命令如何同步?

7
从〜/ .bash_history删除历史记录
我对存储在中的终端或命令行历史记录有一些疑问~/.bash_history。 我可以使用history命令在终端中看到该文件,但是如果尝试使用gedit bash_history该文件打开该文件,则该文件完全为空。为什么? 我发现了如何使用以下代码行从终端中删除文件中一定数量的行: for i in {1..N}; do history -d N; done 其中N是要删除的行(或命令)的数量,但是现在历史记录文件显示了最后一个命令,如果您试图掩盖内容,那并不是很聪明。因此,问题是:我该如何给出最后一个代码行并确保未记录该行?

2
退格键在运行bash脚本中不起作用
我正在运行一个非常简单的脚本,该脚本逐行读取并将输入的行打印回终端: while read CMD; do echo $CMD done 它工作正常,但是当我尝试编辑带有backspace字符的行时,它会打印^?而不是删除字符。当我按Ctrl+时backspace,输出为^H。如何解决此问题,以便backspace删除字符而不是添加这些字符?我尝试了stty erase '^?'命令,但没有成功。


2
在Ubuntu 16.04中创建别名以捕捉程序包的正确方法是什么?
TL; DR 如何在Ubuntu 16.04中创建系统范围的别名以捕捉软件包? 更多细节 我想作为一个快速安装Blender。我发现,有可以安装的blender-tpaw软件包。不幸的是,安装后,它在终端中可以使用blender-tpaw,而不是blender。 使用快照别名 所以首先我尝试运行command sudo snap alias blender-tpaw blender,根据:https : //insights.ubuntu.com/2017/01/28/ubuntu-core-how-to-enable-aliases-for-your-snaps-commands /。但这就是我所拥有的: error: cannot perform the following tasks: - Enable aliases for snap "blender-tpaw" (cannot enable alias "blender" for "blender-tpaw", no such alias) 在/ usr / local / bin中创建符号链接 然后我尝试进行符号链接,sudo ln -s /snap/bin/blender-tpaw /usr/local/bin/blender但是在这种情况下发生了非常奇怪的事情:现在当我blender在终端输入时,我得到了snap命令的输出... 将别名放在/etc/profile.d中 我也试图在中创建别名 …

1
外部调用脚本不起作用
我使用一个简单的脚本从.mp4文件创建.mp3: #!/bin/bash for i in *.mp4 do ffmpeg -i "$i" -ab 128k "${i%mp4}mp3" done 从桌面运行或通过终端调用时,脚本运行良好。但是,从外部脚本调用该脚本时,该脚本无法运行,返回 “ * .mp4:无此类文件或目录”。 我怀疑问题出在外壳扩展上,但无法解决这种情况。
8 bash  scripts 

7
Bash脚本-如何连接以下字符串?
这是在Linux(Ubuntu / Fedora)中bash执行cpuid发现的脚本部分: /usr/bin/cpuid > id.txt CPUID=id.txt echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a=`cat cpu.txt` echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a+=`cat cpu.txt` 因此,对于我的笔记本电脑,脚本的这一部分(如下所示)为60。 现在如何仅使用局部变量而不cpu.txt涉及中间文件()来执行此操作?

5
每三天执行一次Bash脚本
我想每3天执行一次Shell脚本。结合使用crontab并01 00 */3 * *不能真正满足条件,因为它将在每月31日运行,然后在一个月的第一天再次运行。该*/3语法是相同的话说,1,4,7 ...... 25,28,31。 应该有办法使脚本本身检查条件,如果还没有3天,则退出。因此crontab每天都会执行该脚本,但是脚本本身会检查是否已经过去了3天。 我什至找到了一些代码,但是它给了我语法错误,任何帮助将不胜感激。 if (! (date("z") % 3)) { exit; } main.sh: line 1: syntax error near unexpected token `"z"' main.sh: line 1: `if (! (date("z") % 3)) {'


1
如何使用Win Explorer在Windows上的Ubuntu上为Bash创建文件夹?
如何使用“ Windows上的Ubuntu上的Bash”使用Windows资源管理器在主目录中创建文件夹或文件? 我尝试了以下方法: 在Windows资源管理器中输入C:\ Users {user} \ AppData \ Local \ lxss {username} 使用Windows资源管理器创建一个名为“脚本”的文件夹 在Windows上的Ubuntu上打开Bash 跑 ls -a 结果:共0 有没有计划进行类似的工作? PS解决方法: 我用mkdir&touch在bash中创建文件夹和文件,例如scripts/menu.py 我使用Windows资源管理器和记事本++编辑menu.py 我用 python scripts/menu.py

4
检测工具是否已经在执行中,但仅适用于当前用户
到现在为止 pidof -o %PPID -x "my-tool" 检测最终运行的my-tool实例的pid。 这是我的工具文件(可执行的bash脚本)的简短版本 #!/bin/bash if pidof -o %PPID -x "my-tool"; then echo "Already running" exit 1 fi ... if not running go on 但是现在我需要允许每个用户一个实例,每台机器允许多个实例,因此我们可以同时运行100个my-tool,但每个用户只能运行1个。 请注意,我需要测试以创建类似单例的东西。如果该工具将启动并且有另一个实例在运行,它将自动关闭。 简而言之:我需要一个bash脚本可以检测自身是否已经为当前用户运行,并且在这种情况下必须退出。 如何 ?
8 bash 

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.