一些shell总结2

4 篇文章 0 订阅

lunar 可以查看阴历

gi 选中第一个输入框 tab选择下一个

 

du -s 默认返回的是kb -h human人可读的

hadoop fs -du -s 返回的是字节bytes

 

`date -d "-1 day " "+%Y-%m-%d"` 前一天并格式化输出

 

a=1

b=$(($a+1))

 echo $b 2双括号字符串直接相加

 

从excel直接复制会有空行很烦,所以

sed '/^$/d' 去除空行

 

xsel 直接将shell返回值给粘贴板

 

for f in {1..33} 两个点 范围值

do

done

 

逐行读取 

cat xx | while read line

do

$line

done

shell时间戳 和字符串时间的转换 

date -d "2010-10-18 00:00:00" +%s                1287331200

date -d @1556763046 "+%Y-%m-%d %T"      2019-05-02 10:10:46

 

自增 let i+=1

按住 ctrl 可以同时选择不相邻的多个文件

shift则是全选

`` $() (fish) 引用

alt F2输入 r就可以重启gnome-shell 不用命令重启了

 

# 注释

 

gnome外接显示器插上转接线,即可自动连接显示器,将电脑合上盖,显示器自动成为主屏幕,

初始电脑为主屏幕,将电脑合上盖,显示器自动成为主屏幕,

如果要转换过来,将连接线拔下重新插上即可

 

修改ip 

1 静态ip /etc/network/interface

2 gnome-setting 自带的setting network 配置 ip 子网掩码 等

 

shuf -n2 xxx 从文件中随机取两行

 

read 示例 read 命令  用于提示输入 比如说

“Enter password ” 等等之类的

 

read -p '"do you know [Y/N]:"' xxx

if [[ $xxx == 'yes' ]] ; then

 echo $xxx

fi

read -n10 -t30 -r -s -d $ -p "Enter Password:" password

echo -e "\nThe password your input is:$password"

    -p 提示语句,后面接输入提示信息,这里为'Enter Password: '

    -n 参数个数,有时候要限制密码长度,或者其他输入长度限制,比如[Y/N],只输入输入一位,-n1

    -s 屏蔽回显,屏幕上不显示输入内容,一般用于密码输入

    -t 等待时间,这里设置30秒,30秒内未输入或者输入不全,终止

    -d 输入界限,这里是$,输入到$,自然终止输入

    -r 屏蔽特殊字符\的转译功能,加了之后作为普通字符处理

 

字符串比较if [[ $last_file == 'empty' ]] 需要加上两个 括号

 

 fdsfds > /dev/null 2>&1 错误信息不输出 即重定向到无底洞

 

赋值从右往左看

 

shell脚本中 单引号中不可$xxx 引用

而双引号中可以

 

shell 循环中退出 直接break

for i in {1..5} 在1到5循环包括1 5 

do

xxx

done

shell 语法对空格非常敏感,这也是我对shell比较烦感的一点,太死了 尤其是if else fi

 

if [ $1x == "ab"x ] ; then

    echo "xxx"

elif  [ $1x =="aa"x ]; then

   echo "sdfdsf"

else 

    echo "dsfadsfsdafsa"

fi

shell 中对比需要分两种情况,

1 字符串类型 只能用==,<,>,!=,且在对比字符从时需要在末尾加上x或者其他的字符,因为如果$1 为“”

就会翻译为空 报错,或者使用[[ ]] 双重引号就不用加字符了

使用[] 时如果是< 或者 > 需用转意 \>

对比数字既能 -eq(equal),-ne(unequal),-gt(greater than),

-ge(greater than or equal to) -lt (less than) le(less or equal)

使用正则

if [[ $1 == a*a  ]] 双引号 

 

文件的一些判断

-e 文件是否存在 默认存在 

-f 文件是否是普通文件(不是目录,设备文件,链接文件) 默认不是

-s 文件大小不为零 默认不为零

-d 默认为目录

-b 默认为块设备 (光驱,软盘等)

-c 默认字符设备(键盘 声卡等)

-p 管道

-h 符号链接

-r -w -x 之运行该脚本的用户是否具有可读 可写 可执行的权限 

f1 -nt f2  new than

f1 -ot f2 old than

