我有一个包含很多条件的很长的 shell 脚本,我想知道脚本中是否有任何语法错误而不运行它。
由于解释了 shell 脚本,我认为这是不可能的,但是有没有办法通过使用一些技巧来知道。
我在 中放入了一个可执行脚本/etc/cron.hourly,但该脚本并不是每小时运行一次,实际上它根本没有运行。
这是我制作的脚本(小时声音):
#!/bin/bash mplayer ~/Music/sfx_msg-highlight.wv &> /dev/null & spd-say -r -50 -p 50 -t male3 "现在是 $(date +"%l %p")" 通知发送“它是:”“$(date +"%l %p") 现在。-i ~/Pictures/"first tee.png" -t 5000
我的 crontab 是:
DISPLAY=":0.0"
XAUTHORITY="/home/naruto/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
0 * * * * /home/naruto/Hour-sound.sh
Run Code Online (Sandbox Code Playgroud)
虽然mplayer和spd-say命令运行正确,但notify-send不是。我还尝试将错误重定向到文件:
0 * * * * /home/naruto/Hour-sound.sh 2>/tmp/error
Run Code Online (Sandbox Code Playgroud)
但这显示没有输出。我究竟做错了什么?
我正在尝试编写一个bash脚本来使用该gnome-open命令打开某些文件(主要是 pdf 文件)。我还希望终端在打开 pdf 文件后退出。
我曾尝试添加exit到我的脚本的末尾,但这并没有关闭终端。我确实尝试在网上搜索我的问题的答案,但找不到任何合适的答案,如果你们能提供帮助,我将不胜感激。
我需要一个只杀死我运行命令的终端而不是所有终端的答案,这可能吗?我接受的上一个答案会杀死所有打开的终端窗口。直到今天我才意识到情况是这样。
sudoers文件已包含/bin/mount -t cifs //*/* /media/* -o username=*所有操作员的命令cifs通过只输入一次密码的脚本安装共享,而不是两次。此脚本有效:
#!/bin/bash
sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'
Run Code Online (Sandbox Code Playgroud)
...但它要求用户输入两次相同的密码!
sudo这也可以:
#!/bin/bash
echo -n Password:
read -s szPassword
echo $szPassword | sudo -S sh -c 'echo $szPassword | mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'
Run Code Online (Sandbox Code Playgroud)
...但这需要我允许所有运营商用户能够sudo sh(主要安全问题)
如何安装CIFS共享在bash ¹没有把sh中sudoers的文件,也没有建立一个永久/临时文件???
注 1:没有 …
在之前安装的 kubuntu 15.xx 版本中,我添加了一行/etc/rc.local-/home/diet/scripts/my-auto-mount-script这显然是指一个脚本,如果在家庭 wifi 网络驱动器上应该安装。
这在 kubuntu 15.xx 上完美无缺
升级后,它似乎/etc/rc.local在启动时被忽略,因为运行该命令/etc/rc.local似乎仍然可以解决问题。我认为 rc.local 被忽略的原因是因为它引用的脚本应该在脚本成功和脚本失败时生成日志,但没有日志。
谁能给我一些有关如何解决此问题的指示?
PS:是的,我知道放入东西/etc/fstab也是安装驱动器的一种方式,但是当我不在家时,我讨厌我可以看到海豚上的驱动器并且上面有那些小红叉,因为它们不在那里. 这样当我在路上(它是一台笔记本电脑)时,人们看不到我家里的东西。
我正在为我的虚拟机构建一个 bash 脚本,我想知道如何替换本文档中的特定行:
[base]
## uncomment and set autologin username to enable autologin
# autologin=dgod
## uncomment and set timeout to enable timeout autologin,
## the value should >=5
# timeout=10
## default session or desktop used when no systemwide config
# session=/usr/bin/startlxde
Run Code Online (Sandbox Code Playgroud)
这一行:
# autologin=dgod
Run Code Online (Sandbox Code Playgroud)
我想改成这个
autologin=ubuntu
Run Code Online (Sandbox Code Playgroud)
我尝试过“tee”和“sed”,但无法使其工作。对于比我更经常使用 bash 脚本的人来说,这应该很容易。
我完全感到困惑和迷惑。我一直很高兴地从终端编码和运行 Python 脚本(并且还运行 Python 解释器)。我上床睡觉是一个快乐的 Python 用户,但突然间我无法从 shell 运行任何 Python 脚本。
hello.py 包含:
#!/usr/bin/python3
print('Hello world!')
Run Code Online (Sandbox Code Playgroud)
然而突然:
% ./hello.py
./hello.py: 1: #!/usr/bin/python3: not found
./hello.py: 2: Syntax error: word unexpected (expecting ")")
Run Code Online (Sandbox Code Playgroud)
但
% python3 hello.py
Hello world!
% python hello.py
Hello world!
Run Code Online (Sandbox Code Playgroud)
什么。这。扎金。远行者。
ls -la hello.py 显示:
-rwxrwxr-x 1 Lexible Lexible 44 May 25 08:35 hello.py
Run Code Online (Sandbox Code Playgroud)
@Kulfy 每两次请求
% file -k hello.py
hello.py: Python script text executable\012- a /usr/bin/python3 script, UTF-8 Unicode (with BOM) text executable
% …Run Code Online (Sandbox Code Playgroud) 我有超过 60 到 80 个运行 Ubuntu 的系统。其中一些是 8.04 版本,一些是最新版本 10.10。现在我们正在将所有旧的 Ubuntu 版本升级到新版本。很难打开每个 Ubuntu 系统并记录旧的 Ubuntu 版本然后升级。我在一个文本文件中拥有所有这些机器的 IP 地址。所以我正在寻找一个简单的 bash 脚本来自动执行任务。我希望输出看起来像这样:
172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10
等等.. 谁能帮帮我?
当我在 Ubuntu 中登录和注销时,我需要运行一个脚本。
我试图将脚本放入我的~/.bash_login但它没有用。
有没有更好的位置可以运行我的脚本?
我的脚本位于/home/gsd/script/login.sh并且它是可执行的。
编辑:
我的脚本在我输入时运行:/home/gsd/script/login.sh并设置为 +x
现在,我只有:touch /home/gsd/test.txt在~/.bash_login测试。
从未创建文件 test.txt
编辑2:
gsd@laptop:~$ ll ~/.bash*
-rw------- 1 gsd gsd 38639 2012-01-25 17:25 .bash_history
-rw-r--r-- 1 gsd gsd 29 2012-01-25 15:22 .bash_login
-rw-r--r-- 1 gsd gsd 220 2011-11-03 19:22 .bash_logout
-rw-r--r-- 1 gsd gsd 3136 2011-11-04 08:00 .bashrc
Run Code Online (Sandbox Code Playgroud) 试图让 casperjs 在 Ubuntu 12.04 上运行。在我运行时安装它后,我得到:
09:20 $ ll /usr/local/bin/casperjs
lrwxrwxrwx 1 root root 26 Nov 6 16:49 /usr/local/bin/casperjs -> /opt/casperjs/bin/casperjs
09:20 $ /usr/bin/env python --version
Python 2.7.3
09:20 $ cat /opt/casperjs/bin/casperjs | head -4
#!/usr/bin/env python
import os
import sys
09:20 $ casperjs
: No such file or directory
09: 22 $ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
[GCC 4.6.3] on linux2
Run Code Online (Sandbox Code Playgroud)
所以 Python 存在且可运行,casperjs 指向正确的位置,它是一个 Python 脚本。但是当我运行它时,我得到“没有这样的文件”。
我可以通过更改 casperjs python 文件的第一行来修复它:
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
到:
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
结果: …