小编Max*_*ams的帖子

为什么这个脚本在终端中工作而不是从文件中工作?

我将这个 shell 脚本保存在一个文件中:它执行一些基本的字符串替换。

#!/bin/sh
html_file=$1
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
Run Code Online (Sandbox Code Playgroud)

如果我将它粘贴到命令行中,它工作正常:

$ html_file="/home/max/for_pauld/test_no_base64.html"
  echo "html_file = $html_file"
  substr=.pdf
  pdf_file="${html_file/.html/.pdf}"
  echo "pdf_file = $pdf_file"
Run Code Online (Sandbox Code Playgroud)

html_file = /home/max/for_pauld/test_no_base64.html
pdf_file = /home/max/for_pauld/test_no_base64.pdf
Run Code Online (Sandbox Code Playgroud)

这是上面 echo 的输出 - 它按预期工作。

但是,当我调用脚本时,

$ saucer "/home/max/for_pauld/test_no_base64.html"
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

html_file = /home/max/for_pauld/test_no_base64.html
/home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution
Run Code Online (Sandbox Code Playgroud)

我的脚本使用的是不同版本的 bash 还是什么?我需要改变我的shebang线吗?

bash string

19
推荐指数
2
解决办法
3万
查看次数

屏幕或类似的,用于自动恢复不稳定的 ssh 连接

我经常不得不在不可靠的 wifi 环境中通过 ssh 连接到服务器。在服务器上,我运行 screen,所以如果我断开连接,我可以重新连接并恢复 screen 会话,并从我中断的地方继续,但连接丢失仍然是一个主要的时间消耗:如果连接断开而我'm 在服务器上,终端窗口往往会冻结。我必须杀死该选项卡,打开一个新选项卡,再次通过 ssh 连接到服务器并恢复屏幕会话。我已经尝试过在服务器上运行 screen 并在本地 screen 。无论哪种方式,当连接断开时它都会冻结。

有什么办法可以让我拥有类似于 screen 或 screen 本身的东西,它会自动尝试重新连接并保持会话运行,所以我不必手动重新连接?通常,当我失去连接时,我认为这只是很短的一段时间 - 可能不到一秒钟。

我使用的是 Ubuntu 14.04 LTS,MATE 版。谢谢

ssh gnu-screen session

19
推荐指数
1
解决办法
2832
查看次数

查找目录及其子目录中的所有动画 gif 文件

假设我已经找到了.gif文件并找回了一堆文件。我现在想测试它们,看看它们是否是动画gif。我可以通过命令行执行此操作吗?

我在下面上传了几个示例,以防您想对它们进行实验。

动画 GIF 图像

动画 gif 图像

静态 GIF 图片

静态 gif 图像

linux files gif

12
推荐指数
3
解决办法
2622
查看次数

ps 传输到 grep 的时间

所以,这不是问题本身,只是我很好奇的事情。我正在使用从 Debian 分支出来的 Linux Mint MATE。如果我做:

ps afx  | grep abcdefg
Run Code Online (Sandbox Code Playgroud)

我得到:

16599 pts/3    S+     0:00  |   \_ grep --color=auto abcdefg
Run Code Online (Sandbox Code Playgroud)

因此,它显示了grep 的过程。但是,这之后ps管道中:我本来以为上面做的ps,得到的结果,然后将它们传送到grep。那么为什么grep实际上出现在ps结果中呢?以后不就这样了吗?我想我遗漏了一些关于管道实际作用的基本知识。

grep bash pipe

7
推荐指数
1
解决办法
2874
查看次数

在 linux 上解压缩“Mac 风格”

我正在使用 Linux Mint MATE 版本,以防万一。

我不知道这是否是 Dropbox 特有的,但是当我从 dropbox 下载最初在 Mac 上生成的文件夹的 zip 文件(并且有很多嵌套的子文件夹),然后在我的 Linux 机器上解压缩它时,它完全搞砸了up:所有文件夹都有一个副本,其名称为小写版本,并且子文件出现在副本中而不是原始文件中。如果我的一位拥有 Mac 的同事解压缩了同一个 zip,那就没问题了。

这是我应该得到的:

在此处输入图片说明

这就是我实际得到的:

在此处输入图片说明

我的猜测是,这在某种程度上与 Mac 对文件名不区分大小写的事实有关,因此文件系统元数据之间存在一些奇怪的不兼容,或其他。

有谁知道 linuz 解压工具可以复制 Mac 解压器的行为,或者以其他方式产生正确的结果?我不介意它是否将 the_MACOSX 文件夹留在那里(我可以删除这些),只要主文件夹没问题。

osx zip linux-mint

7
推荐指数
1
解决办法
1862
查看次数

全新安装 mysql-server 后,无法使用 `mysql root -u` 登录

编辑:我认为,这其实是一个重复https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04
我使用了该页面上的最佳答案并且它起作用了。


我刚刚安装了一个新的 Linux Mint 18 MATE,并且正在尝试安装 Mysql。我这样做如下:

sudo apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)

已安装

mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrappe
Run Code Online (Sandbox Code Playgroud)

这经历了一些“gui”屏幕,提示我输入密码。我只是按回车键,我认为这就像在说“没有密码”。

但是现在,我以为我可以使用mysql -u root,但是它说

ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)

以防万一,我尝试了重新启动。问题是我没有使用正确的密码,还是更根本的问题?如果是密码,我如何找出它是什么/重置它?谢谢,马克斯

编辑:按照下面f35的回答,我做了以下事情:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root
Run Code Online (Sandbox Code Playgroud)

