Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
如何计算bash中定义的数组的长度?
我是bash的新手,找不到很好的教程来回答我的问题。 array=( item1 item2 item3) for name in ${array[@]}; do echo current/total ... some other codes done 我想计算“当前”和“总计”值,因为它的预期输出为: 1/3 2/3 3/3 谢谢你的提示
57 bash  array 

9
如何grep表示相同的字符串,但同时有多个文件?
我有一组日志文件需要查看,我想一次在同一文件上搜索特定的字符串是否可以?目前我正在使用 grep -E 'fatal|error|critical|failure|warning|' /path_to_file 如何使用此功能并一次搜索多个文件的字符串?如果这需要编写脚本,那么有人可以提供简单的脚本来执行此操作吗?
57 scripting  grep 


5
我的sshd日志在哪里?
我在标准位置找不到sshd日志。 我尝试过的 不在 /var/log/auth.log 不在 /var/log/secure 系统没有搜索'auth.log'到任何东西吗? 我已经设置/etc/ssh/sshd_config为显式使用SyslogFacility AUTH并LogLevel INFO重新启动sshd,但仍然找不到它们。 我在Arch Linux上使用OpenSSH 6.5p1-2。

1
For zsh和bash中的循环
我注意到有两种在zsh中构建循环的替代方法: for x (1 2 3); do echo $x; done for x in 1 2 3; do echo $x; done 他们都打印: 1 2 3 我的问题是,为什么要使用两种语法?是否在每个对象中都$x通过不同类型的对象进行迭代? bash是否也有类似的区别? 附录: 为什么以下工作? #!/bin/zsh a=1 b=2 c=5 d=(a b c) for x in $d; do print $x;done 但这不是吗?: #!/bin/zsh a=1 b=2 c=5 d=(a b c) …
57 bash  zsh 

5
如何检查rpm系统中可用的软件包版本?
如果我想检查Debian中软件包的可用版本,我apt-cache policy pkgname会在wajig给出的情况下运行它: wajig: Installed: 2.01 Candidate: 2.01 Version table: *** 2.01 0 100 /var/lib/dpkg/status 2.0.47 0 500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages 500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages 这意味着有三个wajig软件包,其中一个已安装(/var/lib/dpkg/status),另外两个已安装(相同版本)。这两个之一在本地存储库中,另一个可从远程存储库获得。 在rpm系统上如何获得类似的结果?

5
如何获得命令别名的bash补全?
我希望在命令行别名上使用制表符补全,例如,说我定义了以下别名: alias apt-inst='sudo aptitude install' 当我按下Tab键时,是否有办法获得aptitude提供的补全?例如,当我编写“ sudo aptitude install gnumer”并单击选项卡时,aptitude将其完成为gnumeric,或者如果存在不确定性,则列出以gnumer开头的所有可用软件包。如果使用别名进行操作,则不会执行任何操作-无法完成。

5
GIF截屏;UNIX方式
要为屏幕的选定部分拍摄静态屏幕截图,我经常scrot与一起使用-s shot.png。这非常适合在StackExchange帖子中添加插图。我什至发现该脚本可以将这样的屏幕截图自动上传到Imgur.com,并在我的X剪贴板中放置一个链接! 让我们将其设置为十二个:如何类似地创建GIF截屏视频? 有有这样的程序recordmydesktop,byzanz&CO 作为向Ubuntu的讨论,旨在为“用户友好”,但我的经验是越野车,效率低下,大多unscriptable和不适合这样的小一次性的东西。 我只想选择一个区域并记录一个GIF,但要使用我能理解的控制台命令,而不是一些难以理解的GUI怪兽。 我怎样才能做到这一点?

