Unix & Linux

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

2
Kis范围在`ls -l`中的不同颜色
有什么明智的方法可以从中突出显示文件大小右侧的第4列,第5列和第6列ls -l?我的意图是使读取文件大小变得容易,无论是字节,KiB还是MiB。我确实知道该-h标志,但是我发现必须在末尾解释字母比仅查看并查看数字的长度(幅度)更为麻烦。这就是赛车使用模拟转盘而不是数字转盘的相同原因。 我的目标外壳是Bash。谢谢。 编辑:我想突出显示大小列的成千上万个位置。就像这样:123 456 789
9 bash  ls 

3
openvpn警告:未启用服务器证书验证方法
我试图在debian squeez(服务器)上安装openvpn,并从我的fedora 17作为(客户端)连接。这是我的配置: 服务器配置 # Server TCP proto tcp port 1194 dev tun # Keys and certificates ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem # Network # Virtual address of the VPN network server 192.170.70.0 255.255.255.0 # This line adds the client to the router network server push "route …

2
如何处理选项终止—在getopts中
我使用getopts将bash脚本中的参数解析为 while getopts ":hd:" opt; do case $opt in d ) echo "directory = $OPTARG"; mydir="$OPTARG"; shift $((OPTIND-1)); OPTIND=1 ;; h ) helptext graceful_exit ;; * ) usage clean_up exit 1 esac done exeparams="$*" exeparams将保留任何未解析的选项/参数。由于我想使用exeparams来保存要在脚本内执行的命令的选项(该选项可以与脚本自己的选项重叠),因此我想使用-结束传递给脚本的选项。如果我通过 myscript -d myscriptparam -- -d internalparam exeparams 将举行 -- -d internalparam 我现在想删除--将这些参数传递给内部命令的引线。有没有一种优雅的方法可以做到这一点,或者我可以--从getopts中获得仅保留其余部分的字符串?
9 bash  getopts 

3
如何防止用户删除目录?
我尝试使用“ chattr + i DIRNAME”,它很棒,但是在chattr之后我无法在DIR中创建文件。还有什么可以防止用户删除目录的? root@HOST ~] mkdir test [root@HOST ~] chattr +i test [root@HOST ~] cd test [root@HOST ~/test] touch sth touch: cannot touch `sth': Permission denied [root@HOST ~/test] cd .. [root@HOST ~] chattr -i test [root@HOST ~] cd test [root@HOST ~/test] touch sth [root@HOST ~/test] 更新:仅目录删除很重要,因此我仍然需要在其中删除文件

6
按大小查找图像:查找/文件/ awk
我一直在尝试找到一定高度(超过500像素)的png图像文件。我知道这file将返回图像尺寸。例: $ file TestImg1a.png TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced 但是我需要使用它来查找高度超过500px的目录中的所有文件。我知道如何打印所有文件而不论高度如何: find . -name '*.png' | xargs file | awk '{print $7 " " $1}' 但是,如何将$ 7限制为大于500的结果?
9 files  find  awk  xargs  images 

2
有没有简单的方法来创建FreeBSD rc脚本?
我在FreeBSD监狱里使用命令运行服务器: /usr/sbin/daemon /path/to/script.py 此刻,我必须在每次重新启动机器并启动监狱时都运行此命令。我希望此命令从开始/etc/rc。有没有一种简单的方法可以为daemon命令创建FreeBSD rc脚本? 更新:我通读了有关rc脚本的BSD文档,并从中创建了以下脚本/etc/rc.d/pytivo: #!/bin/sh . /etc/rc.subr name=pytivo rcvar=pytivo_enable procname="/usr/local/pytivo/pyTivo.py" command="/usr/sbin/daemon -u jnet $procname" load_rc_config $name run_rc_command "$1" 这可以在监狱开始时启动我想要作为守护程序的python脚本...(给定pytivo_enable="YES"在/etc/rc.conf),但是rc脚本不知道守护程序是否正在运行(它认为不是在何时运行),并且当我尝试启动它时会给出警告: [root@meryl /home/jnet]# /etc/rc.d/pytivo start [: /usr/sbin/daemon: unexpected operator Starting pytivo. [root@meryl /home/jnet]# 因此它很接近,并且可以工作,但是我觉得我应该能够获得比这更好的功能。

3
以rxvt-unicode映射Map-Shift-Tab
我想映射按键绑定 Ctrl+ Shift+ Tab在rxvt-unicode。我设法按如下方式映射Ctrl+ Tab。对应的条目.Xresources是 URxvt.keysym.Control-Tab: \033[27;5;9~ 使用cat -v确认此映射有效: $ cat -v ^[[27;5;9~ ^[[27;5;9~然后可以将该序列vim用于映射Ctrl+ 等应用程序 Tab。我希望以下.Xresources条目能够正常工作。 URxvt.keysym.Control-Shift-Tab: \033[27;6;9~ 但是,cat没有显示正确的映射: $ cat -v ^[[Z 如何建立Ctrl+ Shift+ Tab映射? 编辑 映射 URxvt.keysym.Control-ISO_Left_Tab: \033[27;6;9~ URxvt.keysym.Control-Shift-ISO_Left_Tab: \033[27;6;9~ 表现相同。首先按Ctrl+ Tab,释放两个,然后按Return 两次,然后按Ctrl+ Shift+ Tab,释放所有,然后按Return 两次,得到以下输出: $ cat -v ^[[27;5;9~ ^[[27;5;9~ ^[[27;6;9~↵ ^[[27;6;9~M-bM-^FM-5 Case Ctrl+ Tab:第一个返回使输入再次作为输出出现。 Case Ctrl+ …

2
更改用户并在Shell脚本中加载整个环境
我在使用我们的新贵脚本时遇到了麻烦,该脚本更改了用户并启动了一些ruby守护进程。 在过去,我只会bash -c "do the business" -l someuser确保使用该-l标志来模拟登录。 到目前为止,这一直很好,我们的ruby进程一直抛出以下错误:require: no such file to load -- rubygems (LoadError)经过调查后,我发现此错误仅在以root用户身份运行脚本时(即,当我sudo su或当被新贵运行时)发生。 我认为这是一个PATH问题,因为当我首先手动设置路径时,它可以解决问题。 有没有办法改变用户并加载整个环境? 我也曾尝试su user -c和sudo。 为了使测试更容易,我正在“扎根”(sudo su)并运行which bundle(捆绑是一件红宝石的东西)。 这是我得到的: sudo -i -u webuser which bundle #=>没有输出 su -l webuser -c which bundle #=>没有输出 sudo su - webuser -c which bundle #=>没有输出 但是以Webuser的身份登录 …

1
使用网络接口查找流程
我正在尝试找到一种安全关闭网络接口的方法,即不打扰任何进程。为此,我需要找出当前正在使用该接口的进程。工具喜欢ss,netstat或者lsof是有帮助的显示哪些进程打开插座,但他们不显示wpa_supplicant,dhcpcd,hostapd和其他人。 有没有一种方法可以以一般方式检测这些过程?它可能不适合dhcpcd,因为它只是一个不时打开套接字的程序,但是我假设wpa_supplicant和hostapd会对可检测到的接口“执行某些操作”,并且可能还会导致相关的PID。

4
dpkg:新的预安装脚本返回错误退出状态1
我最终处理了要使用dpkg进行部署的软件。.deb程序包在测试环境中可以正常工作,但无法进行升级。两者都运行相同版本的Ubuntu,但是我不确定其余配置的100%。如何进一步调试此dpkg问题? 这样安装失败: sudo dpkg -i --debug=7337 package.deb D000010: ensure_pathname_nonexisting `/var/lib/dpkg/tmp.ci' (Reading database ... 201812 files and directories currently installed.) Unpacking myProprietarySoftware (from package.deb) ... D000001: process_archive oldversionstatus=not installed D000002: fork/exec /var/lib/dpkg/tmp.ci/preinst ( install ) dpkg: error processing package.deb (--install): subprocess new pre-installation script returned error exit status 1 D000002: maintainer_script_new …
9 ubuntu  debian  dpkg 

