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
2 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 自然的关闭窗口