我有一个文件夹,里面有一些目录和一些文件(有些是隐藏的,以点开头)。
for d in *; do
echo $d
done
Run Code Online (Sandbox Code Playgroud)
将遍历所有文件和目录,但我只想遍历目录。我怎么做?
我想从输出的每一行中删除所有前导和尾随空格和制表符。
有没有一个简单的工具,比如trim我可以将我的输出输入到其中?
示例文件:
test space at back
test space at front
TAB at end
TAB at front
sequence of some space in the middle
some empty lines with differing TABS and spaces:
test space at both ends
Run Code Online (Sandbox Code Playgroud) 如果我使用
tmux attach
Run Code Online (Sandbox Code Playgroud)
我可以附加到正在运行的会话,但如果没有运行会话,我只会收到错误
no sessions
Run Code Online (Sandbox Code Playgroud)
如果没有运行,如何自动启动新会话?就像是
tmux attach-or-create-new-session
Run Code Online (Sandbox Code Playgroud) 我有这个输入,它显示在列中。我想获取此示例的最后一列:
[ 3] 1.0- 2.0 sec 1.00 MBytes 8.39 Mbits/sec
[ 3] 2.0- 3.0 sec 768 KBytes 6.29 Mbits/sec
[ 3] 3.0- 4.0 sec 512 KBytes 4.19 Mbits/sec
[ 3] 4.0- 5.0 sec 256 KBytes 2.10 Mbits/sec
...
Run Code Online (Sandbox Code Playgroud)
如果我使用
cut -d\ -f 13
Run Code Online (Sandbox Code Playgroud)
我得到
Mbits/sec
6.29
4.19
2.10
Run Code Online (Sandbox Code Playgroud)
因为有时中间会有额外的空格。
如何在用户按下之前停止 bash 脚本Space?
我想在我的脚本中提出问题
按空格继续或CTRL+C退出
然后脚本应该停止并等到按下空格键。
我可以检查文件是否存在并且是带有 -L 的符号链接
for file in *; do
if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi
done
Run Code Online (Sandbox Code Playgroud)
如果它是带有 -d 的目录:
for file in *; do
if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; fi
done
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能只测试到目录的链接呢?
我模拟了一个测试文件夹中的所有案例:
/tmp/test# ls
a b c/ d@ e@ f@
/tmp/test# file *
a: ASCII text
b: ASCII text
c: directory
d: symbolic link …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个没有密码的用户,如下所示:
sudo adduser \
--system \
--shell /bin/bash \
--gecos ‘User for managing of git version control’ \
--group \
--disabled-password \
--home /home/git \
git
Run Code Online (Sandbox Code Playgroud)
它创建得很好。但是当我尝试在 git 用户下登录时,我输入了密码:
su git
Password:...
Run Code Online (Sandbox Code Playgroud)
当我把它留空时,我收到一个错误:
su: Authentication failed
Run Code Online (Sandbox Code Playgroud)
怎么了?
在我的 Ubuntu-Desktop 和我的 debian-server 上,我有一个需要每分钟执行一次的脚本(一个调用我的空间在线浏览器游戏的分钟的脚本)。
问题是 debian 派生 cron 在/var/log/syslog每次执行时都会记录。我最终看到重复执行的消息/var/log/syslog:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Run Code Online (Sandbox Code Playgroud)
我知道为了抑制程序的输出,我可以将它重定向到/dev/null,例如隐藏程序中的所有错误和警告消息,我可以像这样在 crontab 中创建一行
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Run Code Online (Sandbox Code Playgroud)
但我想运行一个 cronjob 并确保所有生成的输出或错误都通过管道传递到 NULL,因此它不会在系统日志中生成任何消息,也不会生成任何电子邮件
编辑:
有一个解决方案可以通过更改将 cron-logs 重定向到一个单独的日志,就像这里提出的那样/etc/syslog.conf
但缺点是,所有 cronjobs 的所有输出都被重定向。
我可以以某种方式只将单个 cronjob 重定向到单独的日志文件吗?最好在cron.hourly文件本身内部进行配置。
我需要允许用户(与 root 不同)运行侦听端口 80 的服务器。
有没有办法做到这一点?
关于extundelete如何尝试取消删除/var/tmp/test.iso我刚刚删除的文件,是否有一个简单的选项?
(这并不重要,我会开始以只读方式重新安装驱动器或类似的东西。我也可以再次重新下载该文件)
我正在寻找一个简单的命令,如果我设法快速恢复它,我可以尝试使用它。
我知道,可以以只读方式重新安装驱动器:(请参阅如何简单地恢复刚刚删除的空磁盘上的唯一文件?)
但这在仍然挂载的磁盘上也有可能吗?
信息:
如果删除的文件在 NTFS 分区上,则很容易,ntfsundelete例如,如果您知道大小约为 250MB,则使用
sudo ntfsundelete -S 240m-260m -p 100 /dev/hda2
Run Code Online (Sandbox Code Playgroud)
然后通过inode取消删除文件,例如
sudo ntfsundelete /dev/hda2 --undelete --inodes 8270
Run Code Online (Sandbox Code Playgroud) bash ×3
files ×2
authbind ×1
columns ×1
control-flow ×1
cron ×1
cut ×1
directory ×1
email ×1
extundelete ×1
git ×1
linux ×1
networking ×1
pipe ×1
privileges ×1
shell ×1
shell-script ×1
tcp ×1
test ×1
tmux ×1
ubuntu ×1
users ×1
whitespace ×1