我将这个 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线吗?
我经常不得不在不可靠的 wifi 环境中通过 ssh 连接到服务器。在服务器上,我运行 screen,所以如果我断开连接,我可以重新连接并恢复 screen 会话,并从我中断的地方继续,但连接丢失仍然是一个主要的时间消耗:如果连接断开而我'm 在服务器上,终端窗口往往会冻结。我必须杀死该选项卡,打开一个新选项卡,再次通过 ssh 连接到服务器并恢复屏幕会话。我已经尝试过在服务器上运行 screen 并在本地 screen 。无论哪种方式,当连接断开时它都会冻结。
有什么办法可以让我拥有类似于 screen 或 screen 本身的东西,它会自动尝试重新连接并保持会话运行,所以我不必手动重新连接?通常,当我失去连接时,我认为这只是很短的一段时间 - 可能不到一秒钟。
我使用的是 Ubuntu 14.04 LTS,MATE 版。谢谢
假设我已经找到了.gif文件并找回了一堆文件。我现在想测试它们,看看它们是否是动画gif。我可以通过命令行执行此操作吗?
我在下面上传了几个示例,以防您想对它们进行实验。
所以,这不是问题本身,只是我很好奇的事情。我正在使用从 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结果中呢?以后不就这样了吗?我想我遗漏了一些关于管道实际作用的基本知识。
我正在使用 Linux Mint MATE 版本,以防万一。
我不知道这是否是 Dropbox 特有的,但是当我从 dropbox 下载最初在 Mac 上生成的文件夹的 zip 文件(并且有很多嵌套的子文件夹),然后在我的 Linux 机器上解压缩它时,它完全搞砸了up:所有文件夹都有一个副本,其名称为小写版本,并且子文件出现在副本中而不是原始文件中。如果我的一位拥有 Mac 的同事解压缩了同一个 zip,那就没问题了。
这是我应该得到的:
这就是我实际得到的:
我的猜测是,这在某种程度上与 Mac 对文件名不区分大小写的事实有关,因此文件系统元数据之间存在一些奇怪的不兼容,或其他。
有谁知道 linuz 解压工具可以复制 Mac 解压器的行为,或者以其他方式产生正确的结果?我不介意它是否将 the_MACOSX 文件夹留在那里(我可以删除这些),只要主文件夹没问题。
编辑:我认为,这其实是一个重复的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) 我在 Linux Mint 13 中使用 Mate 1.2.0。我使用的两个文本编辑器是 Gedit 和 Geany (v0.25):我使用 Geany 进行所有编码,因为我更喜欢语法突出显示和其他一些界面功能。
不过,让我烦恼的一件事是这种行为:
当我在 Gedit 中执行此操作时,它会在该工作区中打开一个新的 Gedit 实例,这非常适合我的工作风格,我在每个工作区中都打开了不同的项目。
我可以从程序菜单中启动另一个 Geany 实例,并将一个移动到另一个工作区,但它不会改变行为:然后我看到:
因此,它就像总是在“主要”Geany 中打开一个文件,然后切换到碰巧所在的任何工作区。
有没有办法改变这种行为?我希望它是这样的:
我在设置中看不到与此相关的选项。任何建议表示赞赏!谢谢
大约一周前,由于我不知道是什么(但大概是我不小心做的事情)触发,我的任务栏的通知区域大小变成了所需大小的 3 倍,占用了窗口列表中的宝贵空间。查看附带的屏幕截图,上面有一些潦草的笔记。
我似乎无法让它占用更少的空间。如您所见,它大多只是空灰色。
我是一个彻头彻尾的傻瓜吗?(我更愿意问一些关于某些命令行操作的晦涩问题)。欢迎任何建议。

编辑 - 一些进一步的说明
编辑 - 我刚刚从任务栏中删除它,然后再次添加它,它又恢复正常了。我发誓我已经试过了。所以,我现在不确定如何处理这个问题,这个问题现在已经进入“我自己无法重现,也就是‘那些事情之一’”的领域。我就不说了,因为如果有人能过来告诉我是什么导致了这个错误,那么他们应该得到赏金。
编辑 - 版本是“通知区域 1.2.1”
我正在尝试安装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 需要重新启动或访问的任何其他服务)?
谢谢,马克斯
我正在尝试设置我的本地计算机(具有 Linux Mint 13 Maya),以便我可以 使用我的常规用户帐户chmod和chown任何文件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) linux-mint ×3
bash ×2
mate-desktop ×2
permissions ×2
sudo ×2
files ×1
geany ×1
gif ×1
gnu-screen ×1
grep ×1
linux ×1
monit ×1
mysql ×1
nginx ×1
osx ×1
pipe ×1
session ×1
ssh ×1
string ×1
toolbar ×1
ubuntu ×1
workspaces ×1
zip ×1