Tag: bash

环境变量vs Shell变量,有什么区别?

有人告诉我: BASH不是环境变量,它是一个shell变量 有什么不同?

如何删除目录中的所有文件和子目录而不删除bash中的目录?

是否有命令删除目录中的所有文件和子目录而不删除目录? 例如,如果我的目录“dontDeleteMe”具有子目录“1”,“2”,“3”并且每个子目录中都有几张图片,我该如何删除子目录“1”,“2”和“3”和删除父目录“dontDeleteMe”的所有文件?

毕竟,bash中的“。”和“source”之间有区别吗?

我一直在寻找“。”之间的区别。 和“源”内置命令和一些来源(例如,在本讨论和bash手册页中)表明这些是相同的。 但是,在环境变量出现问题后,我进行了测试。 我创建了一个文件testenv.sh ,其中包含: #!/bin/bash echo $MY_VAR 在命令提示符中,我执行了以下操作: > chmod +x testenv.sh > MY_VAR=12345 > ./testenv.sh > source testenv.sh 12345 > MY_VAR=12345 ./testenv.sh 12345 [注意第一个表单返回一个空字符串] 所以,这个小小的实验表明毕竟存在差异,对于“source”命令,子环境inheritance了父级的所有变量,其中“。”。 它不是。 我错过了什么,或者这是bash的未记录/弃用function? [GNU bash,版本4.1.5(1)-release(x86_64-pc-linux-gnu)]

可以通过SSH访问计算机上的开放终端吗?

我希望在不使用tmux或screen情况下从远程计算机访问一个开放式终端,即在我的机器上本地打开。 这有几个原因,其中最简单的是我不断登陆,我没有提前计划,在我的电脑上运行一些大的工作,回家然后想通过ssh检查它。 本质上,我正在寻找一种方法来连接已经在计算机上运行的终端并查看其输出。 现在,我知道有一些线程说你不能这样做(比如这个 ),而其他人只是推荐screen和tmux (就像这个 , 这个或者这个 )。 我正在寻找的是一种直接访问正在运行的终端进程的方法,或者至少可以看到该终端的缓存输出。 我不一定需要能够在该终端中输入命令。 有没有办法做到这一点? 否则,任何关于黑客攻击的想法都可行吗? 我以为我可能会找到一种方法来自动将stdout,stderr和命令记录到文件中(也许是对bash历史记录的一个聪明的调整,记录了所有内容?)

通过删除旧文件来限制目录的大小

我有一个IP摄像头,它将其录像保存在我的Ubuntu Server 12.04中名为Camera1的特定目录中。 我想通过每天删除一次 – 最旧的文件来将此文件夹的大小限制为5 gigs。 我首先检查了配额程序,但它似乎不允许创建新文件和删除旧文件。 所以我认为最好的方法是运行bash脚本……

怎么做:Gnome终端的下划线,粗体,斜体,删除线,颜色,背景和大小?

怎么做:Gnome终端的下划线,粗体,斜体,删除线和颜色? 胆大 斜体 强调 s̶̶̶̶̶̶̶̶̶̶̶̶̶ 颜色 background font <(如果你不知道,它的单声道) 尺寸

按Enter键会产生^ M而不是换行符

例如,如果我正在tail -f文件或read用户输入, 将在终端中生成^M ,而不是结束read或向stdout添加换行符。 ^J工作正常。 如果重要的话,我正在进入ubuntu系统。 这在zsh和bash都发生在我身上。 我使用的一个解决方案是在zsh中将^M重新映射到^J ,但这似乎无法解决根问题。 有谁知道这可能导致什么? 编辑:为了回答一些问题,我正在从OSX进入Ubuntu。 我正在使用iTerm和zsh。 我也忘了提到我在Ubuntu机器上使用tmux。 编辑2:错过了一个问题。 当我输入Ctrl-V Enter我得到^M (在OSX和Ubuntu上)。 编辑3:在OSX和Ubuntu上, echo $TERM生成screen-256color 。

在脚本中指定sudo的密码

我正在编写一个脚本来更新我的系统(并做一些其他的事情,但这没关系)。 我希望脚本能够自动运行sudo apt-get update和sudo apt-get dist-upgrade –yes 。 我用 – 所以我不必在它运行时选择是; 它会自动升级所有包,而无需我做任何事情。 也就是说,我想以某种方式将我的密码放在脚本中,所以当我运行它时,我也不必输入密码,可能带有参数或其他东西。 你知道,我最后可以把它放在sudo apt-get update –passwd MYPASSWORDHERE 。 我已经尝试了它并且它不起作用,但这是我想要的一个例子。 我最后会做什么参数(–passwd或–password或者什么)?

如何删除特定名称的所有文件夹而不删除其中的内容?

如何删除具有特定名称的所有文件夹(例如128Kbps_Songs)而不删除其文件 例如,如果我的目录“MP3_SONGS”具有子目录“A”,“B”,“C”,并且每个子目录都有MANY目录包含电影名称“FILM_NAME1”,“FILM_NAME2”,“FILM_NAME3”,其中每个电影NAme我在这个“128Kbps_Songs”文件夹中有特定的文件夹NAme(128Kbps_Songs)我有那个电影mp3歌曲文件 如何在每个Film_Name目录中删除文件夹“128Kbps_Songs”并且必须在该FILM_NAME中获取这些mp3歌曲..(必须删除所有FILM_NAME中的128Kbps_Songs文件夹而不删除其中的mp3歌曲,必须在FILM_NAME中获取mp3目录.. MP3_SONGS (Parent Directory) —— A , B, C A (Sub Directory1) —— FILM_NAME1 , FILM_NAME2 B (Sub Directory2) —— FILM_NAME3 , FILM_NAME4 c (Sub Directory3) —— FILM_NAME5 , FILM_NAME6 FILM_NAME1 (Directory) —- 128Kbps_Songs (Directory) —— FILM_NAME1 (MP3 Files) FILM_NAME2 (Directory) —- 128Kbps_Songs (Directory) —— FILM_NAME2 (MP3 Files) FILM_NAME3 (Directory) —- 128Kbps_Songs (Directory) […]

打开一个新的终端和源脚本

我想编写一个脚本来激活虚拟环境并在新终端中为Django项目运行我的服务器。 我的startProject.sh是: #!/bin/bash source virtualenv/bin/activate python manage.py runserver 而且,我可以通过以下方式在我当前的终端上运行此脚本: source startProject.sh 我想在脚本打开的新终端中执行此操作。 #!/bin/bash gnome-terminal –working-directory=/home/myname/project -x ‘source startProject.sh’ 我也尝试过这个。 #!/bin/bash gnome-terminal –working-directory=/home/myname/project -x ‘#!/bin/bash\n source startProject.sh’ 两者都不起作用。 为什么? 我读了其他问题,但我仍然没有得到它。 我是初学者,所以请假设没有经验。