1
在猫的帮助下更改文件的权限
root@system:~# less myfile -bash: /bin/less: Input/output error 根文件系统已死。但是我的猫还活着(在我的记忆中): root@system:~# cat > /tmp/somefile C^d root@system:~# 尽管他有点孤独,但他所有的朋友都不见了: root@system:~# mount -bash: /bin/mount: Input/output error root@system:~# dmesg -bash: /bin/dmesg: Input/output error root@system:~# less -bash: /bin/less: Input/output error root@system:~# chmod -bash: /bin/chmod: Input/output error 该系统仍在运行,并且可以实现其目的。我知道,对此,唯一明智的反应是关闭系统并更换根驱动器。不幸的是,这不是一种选择,因为它将花费大量时间和金钱。而且,它会杀死我的猫,这会让我伤心。 我曾想过要把他从捐赠人那里带回来的他的平常朋友。我不敢尝试将它们放进去,以防ssh尝试加载它并切断行(无论如何二进制文件都消失了)。对于我的猫表弟来说,这听起来像是一份工作: root@system:~# netcat -l 1234 > /tmp/less -bash: netcat: command …


2
sudo作为其环境的另一个用户
$ whoami admin $ sudo -S -u otheruser whoami otheruser $ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME' /home/admin 为什么即使将bash作为登录shell调用也没有$HOME设置为/home/otheruser? 具体来说,/home/otheruser/.bashrc不是来源。另外,/home/otheruser/.profile也没有来源。-(/home/otheruser/.bash_profile不存在) 编辑:确切的问题实际上是https://stackoverflow.com/questions/27738224/mkvirtualenv-with-fabric-as-another-user-fails

8
用户的会话c2正在运行停止作业
几乎每次关闭计算机时都会出现以下消息: A stop job is running for Session c2 of user ... (1min 30s) 它等待1分钟30秒,然后继续关闭过程。我遵循此systemd关闭诊断指南并获取shutdown-log.txt(由于日志很长,因此无法直接在此处粘贴日志)。不幸的是,我自己不理解日志。谁能帮助我找出导致我的系统无法正常关闭的原因? 我运行带有内核的Arch Linux 4.4.5-1-ARCH,我的systemd版本是229-3。 补充1:我发现每次注销,然后从登录屏幕关闭计算机时,都不会收到消息A stop job is running...。我试图关闭前多次注销,所以我认为这并非偶然。希望信息能有所帮助。 添加2:始终是会话c2导致关机挂起。因此,正如@ n​​.st所建议的那样,我再次查看了诊断关机问题并存储loginctl session-status c2了dmesg,而不是,但是之后没有任何内容shutdown-log.txt。我替换loginctl session-status c2为systemd-cgls并得到以下日志: Control group /: -.slice └─init.scope ├─ 1 /usr/lib/systemd/systemd-shutdown reboot --log-level 6 --log-target ... ├─1069 /usr/lib/systemd/systemd-shutdown reboot --log-level 6 --log-target ... ├─1071 …
56 systemd  shutdown 

4
如何连接ssh与指定端口?
我知道在ssh时如何“连接”到某个端口。 ssh user@remotehostip -p XXX 但是有没有办法在某个端口上建立一个“ ssh”? 我的意思是,有没有一种方法可以指定本地计算机将要使用的端口?
56 ssh  tcp  openssh 


4
破折号或其他外壳比bash更快吗?
我一直认为使用破折号代替bash的唯一好处是破折号较小,因此许多破折号实例在启动时会更快地启动。 但是我进行了一些研究,发现有些人将所有脚本迁移到破折号以希望它们运行得更快,并且我也在Ubuntu Wiki的DashAsBinSh文章中找到了这一点: 切换默认Shell的主要原因是效率。bash是适合交互使用的出色的全功能外壳;实际上,它仍然是默认的登录外壳。但是,与破折号相比,它的启动和操作相当庞大且缓慢。 如今,我在系统上的许多事情上都使用了很多bash脚本,但我的问题是我有一个特定的脚本,该脚本连续24/7运行,产生了大约200个孩子,这些孩子将我的计算机加热10° C比正常使用更多。 这是一个很大的脚本,带有很多bashism,因此将它们移植到POSIX或其他shell会非常耗时(并且POSIX对于个人使用而言并不重要),但是如果我可以减少其中的一部分,那将是值得的CPU使用率。我知道还需要考虑其他事项,例如调用外部二进制文件(如或代替的sed简单bashism)。${foo/bar}grep=~ 与破折号相比,TL; DR的启动和操作真的比bash慢吗?还有其他比bash 更有效的 Unix shell 吗?
56 bash  performance  dash 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.