欢迎光临
我们一直在努力

Linux使用过程中的一些技巧

    • Linux shell 中单引号的技巧
    • 一般情况下双引号引用变量。 其实,两组单引号之间也可以直接引用变量。 示例如下:


Var
=Hello
echo''${Var}' World! '
    • 注意:在某些情况下,变量中不能含有分割符.

    • 利用sed在行首与行尾添加字符

sed's/^/HEAD&/g'
 /path/to/file
sed 's/$/&TAIL/g'
 /path/to/file

    • 利用sed在文件尾部添加行

sed'$a\ADDLINE'
 /path/to/file

    • 利用sed替换大小写
      • 将所有字符替换为小写:
        echo -n "$TEXT"|sed -r 's/(.*)/\L\1/'
      • 将所有字符替换为大写:
        echo -n "$text"|sed -r 's/(.*)/\U\1/'

    • wget的POST方法下载

wget --continue --no
-check-certificate \
--header="Cookie: $cookie"
 \
--post-data="DATA"
 \
"https://domain.name/url"
 \
-O "/path/to/File.Name"

    • curl一般使用方法

curl
 -sS --insecure --create-dirs \
--retry 3 --retry-delay 10
 \
-H 'Host: domain.name'
 \
-H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'
 \
-H 'X-Requested-With: XMLHttpRequest'
 \
-H 'Referer: https://domain.name'
 \
-H 'Cookie: $cookie'
 \
-H 'Connection: keep-alive'
 \
-b '/tmp/cookie'
 \
-c '/tmp/cookie'
 \
-X POST -d 'DATA'
 \
-L 'https://domain.name/url'
 |gzip -dc

    • Linux修改时区

ln
 -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai"
 >/etc/timezone

    • 时间不对问题


apt-get install

 -y ntpdate
ntpdate pool.ntp.org
hwclock --systohc

    • 修改PHP默认时间

sed -i 's/^;\?date.timezone.*/date.timezone = PRC/g'
 /etc/php5/cgi/php.ini

    • 使Debian支持中文字符,解决乱码问题.
      • 运行



dpkg-reconfigure locales
      • 选择

en_US.UTF-8
zh_CNGB2312
zh_CN.GBKGBK
zh_CN.UTF-8UTF-8
      • 选择默认

en_US.UTF-8
      • 安装字体


apt-get install
 -y xfonts-wqy ttf-wqy-zenhei ttf-wqy-microhei
      • 重启

reboot

    • 使用scp命令在Linux主机间传送文件


scp -P $SSHPort -r /Local/Path $RemoteUserName@$RemoteIP:/Remote/Path

    • 检测IP有效性



IP=1.2.3.4
CHECKIP="$(echo "$IP" | grep -o '\(\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9

]\|25[0-5] 
\)')"
[ "$IP" == "$CHECKIP" ]  && [ "$(echo "$IP" |awk -F '.' '{print NF}')" -eq '4' ]  && echo "Ok! " || echo "Error! "

    • 利用openssl给nginx添加账户密码


echo -n 'MoeClub.org:'>>
/etc/nginx/password
openssl passwd Vicer >>
/etc/nginx/password

    • 非交互式更改Linux用户的密码

echo -ne "asd123\nasd123\n"
 |passwd root

    • 于iptables相关


#添加名为[NAME] Chain
.
iptables-N[NAME] 

#清空名为[NAME] Chain
下所有规则.
iptables-N[NAME] 

#删除名为[NAME] 的空Chain
.
iptables-N[NAME] 
    • iptables前面的规则会先生效,如果后面的规则与前面某条规则发生冲突,则后面的这条规则不会生效.

    • There is no public key available for the following key IDs


apt-get install -y debian-keyring debian-archive
-keyring
apt-keyupdate

    • 使用nc命令检测端口

nc-z-v-w 1 127.0.0.1
 443
    • 可使用

$?

    • 来获取返回参数,0:open,1:close.

    • 使用sed调换两行的顺序

sed'/lineONE/{h;d;};/LineTWO/G'

    • 修改Linux系统时间

cp
 -f /usr/share/zoneinfo/PRC /etc/localtime

    • ssh,scp无交互密码登录

sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no -q -p $PORT root@$IPADDR"COMMAND;"

sshpass -p $PASSWORD scp -P $PORT -o StrictHostKeyChecking=no -q -r $FilePath root@$IPADDR:$FilePath

    • 申请live后缀邮箱