然后在 mysql 中,我尝试更改密码,但它无法识别字段名称:我执行 desc 以查看其中的内容:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get …
Run Code Online (Sandbox Code Playgroud)

permissions mysql

7
推荐指数
1
解决办法
2万
查看次数

Geany:在该工作区中打开文件时为每个工作区打开一个新实例

我在 Linux Mint 13 中使用 Mate 1.2.0。我使用的两个文本编辑器是 Gedit 和 Geany (v0.25):我使用 Geany 进行所有编码,因为我更喜欢语法突出显示和其他一些界面功能。

不过,让我烦恼的一件事是这种行为:

  • 在工作区 1 的 Geany 中打开一个文件
  • 转到工作区 2
  • 双击文件打开它(在 Geany 中)
  • 桌面再次切换到工作区 1 并在 Geany 中打开文件。

当我在 Gedit 中执行此操作时,它会在该工作区中打开一个新的 Gedit 实例,这非常适合我的工作风格,我在每个工作区中都打开了不同的项目。

可以从程序菜单中启动另一个 Geany 实例,并将一个移动到另一个工作区,但它不会改变行为:然后我看到:

  • 在工作区 1 的 Geany 中打开一个文件
  • 转到工作区 2
  • 从程序菜单启动一个新的 Geany 实例(所以我现在每个工作区都有一个)
  • 双击文件打开它(在 Geany 中)
  • 桌面再次切换到工作区 1 并在 Geany 的第一个实例中打开文件。

因此,它就像总是在“主要”Geany 中打开一个文件,然后切换到碰巧所在的任何工作区。

有没有办法改变这种行为?我希望它是这样的:

  • 打开文件时:此工作区中是否有 Geany 正在运行?
    • 是:在那个 Geany 中打开文件
    • 否:在此工作区中打开一个新的 Geany 并在其中打开文件。

我在设置中看不到与此相关的选项。任何建议表示赞赏!谢谢

linux-mint workspaces geany mate-desktop

6
推荐指数
1
解决办法
3794
查看次数

Linux Mint MATE “通知区域” - 比它需要的大得多

大约一周前,由于我不知道是什么(但大概是我不小心做的事情)触发,我的任务栏的通知区域大小变成了所需大小的 3 倍,占用了窗口列表中的宝贵空间。查看附带的屏幕截图,上面有一些潦草的笔记。

我似乎无法让它占用更少的空间。如您所见,它大多只是空灰色。

我是一个彻头彻尾的傻瓜吗?(我更愿意问一些关于某些命令行操作的晦涩问题)。欢迎任何建议。

我的工具栏

编辑 - 一些进一步的说明

  • 如果我右键单击拖动手柄,我可以看到它没有被锁定。我可以选择移动它,移动整个通知区域,将其移除或锁定。
  • 右键单击大的灰色区域没有任何作用。
  • 如果我将拖动手柄向右拖动(希望这会移动分隔符),则整个通知区域(包括灰色区域)将移动到时钟的右侧。

编辑 - 我刚刚从任务栏中删除它,然后再次添加它,它又恢复正常了。我发誓我已经试过了。所以,我现在不确定如何处理这个问题,这个问题现在已经进入“我自己无法重现,也就是‘那些事情之一’”的领域。我就不说了,因为如果有人能过来告诉我是什么导致了这个错误,那么他们应该得到赏金。

编辑 - 版本是“通知区域 1.2.1”

notifications linux-mint toolbar mate-desktop

5
推荐指数
1
解决办法
2482
查看次数

monit 的用户设置?它应该以root身份运行,还是它自己的用户?

我正在尝试安装monit在 Ubuntu 12.04 服务器上。我已经设置并配置了它(我认为),但我不确定它应该以什么用户身份运行。

我在服务器上的用户名为deploy,我的 monitrc 文件如下所示:

$ ls -l /etc/monit/monitrc
-rwx------ 1 deploy deploy 10229 2015-07-30 12:38 /etc/monit/monitrc
Run Code Online (Sandbox Code Playgroud)

即,它归我登录服务器的用户所有。我已经启动了 monit 守护进程,我可以看到它在运行,ps我可以登录到它的 Web 界面。

我不确定的是如何赋予它重新启动进程的特权。例如,nginx:如果我想自己重新启动 nginx,我需要做

sudo /etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)

这是否意味着 monit 也需要执行 sudo 才能重新启动它?或者,我是否应该使用自己的用户配置 monit,并设置该用户,以便它可以在没有 sudo 的情况下重新启动 nginx(以及 monit 需要重新启动或访问的任何其他服务)?

谢谢,马克斯

ubuntu sudo nginx monit

3
推荐指数
1
解决办法
6146
查看次数

不能给自己 chmod/chown 的 NOPASSWD 特权

我正在尝试设置我的本地计算机(具有 Linux Mint 13 Maya),以便我可以 使用我的常规用户帐户chmodchown任何文件max

在此页面之后, https://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password

我做了以下工作:

#edit the /etc/sudoers file via `visudo` 
sudo visudo

#in the file, added these lines:
Cmnd_Alias NOPASS_CMNDS = /bin/chmod, /bin/chown
max ALL=(ALL) NOPASSWD: NOPASS_CMNDS
Run Code Online (Sandbox Code Playgroud)

然后保存了。(我得到了 chmod 和 chown 使用的位置which

所以,我的visudo文件现在看起来像这样:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See …
Run Code Online (Sandbox Code Playgroud)

permissions sudo

3
推荐指数
1
解决办法
3040
查看次数