以上可以用 ! 取反

 

测试端口 本地可以 netstat -anp | grep xxx

但是远程无法登录就不能用了,所以 telnet ip port

如果此端口未开通就会拒绝链接

如果此端口开放就会链接 需要 输入^]退出

 

soft link
ln -s /opt/firefox/firefox /usr/bin/firefox 链接 目标 想要去的位置

netstat -nltp  常用
netstat -anp  可以罗列出所有的端口

locate 不用指定通配符 find 需要指定通配符

locate 比find 快使用简单 locate=find / -name "*xxx*"
find 路径 -name "*xxx*"
locate自己的索引库 每天更新一次crontab ,最近最新的不会出现
可以手动sudo updatedb更新,  /var/cache/locate
但是有的是mlocate 可能是因为locate无法安装吧
他们两个的数据库的地址不同
locate db path /var/cache/locate/locatedb
mlocate db path /var/lib/mlocate/mlocate.db
相比较而言,使用locate,可以让locate更新在每一次关机或者重启时更新
updatedb sudo updatedb 在别名处设置
locate 可以采用正则 locate "^pdf" locate "*.pdf" 
locate -i 忽略大小写


touchpad fusuma touchegg

`` $() (fish)

ls -Slh


sed -n '4p' 打印指定行

history -a -c
history append clear

grep "i am you" 匹配一段话 冒号
grep 'asd\|qwe' file 或者 \|
grep asd | grep qwe 利用管道实现并且


可以用这个来批量杀死一些进程
kill -9 `(sudo sdfcf | grep 'erf\|abd' | awk '{print $2}' | awk -F '/' '{print $2}')`

 

"$()" 双引号中可以引用 单引号中不行


linux修改ip 

1 直接通过gnome setting  network gui 去设置ip

https://blog.csdn.net/qq_38138069/article/details/80982527

设置固定ip 

 

alt ` 同一软件不同实例中切换

jps -m 具体的java进程是哪个具体目录

scp -P port   xxx   user@ip:~  大写的P 在前面  ~ 拷贝到其家目录

ssh -p user@ip 小写的p

cd  - 上一次目录

cd ~ cd 家目录

!history ctrl r历史记录

 

rev 反转命令

ls -lt 按照时间进行排序 r反转 

ls -Slh 文件按照大小排序  r reverse 

如果有文件夹和文件则需要

du -s * | sort -nr 

du 不能加h -nr number reverse

命令行翻译 google trans  sdcv 

 

neofetch --ascill_distro bsd arch mac windows etc --logo

/home/zhaolin/.config/neofetch/config.conf

 

alt d 删除后一个单词

alt backspace删除前一个单词

 

ctrl c 终止 

所以粘贴复制就变为 ctrl insert shift insert 

或者 ctrl shift c v

 

shift 选中一个 在去选会选中中间的全部

sublimetext ctrl k b 侧边栏 ctrl k n new tab

 

 echo xxxx | wc -L single column 统计一行文件有多少个

 

/etc/modprobe.d/blacklist.conf linux 下的黑名单 blacklist xxxx

 

echo xxxx | pv -qL 40 匀速打出

 

ctrl ; fcitx history copy paste  

 

uname -a 查看内核版本

 

wifi 和网线 切换后不想reboot or init 6 so

systemctl restart network-manager.service 

 

alt F2 restart gnome-shell extension wallpaper etc

 

vim gg G head tail

 

先排序再去重  cat xxx  | sort | uniq

 

gi first input tab next

sort -n 按照数字排序 -r reverse 反序

 

linux install 

first source install easy apt or yum install

second deb appimage github or 官网

 

shell 脚本第一句 ! 声明其用的解释器,即用什么去运行这个脚本 

#! /bin/bash   #!usr/bin/python

或者不指定在运行的时候指定,bash xxx.sh python xxx.py

 

ctrl left right 跳过一个单词

 

fish alt left right 目录前进后退
 

shell 自定义命令 短的话就直接自定义别名 alias 

长的话,就写个脚本放到PATH里面直接调用

 

命令行下制作启动盘 dd if =xxx.iso of =/dev/usb

 

vim u 撤销 ctrl r反撤销

 

tar -zxvf xxx.tgz  -C directory 大写的C解压到指定目录

 

终端 ctrl c 终端  ctrl v 列操作

所以 ctrl shift insert 粘贴复制

或者 ctrl shift c v

 

cd /media/user/youpan

umount /media/user/youpan

 

vim

a(当前后一个插入)

i(当前插入)

o(下一行)

  O(上一行)

 

vim 删除某些东西 比如回车换行,使之成为i一行 

替换为空变相删除 :%s/\n//g

 

window 在linux 乱码 unar 解压或者将文本 cat xxx | iconv -f gbk 

日历相关 cal calendar lunar(农历 ) date gnome-calendar   alias now='date "+%a %Y-%m-%d %T" '

 

find 忽略大小写 find / -iname "*xxx*"  

 

su user 切换 用户

su super root

 

PATH order bind shortcuts to easy use 

 

gnome-shell-extension-prefs 或者右键 gnome  extension 打开扩展配置中心

terminal 双击某个单词自动复制到粘贴板

 

alt tab 切换应用程序 

alt ` 切换同一实例中的程序

 

