Tag: bash

set,export和env之间的区别是什么?我应该在何时使用它们?

每隔一段时间我就会抨击一个bash脚本,它让我觉得有几种设置变量的方法: key=value env key=value export key=value 当你在一个脚本或一个命令中时(例如,我经常用一个Wine启动器链接一个变量来设置正确的Wine前缀),这些似乎是完全可以互换的,但肯定不是这种情况。 这三种方法有什么区别,你能举个例子说明我什么时候才能使用这些方法吗? 绝对与`VAR = …`和`export VAR = …`有什么区别? 但是我想知道env是如何适应这一点的,一些例子显示每个的好处也会很好:)

将特定类型/扩展名的文件从一个目录移动到另一个目录?

有一个大文件夹充满了大量不同的文件。理想情况下,我想将所有不同的文件转移到各自的文件夹中; 所以jpg文件进入jpg文件夹等 原始文件夹:unsorted_files目标文件夹:jpgfolder我试过了 mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder 但得到一个错误“jpgfolder”不是一个目录“

如何在ssh登录成功时设置电子邮件警报?

有没有人有一个bash脚本,在成功登录ssh服务器的情况下会通过电子邮件或通知某人? 如果有人登录我的个人邮箱,我希望收到通知。 我正在使用运行xfce的Ubuntu 12.04

创建bash文件以打开minecraft启动器

我在终端中使用此命令来运行java 8的minecraft启动程序: /home/max/Java/jre1.8.0_25/bin/java -jar Minecraft.jar 我包含了完整的java路径,因为我作为普通用户将它安装在/home ,我想要包含它。 该命令有效,它用Java 8打开启动器,但我想创建一个bash文件,所以我不必打开终端。 而且,最重要的是,当我点击Minecraft启动器中的游戏并开始游戏时,我不希望终端保持打开状态。 现在,如果我在游戏开始时手动关闭终端,游戏也会关闭。

如何在单独的行中拆分“/ proc / * / environ”文件?

我试图以更易读的格式获取任何/proc/*PID*/environ文件的内容。 我能够以下面显示的方式做到这一点,但我确信这不是正确的方法。 $ cat “/proc/$(pgrep gnome-session -n -U $UID)/environ” USER=spasTEXTDOMAIN=im-configXDG_SEAT=seat0XDG_SESSION_TYPE=waylandSHLVL=1QT4_IM_MODULE=ximHOME=/home/spasDESKTOP_SESSION=ubuntuGNOME_SHELL_SESSION_MODE=ubuntuDBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/busIM_CONFIG_PHASE=2LOGNAME=spasGTK_IM_MODULE=ibusJOURNAL_STREAM=9:147845_=/usr/bin/gnome-sessionUSERNAME=spasXDG_SESSION_ID=70PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binXDG_RUNTIME_DIR=/run/user/1000LANG=en_US.UTF-8XDG_CURRENT_DESKTOP=ubuntu:GNOMEXDG_SESSION_DESKTOP=ubuntuXMODIFIERS=@im=ibusSHELL=/bin/bashGDMSESSION=ubuntuTEXTDOMAINDIR=/usr/share/locale/XDG_VTNR=2QT_IM_MODULE=ximPWD=/home/spasCLUTTER_IM_MODULE=ximXDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktopXDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg $ cat -e “/proc/$(pgrep gnome-session -n -U $UID)/environ” USER=spas^@TEXTDOMAIN=im-config^@XDG_SEAT=seat0^@XDG_SESSION_TYPE=wayland^@SHLVL=1^@QT4_IM_MODULE=xim^@HOME=/home/spas^@DESKTOP_SESSION=ubuntu^@GNOME_SHELL_SESSION_MODE=ubuntu^@DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus^@IM_CONFIG_PHASE=2^@LOGNAME=spas^@GTK_IM_MODULE=ibus^@JOURNAL_STREAM=9:147845^@_=/usr/bin/gnome-session^@USERNAME=spas^@XDG_SESSION_ID=70^@PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin^@XDG_RUNTIME_DIR=/run/user/1000^@LANG=en_US.UTF-8^@XDG_CURRENT_DESKTOP=ubuntu:GNOME^@XDG_SESSION_DESKTOP=ubuntu^@XMODIFIERS=@im=ibus^@SHELL=/bin/bash^@GDMSESSION=ubuntu^@TEXTDOMAINDIR=/usr/share/locale/^@XDG_VTNR=2^@QT_IM_MODULE=xim^@PWD=/home/spas^@CLUTTER_IM_MODULE=xim^@XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop^@XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg^@ $ cat -e “/proc/$(pgrep gnome-session -n -U $UID)/environ” | sed ‘s/\^@/\n/g’ USER=spas TEXTDOMAIN=im-config XDG_SEAT=seat0 XDG_SESSION_TYPE=wayland … 也许我必须为$IFS分配一个特定的值,但它是什么? 达到上述结果的正确方法是什么?

