该stat命令的手册页说:
Run Code Online (Sandbox Code Playgroud)%x Time of last access %y Time of last modification %z Time of last change
我无法理解modify和change之间的区别。我明白这些词是同义词(英语不是我的母语),但它们的输出不同。
我尝试了以下命令
stat --printf="Change %z\nAccess %x\nModify %y\n" p.txt
Run Code Online (Sandbox Code Playgroud)
现在当我打开 p.txt 时,访问时间改变了,我进入插入模式,编辑文件,修改和更改时间保持不变。
更改 2010-10-06 12:48:39.286252389 +0500 访问 2010-10-06 12:49:14。962243456 +0500 修改 2010-10-06 12:48:39.234498878 +0500
当我将更改写入 file :w、 modify 和 change 时,两者都会更改但给出不同的值。
更改 2010-10-06 12:51:21。949082169 +0500 访问 2010-10-06 12:51:21.908246082 +0500 修改 2010-10-06 12:51:21。908246082 +0500
那么在这种情况下,“修改”和“更改”的含义是什么?也就是说,修改和更改的时间给出了哪些事件的时间?
谢谢
chmod直到今天,我才真正了解如何工作。我遵循了一个向我解释了很多事情的教程。
例如,我了解到您拥有三个不同的权限组:
u)g)o)基于这三个群体,我现在知道:
我还了解到您拥有以下权限:
r)w)x)我创建了一个目录来测试我新获得的知识:
mkdir test
Run Code Online (Sandbox Code Playgroud)
然后我做了一些测试:
chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---
Run Code Online (Sandbox Code Playgroud)
经过一段时间的鬼混后,我想我终于掌握chmod了使用此命令设置权限的方法。
我还有几个问题:
d在开始代表什么?d?(因为你只有 7=4+2+1 7=4+2+1 7=4+2+1)0777而不是777来设置他们的权限?但因为我不应该问多个问题,所以我会尝试用一个问题来问它。
在基于 UNIX 的系统(例如所有 Linux 发行版)中,关于权限,第一部分 ( d) …
我想用来将sed斜杠更改为反斜杠和斜杠,即/-> \/。但它不起作用。这里有一个小例子:
#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\\//g"
Run Code Online (Sandbox Code Playgroud)
前三行的输出是假设的。但是最后一个不起作用。为什么?如何修正最后一部分?
我一直在使用bc二进制到十六进制、八进制到十进制等之间的数字转换。
在以下示例中,我试图将基数为 16(十六进制)的数字转换为二进制、八进制和十进制。
前 2 次尝试我没有任何问题。
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将基数 16(十六进制)数字转换为基数 10(十进制)时,我得到了错误的答案。答案应该是255
$ echo 'ibase=16; obase=10; FF' | bc
FF
Run Code Online (Sandbox Code Playgroud) 我的问题是关于这段代码产生的返回值:
if [ -n ]; then echo "true"; else echo "false"; fi
Run Code Online (Sandbox Code Playgroud)
这打印true.
它的补充测试[ -z ]还使用打印true:
if [ -z ]; then echo "true"; else echo "false"; fi
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为什么[ -n ]测试假设根本没有通过的字符串值,作为非空?
下面的代码打印false. 这是预期的,因为传递的字符串值为空且长度为零。
if [ -z ]; then echo "true"; else echo "false"; fi
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 bash 脚本来在大约 20 个不同的服务器上使用 rsync 和更新文件。
我已经弄清楚了 rsync 部分。我遇到的问题是通过变量列表。
到目前为止,我的脚本如下所示:
#!/bin/bash
SERVER1="192.xxx.xxx.2"
SERVER2="192.xxx.xxx.3"
SERVER3="192.xxx.xxx.4"
SERVER4="192.xxx.xxx.5"
SERVER5="192.xxx.xxx.6"
SERVER6="192.xxx.xxx.7"
for ((i=1; i<7; i++))
do
echo [Server IP Address]
done
Run Code Online (Sandbox Code Playgroud)
哪里[Server IP Address]应该是关联变量的值。因此,当 i = 1 时,我应该回显 $SERVER1 的值。
我已经尝试了几次迭代,包括
echo "$SERVER$i" # printed the value of i
echo "SERVER$i" # printer "SERVER" plus the value of i ex: SERVER 1 where i = 1
echo $("SERVER$i") # produced an error SERVER1: command not found where i = 1
echo …Run Code Online (Sandbox Code Playgroud) 当我显示pwd命令手册时,它说--physical支持长选项
$ man pwd
PWD(1) User Commands PWD(1)
NAME
pwd - print name of current/working directory
SYNOPSIS
pwd [OPTION]...
DESCRIPTION
Print the full filename of the current working directory.
-L, --logical
use PWD from environment, even if it contains symlinks
-P, --physical
avoid all symlinks
Run Code Online (Sandbox Code Playgroud)
但是,当我输入以下内容时它失败了
$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
Run Code Online (Sandbox Code Playgroud)
为什么多头期权对我不起作用?
我正在使用 RHEL 6.4。没有为 pwd 配置别名。看起来是标准密码:
$ which pwd
/bin/pwd
Run Code Online (Sandbox Code Playgroud) 我正在使用 sed。据我所知,我使用的是正确的正则表达式,但 sed 没有做任何事情。原来我使用的是\s+哪个 sed 无法理解,当我切换到[ ]+它时,它起作用了。
所以总而言之,我做了一个正则表达式,为了让它工作,我必须逃避几乎所有的事情并删除\sfor 空格。似乎有一种模式可以避免所有这些,-r所以我想问:
-rsed 的默认模式?为什么我要费那么多心思来逃避一切? man说有选项--posix并且“应该支持POSIX.2 BRE”这是指什么?NFA/DFA 模式?从我的理解,工作是管道从某一个shell启动的,你可以管理这些作业(fg,bg,按Ctrl-Z)从该壳体内。一个作业可以由多个进程/命令组成。
我的问题是当原始的包含 shell 退出时这些作业会发生什么?假设未设置 huponexit 以便后台进程在 shell 退出后继续运行。
假设我已经做了:
$ run.sh | grep 'abc' &
[1] job_id
Run Code Online (Sandbox Code Playgroud)
然后我退出这个shell。我将进入一个新的 shell 并运行jobs,但显然什么也看不到。但是我可以执行ps aux | grep run.sh并查看此进程的运行情况,我也会执行ps aux | grep grep并查看grep 'abc'运行的进程。
有没有办法只获取完整管道的作业 ID,以便我可以一次性杀死它,或者我是否必须在退出原始 shell 后与另一个 shell 分开杀死所有进程?(我尝试过后者并且它有效,但跟踪所有过程似乎很麻烦。)
ksh 和 bash 脚本的最大数组大小是多少?
示例:假设我有一个包含 10 个元素的数组。数组的特定索引可以容纳的最大字符串数是多少?相同的数组的最大大小是多少?
我是 Unix 的新手。我想这是一个常见问题,但我没能找到答案,所以我决定在这里提问。
bash ×5
linux ×2
sed ×2
shell-script ×2
bc ×1
chmod ×1
command-line ×1
files ×1
jobs ×1
kill ×1
ksh ×1
ls ×1
permissions ×1
process ×1
pwd ×1
quoting ×1
rhel ×1
shell ×1
timestamps ×1