fish 模糊匹配

 

gnome-terminal --maximize

xfce4-terminal --maximize

 

touchpad: fusuma、touchegg

 

for 循环  1 到 10  for f in {1..10}

for 多个值  for f in 1 3 5 中间以空格相隔

 

shell ls 中文件名有空格 如果对其批量处理的话,会按照空格进行处理,则会报找不到文件

所以解决办法是在文件名空格前 加 \ 转义 

如 sublimetext editor  变成 sublimetext\ editor  就可以对其进行操作了

先用ls > test 重定向到文件内,在用vim列操作对其加 \ 即可

 

tree 只是用来查看目录结构,用来统计行数个数即使和wc -l 在一起也不合适

所以需要用find 例如find 查找当前 目录下的所有txt文件 并统计个数 

find . -iname  "*.txt" | wc -l 即可

而且find 还有一个好处 就是直接列出 文件所在的相对路径地址 ,可以直接对这些地址进行操作,比如将这些txt文件

提取到指定的一个目录下(原来的txt文件在不同的子目录下)

 

for 多层循环 一层一层的看,一步一步的走 ,可以用echo 打印看是否符合自己的要求

多级目录下有相同名的文件,还要其相同的文件移动到一个目录下,且不能覆盖

则可以考虑,将文件名重命名为 多级目录名-本来名字

#! /bin/bash

# 一步一步测试echo 打印看看 文件名对应

for f1 in {1..9}

do

for f2 in {1..5}

do

for f3 in `ls /data/$f1/$f2`

do

mv /data/$f1/$f2/$f3 /data/$f1/$f2/$f1-$f2-$f3

done

done

done

 

设置以及取消变量

a=1 for f  in `ls` do mv $f $a-$f;let a++;done; unset a

 

echo -n xxx | xsel  -n 取消换行符

 

super shift up down 工作区切换

super shift left right 双屏切换

 

navicat 连接时候如果通过ssh连接的时候,general ip 设置为localhost

create table as select * from ddd

 

gnome 双屏时,可以通过setting -> display 来设置主显示器,个人喜欢将大屏作为主显示器

 

bash cd and then ll 

cat ~/.bashrc

cd() {

    builtin cd $1 ;ls -l

}

 

fish cd and then ll 

config.fish

function cd

    builtin cd $argv;and ll

end

$1  $argv 不可变

builtin 这实际就是bash容许用户自定义和builtin命令同名的函数,但是执行时,要区分到底执行的是哪个,默认就是函数啦,前面带上builtin就是执行bash自己的内建命令啦。类似于java 重载

而且autojump j 也可用 j 然后会自动调用 ll 可见autojump j 内部也是调用的cd 正好 cd builtin 覆盖默认的cd 

 

head 或者 tail 或者 sed '1,2d' 删除指定行 或者 grep / grep -v 来提取所需部分

 

grep ./* 会展示出具体内容在哪个文件里面 不能直接 cat * | grep xxx 那样会太混乱

 

alt print 打印当前监控器截图 

wmctrl -c closeClose the window gracefully  wmctrl 窗口控制工具用来提升 缩小放大关闭窗口

-c 自然的关闭窗口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值