2
如何使用OpenBSD永久连接到WPA2AES wifi(通过CLI)
我安装了OpenBSD 5.1 i386。我没有GUI / X。我用谷歌搜索了答案,但找不到真实的答案。如何仅使用终端连接到WPA2 PSK / AES wifi网络?(所以我没有“网络管理员”来简单地选择给定的SSID,然后输入passphare:D) 更新: wifi卡:Atheros AR5424,我可以将其视为“ ath0” UPDATE#2: DHCP NWID SSID wpakey SSIDPWD 在/etc/hostname.ath0中不起作用(然后sh / etc / netstart ath0) 更新#3: ifconfig ath0 nwid SSID wpa wpapsk $(wpa-psk SSID SSIDPWD) 给予: ksh: wpa-psk not found ifconfig: wpapsk: bad value 更新#4: 路由器是一个OpenWrt 10.03.1盒: cat /etc/config/wireless config …
9 wifi  openbsd 

3
通过换行符拆分命令输出?
我有一个返回多行的命令。为了进一步处理,我需要处理这些行中的每一行。 我当前的代码通过修改IFS(内部字段分隔符)来工作: ROWS=$(some command returning multiple lines) O=$IFS #save original IFS IFS=$(echo -en "\n\b") # set IFS to linebreak for ROW in ${ROWS[@]} do echo "$ROW" done IFS=$O #restore old IFS 我想知道,是否有更好的方法来访问多行输出中的单行,而无需修改IFS?尤其是我的脚本的可读性由于修改IFS而变差。 更新:我很难获得答案,例如choroba的答案: while IFS= read -r line ; do let var+=line #line 42 done << $(sqlite3 -list -nullvalue NULL …

2
搜索命令历史
我通过按以下方式搜索终端命令历史Ctrlr: This is an old command This is an | less -S older command 我按Ctrlr,然后键入“这是一个”,并且出现旧命令,但不是旧命令。如何搜索所有“这是”命令?是否可以将所有类似的命令传递给grep或其他东西? 如果是我set -o vi该如何撤消呢?

2
如何从远程服务器登录到我自己的PC?
为了进行实验,我需要从位于相同域(即大学网络)下的远程PC登录到自己的PC。在这种情况下,如何使用SSH进行远程登录? 例如,我在University X的两台计算机上有一个帐户,me@machine_a.cs.x.ca并且me@machine_b.cs.x.ca我的个人笔记本电脑帐户是nawshad@ubuntu。我需要提供什么额外的信息?

1
绑定挂载目录后再挂载设备:安全吗?
我有一个家庭分区,由多个发行版在同一盒子上共享。我正在使用bind来自的坐骑fstab。每个Linux安装都具有以下内容: UUID=[...] /mnt/data ext4 nodev,nosuid 0 2 /mnt/data/arch /home none defaults,bind 0 0 /mnt/data/files /files none defaults,bind 0 0 缺点是,当然,这/mnt/data/arch和/mnt/data/files现在安装的两倍。我直觉上尝试过umount /mnt/data,似乎可以按我希望的那样工作:据称mount,该设备现在仅安装在/home和上/files。 我的问题是: 这安全吗,还是我忽略了什么? 是否可以获得与umount /mnt/data仅使用相同的效果fstab?还是我可以在里面做rc.local?

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.