# 浏览器F12,粘贴即可使用

var sub = window.prompt('msn.com /live.com /live.cn /live.hk /live.jp /live.fr /live.ca /live.de /live.ie /live.in ...\n','live.cn');if(sub){document.getElementById("SingleDomain").value = sub;document.getElementById("idSingleDomain").innerText = 
"@"+sub;};

    • 网易提供的检测是否为大陆IP接口


http://ipservice.163.com/isFromMainland

    • bilibili检测IP接口


https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr

    • sed多行合并

sed -n '1h;1!H;$g;s/\n/,/g;$p'
 /file/to/path

    • 指定时区查看时间


TZ=Asia/Tokyo date +"%Y.%m.%d %T"

    • 去除重复行

cat file |sort -nk2 |sed '$!N; /^\(.*\)\n\1$/!P; D'

    • 利用awk去除重复行

awk'!i[$0]++'
 file

    • 解决Nginx 413错误







server {
    ...
    client_max_body_size 0;
    ...
}

    • 解决利用eval赋值后echo输出URLENCODE的暗坑

echo"$str" |sed 's/\+/%2B/g' |sed 's/\=/%3D/g' |sed 's/\//%2F/g' |xxd -ps |sed 's/0d0a$\|0d$//g'
 |xxd -r -ps

    • 自定义批量修改文件时间(格式:世纪年份月份天数小时分钟.秒数)


Time="$(date +'%C%y%m%d%H%M.%S')"; find . -name "*" -exec touch -t $Time '{}'
 \;

    • 重复内容交集和并集

#并集(重复的行只保留一份)

cat file0 |sort -t';'
 -k1 |uniq > file
#交集(只留下重复的行)

cat file0 |sort -t';'
 -k1 |uniq -d > file
#只留下非重复行

cat file0 |sort -t';'
 -k1 |uniq -u > file

    • 利用awk进行计算

awk'BEGIN{printf("%.2f\n",'${RX_bytes}'/(1024*1024*1024))}'
;

    • MySQL数据库备份与恢复

#备份数据
mysqldump -h $host -P $port -u"$username" -p"$password" --databases $db_name
 >dump.sql
#还原数据

mysql -h $host -P $port -u"$username" -p"$password" --databases $db_name

CREATE DATABASE IF NOT EXISTS $db_name
;
SOURCE
 dump.sql;
#赋予权限
grant all privileges on$db_name.* to $username@$host identified by "$password"
;
#刷新权限
flush
 privileges;
#设置密码
set password for $username@$host = password("$password"
);
#删除数据库
drop database if exists $db_name
;
#创建用户
create user $username@$host
;

    • shell取路径

#path0=/root/test0/test1/test2
#path1=/root/test0/test1/
#path2=/home/test0/

echo${path0%/*}

~# /root/test0/test1
echo${path0/#$path1}

~# test2
echo${path0/#$path1/$path2}

~# /home/test0/test2

    • 文件描述符及简易通讯

#打开可读写的文件描述符7
exec7<>/dev/tcp/127.0.0.1/222
>/dev/null;
#发送数据到文件描述符7
echo -e "ok \n" >&7
;
#从文件描述符7中获取返回的信息
cat <&7
;
#关闭文件描述符7的输入和输出
exec7
<&-;
exec7
>&-;
#建立的socket链接在 /proc/self/fd 目录下
ls
 -l /proc/self/fd

    • Debian 快速换内核



apt-get install -y linux-image-3.16.0.4-amd
item="${1:-3.16.0-4}"
while [[ -n "$(dpkg -l |grep linux-image |grep -v "$item" |awk '{print $2}')" ]]; do
for kernel in `dpkg -l |grep linux-image |grep -v "$item" |awk '{print $2}'
`
    do
if [ -f "/var/lib/dpkg/info/${kernel}.prerm" ]; then

        sed -i 's/uname -r/echo purge/'"/var/lib/dpkg/info/${kernel}.prerm"
fi

      dpkg --purge "$kernel"
done
done

    • Redis关闭持久化

sed -i 's/^save/#&/g'
 /etc/redis/redis.conf
sed -i 's/^appendonly\ .*/appendonly\ no/g'
 /etc/redis/redis.conf
rm -rf /var/lib/redis/*
赞(0)
未经允许不得转载:798VPS » Linux使用过程中的一些技巧
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址