并行运行程序的多个实例

我有一个命令,让我说php process.php 。 我想运行此命令的1000个实例来测试服务器上的负载。 我怎样才能做到这一点? 注意事项: Ctrl + C应立即终止所有实例 它将在单核处理器上运行,因此不需要像multithreading那样的高级function。 很高兴在顶部显示当前运行的实例数 命令应该在同一个终端输出 命令不需要输入

Bash脚本的桌面快捷方式崩溃和烧伤

我在~/bin目录中的Nautilus中为一个位于那里的bash脚本创建了一个链接。 然后我剪切并将链接粘贴到~/Desktop目录中。 当我点击它时,屏幕上没有任何内容。 如果我右键单击该链接并选择Run无任何Run ”。 但我知道它正在运行,因为conky显示多个CPU具有高负载。 正常的CPU%应该是5%到8%,但它徘徊在79%左右。 链接的每个实例占用大约5%的CPU加上systemd占用5%的CPU用于日志记录。 温度通常<50℃,但在这种情况下,它在75℃左右徘徊。 我翻阅了journalctl ,发现了令人讨厌的/循环问题: $ journalctl -b-1 | grep ‘TERM environment variable not set.’ | wc 35763 357630 3325959 我检查了软链接,看起来没问题: lrwxrwxrwx 1 rick rick 30 Mar 26 10:14 Link to grub-display.sh -> /home/rick/bin/grub-display.sh* 请注意,这是我今天发布的一个全新的脚本: 如何在不启动的情况下显示grub菜单和选项? 。 在脚本中使用了clear命令,它在这里和这里链接到另一个线程中的TERM错误消息: 如何在eclipse中修复“TERM环境变量未设置”警告 上面的journalctl错误消息的一些解决方案需要查看: $ env | grep TERM TERM=xterm-256color 我想知道这是~/.bashrc在你打开一个终端时做了什么但在桌面快捷方式(链接)直接运行终端命令时丢失了? grub-display.sh bash脚本从终端窗口运行得很好。 […]

多个种子的传输关闭脚本?

我写了一个关闭脚本进行传输。 在Torrent下载完成后,传输会调用脚本。 该脚本在我的机器上运行完美(Ubuntu 11.04和12.04)。 #!/bin/bash sleep 300s # default display on current host DISPLAY=:0.0 # find out if monitor is on. Default timeout can be configured from screensaver/Power configuration. STATUS=`xset -display $DISPLAY -q | grep ‘Monitor’` echo $STATUS if [ “$STATUS” == ” Monitor is On” ] ### Then check if its still downloading a […]

使用一个命令退出root和user

我知道“不使用sudo su – ”等等。但说实话,我们几乎所有人都这样做。 所以,这是问题所在。 我们无法启用root登录,因此我们必须以用户身份ssh,然后su到root。 这是进程树: 1 7897 7826 7826 ? -1 S 1000 0:00 sshd: josh@pts/0 7897 7898 7898 7898 pts/0 8182 Ss 1000 0:00 \_ -bash 7898 7990 7990 7898 pts/0 8182 S 0 0:00 \_ sudo su – 7990 7991 7990 7898 pts/0 8182 S 0 0:00 \_ su – 7991 […]

添加到路径只有sh文件而不是dir

我有一个包含一堆sh文件的bin文件夹。 例如“server-run.sh”,“server-stop.sh”,“server-do-something.sh”。 我想从任何地方运行文件“server-stop.sh”。 我可以将这个bin文件夹添加到路径,但“run”和“do-something”文件也将可用,我不想污染我的控制台。 此外,我不想将此文件添加到/ bin文件夹,因为它可能会更改。 也许链接。 我可以以某种方式只添加“server-stop.sh”到路径?