Unix & Linux

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

6
bash查找以字符串开头的行
我有一堆文件,我想找到其中一个包含以某个字符串开头的连续行的文件。 例如以下文件: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee 有多个以'C'开头的行,因此我希望通过命令找到该文件。 例如以下文件: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd 总会有一行以'C'开头,我不要这个文件。我想到使用a grep或a,sed但我不知道该怎么做。也许使用正则表达式^C.*$^C或类似的东西。任何的想法 ?
10 bash  sed  grep  string 

3
在多台显示器上运行一个屏幕保护程序
有没有一种方法可以xscreensaver在整个X显示器上运行单个屏幕保护程序,而忽略Xinerama / XRANDR几何图形? 我有三个监视器在一个X显示器上显示为单个X屏幕。XRANDR提供有关每个物理监视器在单个X屏幕上开始和结束的位置的信息。 xscreensaver使用它可以在每个监视器上运行不同的屏幕保护程序,或在同一监视器上运行三次相同的屏幕保护程序一次。 我想更改此设置,以便仅运行一个屏幕保护程序,并且该屏幕保护程序跨越所有三个监视器(即,它占据了整个X屏幕。)这样,屏幕保护程序中的动画将可以自由地从一个监视器漫游到下一个监视器。 这可能吗?

3
如何一次定义类似的bash函数
我在这些功能~/.bashrc: function guard() { if [ -e 'Gemfile' ]; then bundle exec guard "$@" else command guard "$@" fi } function rspec() { if [ -e 'Gemfile' ]; then bundle exec rspec "$@" else command rspec "$@" fi } function rake() { if [ -e 'Gemfile' ]; then bundle exec …
10 bash 

2
组成员身份和setuid / setgid流程
其流程去缓和权限通过setuid()和setgid()似乎没有继承的UID / GID他们设置了组成员。 我有一个服务器进程,必须以root用户身份执行才能打开特权端口。后,它的去升级到一个特定的非privilleged UID / GID,1 -例如,其的用户foo(UID 73)。用户foo是组的成员bar: > cat /etc/group | grep bar bar:x:54:foo 因此,如果我以登录foo,则可以读取/test.txt具有以下特征的文件: > ls -l /test.txt -rw-r----- 1 root bar 10 Mar 8 16:22 /test.txt 但是,std=gnu99当以root 身份运行时,以下C程序(compile ): #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main (void) { setgid(73); setuid(73); int fd = open("/test.txt", O_RDONLY); …

2
带2个视频驱动程序的双显示器,带xrandr 1.4
我正在尝试使用2种不同的视频卡驱动程序(i915和nvidia)进行双屏显示,但是如您所见,xrandr仅列出了nvidia提供程序。我正在使用Arch Linux。我尝试查找xrandr提供者列表的位置失败,但未成功。 [x@epoch ~]$ xrandr --listproviders Providers: number : 1 Provider 0: id: 0x279 cap: 0x1, Source Output crtcs: 4 outputs: 6 associated providers: 0 name:NVIDIA-0 [x@epoch /etc/X11]$ sudo lshw -numeric -c video *-display description: VGA compatible controller product: GK104 [GeForce GTX 770] [10DE:1184] vendor: NVIDIA Corporation [10DE] physical id: …

2
在Tmux状态栏Shell命令中使用环境变量
我正在尝试创建一个tmux状态栏,其中显示了三个时区: US Eastern Time :: UTC :: Central European Time。使用TZ环境变量可使date命令显示给定时区中的时间。 我正在尝试使用此tmux.conf设置来这样做: set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%H:%M) :: #(date -u +%H:%M) UTC :: #(TZ=Europe/Belgrade date +%H:%M)" 但是,传递TZ=foo在中不起作用#(…)。(我得到的服务器,date而不是我的预期)。有什么建议?

2
grub2的搜索命令中的--hint选项有什么作用?
我正在查看该search命令的官方GRUB2文档,如http://www.gnu.org/software/grub/manual/grub.html#index-search上所示 Command: search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy] name Search devices by file (-f, --file), filesystem label (-l, --label), or filesystem UUID (-u, --fs-uuid). If the --set option is used, the first device found is set as the value of environment variable var. The default variable is ‘root’. The --no-floppy option …
10 grub2 

2
为什么默认情况下不使用扩展正则表达式模式进行sed?
我正在使用sed。据我所知,我使用的正则表达式是正确的,但是sed并没有做任何事情。原来,我使用的是\s+哪个sed无法理解,并且当我切换到[ ]+它时起作用。 综上所述,我做了一个正则表达式,要使其正常工作,我必须转义几乎所有内容并删除\s空白。似乎有一种避免所有这些情况的模式,-r所以我想问一下: 为什么不-r设置sed的默认模式?为什么我不得不费很大的劲才能逃脱一切? man表示存在该选项--posix,并且“应该支持POSIX.2 BRE”是什么意思?NFA / DFA模式?

