linux 安装 typora

参考 官方文档 即可:

# or use
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -

# add Typora's repository
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update

# install typora
sudo apt-get install typora

# upgrade all packages include Typora
sudo apt-get upgrade

运行命令:

typora

在 Debian 上安装 Chrome 浏览器,并以代理方式打开

下载最新版本:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

安装:

dpkg -i google-chrome-stable_current_amd64.deb

安装后使用以下命令即可运行:

google-chrome-stable

如果是要使用代理运行,使用如下命令即可:

google-chrome-stable --proxy="http://127.0.0.1:1080" # 端口号为你本地的代理监听端口

linux 为用户增加 sudo 权限并免密运行

最近光盘安装了 debian 9,发现默认的用户没有sudo权限,记录为默认用户添加权限的步骤。

共有两种方式授权:

  1. 把用户添加到sudo组。
  2. 把用户添加到sudoers文件。

下面以用户 kelu 为例。

将用户添加到sudo组

这是最简单的方式。

usermod -aG sudo kelu

将用户和用户组添加到sudoers文件

编辑文件 /etc/sudoers:

vi /etc/sudoers

增加以下记录:

kelu  ALL=(ALL:ALL) NOPASSWD:ALL
%kelu  ALL=(ALL:ALL) NOPASSWD:ALL

如图所示:

参考资料


gnome 3 命令行打开当前目录

gnome 3 的文件管理器为 nautillus。 在命令行中打开当前文件夹的命令为:

nautilus .

如果需要已特定用户的身份打开,先切换用户即可,例如:

su kelu
nautilus .

不加上路径则默认打开 home 目录:

nautilus

debian 安装 IntelliJ Idea ,并增加应用图标

对于桌面系统,没有图标是挺不方便的。我是用的是Debian 9,安装的桌面环境为 Gnome 3。

在下载 IntelliJ Idea 官方的Linux ide后,发现没有桌面图标,dock 上也不显示!

对于这种交互其实很早也有心理准备了,linux用户都是自己动手丰衣足食的。下载 idea 和制作idea图标快捷键步骤如下:

  1. 下载tgz包:https://www.jetbrains.com/idea/download/other.html

    选择一个合适的版本下载。

  2. 解压,我一般将软件放到 /var/local 目录下,给文件夹命名为idea:

    cd /var/local
    tar zxvf xxx.tar.gz
    mv xxx idea
    
  3. 做个命令行软链接,命令行方式启动也习惯性弄好。

    ln -s /var/local/idea/bin/idea.sh /usr/local/bin/idea
    
  4. 在桌面创建 idea.desktop文件

    [Desktop Entry]
    Name=IntelliJ IDEA
    Comment=IntelliJ IDEA
    Exec=/var/local/idea/bin/idea.sh
    Icon=/var/local/idea/bin/idea.png
    Terminal=false
    Type=Application
    Categories=Developer;
    

    image-20201130122330383

  5. 赋予权限

    chmod +r idea.desktop
    
  6. 可以复制一份到常用的图标归档的文件夹里

    cp idea.desktop /usr/share/applications
    

    这个文件夹里也有很多图标文件,可以都看看。gnome的图标路径一般存放在以下三个地方:

    • /usr/share/applications
    • /usr/local/share/applications
    • ~/.local/share/applications
  7. 下载常用的插件。

    列一些我常用的插件:

  8. 修改编辑器的字体大小

    在Linux下,idea的字体默认大小太小了,这样修改: File->Settings->Editor->Font

    image-20210303142348057

参考资料


gnome 3 中设置快捷键,快速启动终端

  1. 搜索setting,打开系统设置

    image-20201130115811716

    image-20201130115848336

  2. 搜索键盘配置 “shortcut”

    image-20201130115910613

  3. 增加自定义快捷键

    在键盘中拉到最下边,增加快捷键

    image-20201130115945986

  4. 增加终端的命令和快捷键

    /usr/bin/gnome-terminal
    

    image-20201130120034017

  5. 也可以修改一些常用的快捷键,比如我常用的截图快捷键,笔记本上 print screen其实比较麻烦的。

    image-20201130120201318

    另外记录一个无用的小知识,截图选区的命令为:

    gnome-screenshot -a -c
    

​ 笔记本上按 Alt + F4 也是比较麻烦的,参考mac的关闭窗口快捷键,我也设置了 Alt + Q 用来快捷关闭窗口。

参考资料


linux shell 命令备忘

不是专门的运维,时不时写shell脚本还要翻谷歌的感觉实在不太好。这篇文章记录几个常用的 shell 脚本命令,免得每次都从0开始查起。 这篇文章长期更新。

操作符

int型对比

if [ "$a" -eq "$b" ]
if [ "$a" -ne "$b" ]
if [ "$a" -gt "$b" ]
if [ "$a" -ge "$b" ]
if [ "$a" -lt "$b" ]
if [ "$a" -le "$b" ]
(("$a" < "$b"))
(("$a" <= "$b"))
(("$a" > "$b"))
(("$a" >= "$b"))

字符串对比


if [ "$a" = "$b" ]
if [ "$a" == "$b" ]
	[[ $a == z* ]]   # True if $a starts with an "z" (pattern matching).
	[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
	[ $a == z* ]     # File globbing and word splitting take place.
	[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).
if [ "$a" != "$b" ]
if [[ "$a" < "$b" ]] 
if [[ "$a" > "$b" ]] 
if [ "$a" \< "$b" ] # 比较的是ASCII码
if [ "$a" \> "$b" ] # 比较的是ASCII码

if [ -z "$String" ] # string is null, that is, has zero length
if [ -n "$String" ] # string is not null

数组

SVC_LIST='app1:svc1(1|esvc2(1|svc3(1,app2:svc1(1|esvc2(1|svc3(1'

IFS=","
for LocalIpInfo in ${SVC_LIST[@]}
do
  IFS=":"
  local LocalArrayIPInfo=($LocalIpInfo)
  local LocalIP=${LocalArrayIPInfo[0]}
  local LocalIPFromSsh=`cat .ssh/config | grep -A 1 $LocalIP | grep HostName | cut -d " " -f 6`
  local LocalAppList=${LocalArrayIPInfo[1]}

  IFS="|"
  for LocalAppInfo in ${LocalAppList[@]}
  do
    IFS="("
    local LocalArrayAppInfo=($LocalAppInfo)
    local LocalApp=${LocalArrayAppInfo[0]}
    local LocalAppDesire=${LocalArrayAppInfo[1]}
    local LocalGrepInfo=($LocalApp)
  done
done

IFS=" "

for循环

nsArray2=(
abc
def
)

for ns in ${nsArray2[@]}
do
  cat <<EOF | kubectl apply -n $ns -f -
apiVersion: v1
kind: ResourceQuota
metadata:
  name: default-resourcequota
spec:
  hard:
    limits.cpu: "10m"
    requests.cpu: "10m"
    limits.memory: 10Mi
    requests.memory: 10Mi
    persistentvolumeclaims: "20"
    pods: "100"
    requests.storage: 1Mi
    services: "100"
EOF
done
kubectl get deployment -A|awk '{print $1,$2}'|grep -v NAMESPACE|while read vns vpod; 
do    
   vres=`kubectl get deployment -n $vns $vpod -oyaml|grep hostPath|wc -l`;    
    if [ $vres -gt 0 ];then       
     echo "hostpath,www,deployment,$vns,$vpod">>/tmp/www.csv
    fi; 
done
docker inspect $(docker ps -q)  --format '{{ .Name }} -> {{ .GraphDriver.Data.MergedDir}} ' |sed 's|/merged||g'

参考资料