我们都知道如何通过管道传输到 shell 脚本和已安装的程序,如 grep、awk ......但是 .bashrc 或 .zshrc 中的源函数呢?
这是一个测试功能:
function fff(){
echo "$@"
}
这是一个测试命令:
$ echo "hello world" | fff
它不起作用
我的机器正在运行arch linux。
如果我在/etc/httpd/conf/httpd.conf中取消注释此行:
Include conf/extra/phpmyadmin.conf
phpmyadmin 接管了我的文档根目录,当我localhost
在浏览器中访问时,它只会打开 phpmyadmin/index.php 页面,而我不再可以在 DocumentRoot 中访问我的项目
但是如果我在服务器配置中评论以上行,localhost
打开我的 DocumentRoot,我可以看到我创建的所有 php 文件和目录/项目。
所以现在我只启用 phpmyadim 来做我想做的 mysql 事情然后禁用它。
我的问题是:如何在不接管我的服务器的情况下启用 phpmyadmin?
这是/etc/httpd/conf/extra/phpmyadmin.conf文件:
<VirtualHost pma.localhost:80>
ServerAdmin [email protected]
DocumentRoot "/usr/share/webapps/phpMyAdmin"
ServerName pma.localhost
ServerAlias pma.localhost
ErrorLog "/var/log/httpd/pma.localhost-error_log"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.html index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
</VirtualHost>
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
我想改变这个:
...
%%%23begin
aaaaaaa \\
bbbbbbb \\
ccccccc \\
%%%23end
...
对此
...
%%%23begin
xxxxxxxx \\
yyyyyyyy \\
zzzzzzzzz \\
tttttttt \\
%%%23end
...
编辑后行数可能会改变。
使用此功能:
function editEntry(){
local entryIndex="$1"
local pattern='^%%%'$entryIndex'begin'
d1=$(grep -n "$pattern" "$theBook" | cut -d: -f 1)
d1=$((d1+1))
local pattern='^%%%'$entryIndex'end'
d2=$(grep -n "$pattern" "$theBook" | cut -d: -f 1)
d2=$((d2-1))
local text1=$(sed -n "$d1,$d2"p "$theBook")
echo "$text1" >| "$tmpfile"
gedit "$tmpfile" && local text2=$(cat "$tmpfile" )
sed -i "s@$text1@$text2@" "$theBook"
}
显然 sed 不会改变整个段落,它只在行上运行