2
软件包升级后无法将文件系统重新安装回只读状态
在我的Debian系统上,我/在单独的分区上并已挂载read-only。只有/home/,/var/并且/tmp/是可写的。我还创建了Pre-Invoke和Post-Invoke apt hook,以便apt可以在安装或升级软件包时自动重新挂载系统以进行写入,并read-only在完成后将其重新挂载回: DPkg::Pre-Invoke {"mount -o remount,rw / ;}; DPkg::Post-Invoke {"mount -o remount / ;}; 整个设置工作良好,但有一个例外。有时,在安装/升级过程中,某些服务需要重新启动,或者在/挂载my时在短窗口中打开新文件read-write,这些文件会获得write许可打开。安装/升级完成后,我的Post-Invoke挂钩返回错误,因为它无法重新安装/到read-only。 有什么办法可以解决这个问题?这很烦人,因为在这种情况下,我通常必须重新启动服务器,这是不切实际的。 编辑 以下是我最新软件包升级的日志,该日志导致了所描述的错误: root@alpha# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: base-files curl libc-bin libc6 libcurl3 libcurl3-gnutls libmysqlclient18 libssl1.0.0 locales multiarch-support mysql-client …
10 debian  apt  readonly 

2
Vim-将最后一个Shell命令映射到密钥
有什么方法可以映射leader-r重复发送给bash的最后一条命令? 例如,当使用C文件时,我想从vim编译并运行程序,而无需键入:!make或gcc。 我知道我可以将特定命令绑定到密钥,但不适用于其他类型的文件。

4
获取目录的大概大小(递归包括所有文件和子目录)
有没有一种方法可以快速获取目录的准确大小(包括递归地包括其所有子目录)?我不希望子目录的大小,我只是想将它们递归地包含在报告的总大小中。 失败了,找到近似尺寸的方法吗?我在想一些类似的方法df可以对整个文件系统做出快速响应,但是这次是针对特定目录(及其子目录)。 du当给定目录包含数千个子目录时,使用的解决方案似乎需要花费很长时间。
10 bash 


2
一次缓存所有gpg子项密码?防止需要输入多个gpg密码?
我可以只输入一次gpg密码并解锁所有子密钥(签名,解密,身份验证)吗? 目前,我需要输入3次gpg密码(用于签名,解密和身份验证)。这很不方便。 我试图提出一个shell脚本。 #!/bin/bash set -x set -e set +o history signing_key=77BB3C48 encryption_key=CE998547 tempfile="$(mktemp)" echo "test" > testfile unset passphrase || exit 1 read -sp 'Enter password. ' passphrase ; echo exec 3<<<"$passphrase" gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile" gpg2 --no-tty --use-agent --verify "$tempfile.asc" gpg2 …

3
从损坏的硬盘中恢复数据:“冷冻技巧”
我目前正在从损坏的和快要死的硬盘驱动器中恢复数据(请查看此问题以获取背景信息)。系统运行时驱动器被拔下;当我愚蠢地试图在上面运行testdisk时,我开始听到-我以为是-“ 死亡之声 ”。 现在,我已经在多个地方阅读了有关“ 冷冻技巧 ”的信息(例如,在AskDifferent,Unix SE,AskUbuntu上)。其症结如下(但请阅读完整的说明!): 将损坏的硬盘驱动器放入ziploc冷冻袋中,以防止湿气进入。(使用两个或什至三个袋,请注意,这些袋不必是等温线。) 将包装好的硬盘放入冰箱 将硬盘放在冰箱中至少12个小时 然后将驱动器连接到计算机并开始复制数据 在某些时候,硬盘驱动器将再次出现故障。如果这样做,请重做该过程,直到复制了所有数据或驱动器死亡。 (根据现在在冰箱中已删除的硬盘驱动器,为您服务吗?在SuperUser上,尝试在冻结之前尝试以下两种替代药物:(1)“将硬盘驱动器放置在光滑的表面上。抓住两端并进行物理旋转整个单元”,“只需沿着刀片的轴急剧旋转”和(2)“在磁头碰撞的情况下,您可以通过上下颠倒驱动器来使其暂时启动并运行。保持驱动器备份文件时将其倒置。”) 问题:冻结从死亡的硬盘中恢复数据的合法策略吗?还是这只是一种确定的磁盘固定方式? 如果这是合法的,应一次尝试它之前尝试ddrescue,经过努力ddrescue,或者我应该结合“冷冻绝招”与ddrescue(和关联的日志文件)?

2
自动挂载时的USB驱动器权限
在Debian上,常见的问题是您尝试插入ntfs格式的USB硬盘驱动器,然后由于目录属于根目录而无法以普通用户的身份对其进行写入。 不久前,我读到可以通过添加uid=1000,gid=1000(或任何uid和gid是)选项来解决此问题。这确实解决了问题,但对我来说似乎有点讨厌,因为如果您具有多用户系统,则驱动器始终属于同一用户,而不属于安装/登录的用户。 从我使用Ubuntu的时间开始,我就记得这不是问题,您可以挂载NTFS驱动器(使用GNOME),并且它们可由挂载它们的用户写入。因此,似乎GNOME能够使用授予登录用户的权限来安装驱动器。 但是,现在我在Debian jessie上使用KDE,我想知道是否可以将我的计算机配置为在具有活动X会话用户的权限下安装驱动器。

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.