linux各种命令手册
linux各种命令手册
- 1 编程命令
- 2 运维命令
- 3 常见命令
- 4 高级命令
- 5 查找命令
- 5.1 awk高级语法
- ->awk BEGIN 和 END
- ->按照第1列升序【sort-n按照数字,-r降序】并将第1列(指定列)后的空格换为csv的逗号【默认按照空格隔开】
- ->实现excel中的vlookup【假设a.txt和b.txt都是逗号分隔符】
- ->实现excel中的vlookup【假设a.txt和b.txt都是空格分隔符】
- ->实现excel中的vlookup【假设a.txt和b.txt都是TAB分隔符】
- 5.2 批量输出绝对路径下的所有音频并更名
- 5.3 批量移动和改文件夹产生新数据集
- 6 vim命令
- 7 解压缩命令
- 8 传输文件命令
- 9 docker命令
- 10 时间相关
- 10.1 统计时间差(秒级)
- 10.2 日期遍历
- 11 tmux命令
- 12 git命令
- 12.1 远程分支重新命名,更改远程分支head指针
- 13 A机器和B机器ssh免密设置
- 14 gcc相关
- 20 java
- (1) java8 steam Map值转化
- 21 python
- Reference
1 编程命令
命令 | 含义 |
---|---|
man 3 clock_gettime
|
查看clock_gttime函数用的哪个头文件#inlcude "time.h",可换其他API
|
mount -t nfs -o nolock 10.13.150.244:/nfs /mnt/nfs
|
将window server上的nfs映射挂载到/mnt/nfs下
|
mount -t nfs -o nolock 192.168.4.28:/nfs /mnt/nfs
|
将window server上的nfs映射挂载到/mnt/nfs下
|
2 运维命令
命令 | 含义 |
---|---|
curl http://members.3322.org/dyndns/getip
|
获取外网ip方式 |
curl ifconfig.me
|
获取外网ip方式 |
3 常见命令
命令 | 含义 |
---|---|
clear
|
清屏 |
watch nvidia-smi
|
|
nvidia-smi -l 1
|
1s刷新nvidia-smi信息 |
reboot
|
重启 |
ifconfig
|
查看ip |
hostname
|
主机名 |
service iptables status
|
查看防火墙状态 |
mkdir folder/
|
创建文件夹folder |
cd folder/
|
打开文件夹 |
cd ..
|
回到上级目录 |
cd ~
|
回到当前用户目录 |
cd /
|
回到系统根目录 |
pwd [来源]
|
查看当前目录具体路径 |
mv [来源] [目标]
|
重命名或移动文件 |
mv -n [来源][目标]
|
不覆盖重复的文件 |
mv -f [来源][目标]
|
无条件覆盖已经存在的文件 |
cp [来源] [目标]
|
复制文件/文件夹 |
cp -R [来源] [目标]
|
递归到文件夹的子层目录复制 |
rm -rf [文件夹]
|
删除文件/文件夹 |
sudo mount -a
|
重新挂载所有分区 |
df -h
|
查看硬盘挂载点和大小 |
du -lh
|
查看当前文件夹的所有所占大小 |
df -h /var/lib/docker
|
查看某目录的挂载点 |
ls -h
|
显示当前文件夹各文件大小 |
getconf LONG_BIT
|
查看系统是32位还是64位 |
vim /etc/ssh/sshd_config
|
ssh的配置文件 |
/etc/init.d/ssh restart
|
重启服务 |
/etc/init.d/docker restrat
|
重启docker |
/etc/init.d/netwoking restrat
|
重启网络服务 |
/etc/init.d/lightdm stop
|
关闭桌面 |
systemctl stop docker
|
关闭docker服务 |
history
|
查看当前用户的所有历史命令 |
4 高级命令
命令 | 含义 |
---|---|
chown -R root 目录
|
change owner,改变拥有者为root(用户账号名)
|
chgrp -R root 目录
|
change group,改变拥有组为root(用户账号名)
|
chmod -R 755 目录
|
改变目录的权限,增加执行权限 |
**`cat /proc//cmdline | sed -e"s/\x00/ /g"; echo`** |
tree -L 3 -d
|
打印层级目录结构 |
【统计数量】【文件个数】【文件数量】 |
|
ls -lh -S
|
查看文件大小,升序
|
**` ls -l | grep “^-” |
**`ls -lR | grep “^-” |
**`find . -name “*” -type f | wc -l `** |
*`find ./ -type d |
wc –l或 ls -l
|
**`ls -lR | grep “^d” |
【查找和排序】 |
|
set -euxo pipefail
|
用于shell前,有利于脚本错误就退出
|
find . -iname "*.wav" > wav.flist
|
查找所有wav音频并保存完整路径到wav.flist |
grep -i "wav/train" wav.flist >trian.flist
|
在wav.flist中过滤出来wav/train的完整路径 |
find . -name word_oov.counts -exec ls -lh {} \;
|
查找文件,显示文件具体大小 |
**`find . -name words.txt -exec ls -lh {} ; | sort -nr -k 5`** |
export CUDA_VISIBLE_DEVICES=0,1
|
设置GPU可见设备 |
dos2unix demo.txt
|
将window换行符切换到linux格式 |
wc -l `find . -name "key_groupby.txt"`
|
查找文件,统计每个文件行数
|
wc -l `find . -name *text_seg_check.txt`
|
查找文件,统计每个文件行数 |
wc -l `find . -name .*pred.txt`
|
查找文件,统计每个文件行数 |
find . -name "hzl*.zip"
|
查找文件 |
**`find . -regex “.*origin.*wav” | wc -l`** |
tail -f `find . -name *seg_log_1.txt`
|
查找文件,查看文件后面5行 |
mv /*/*.wav data_wav
|
将/*/*下的所有wav文件移动到顶部 |
5 查找命令
命令 | 含义 |
---|---|
**`find . -name “*” | xargs grep “hello”`** |
**`find . -name “*” | xargs grep -v “hello”`** |
**`find . -name “*” -type f | xargs grep “hello”`** |
grep -i "hao" wav.scp
|
grep查找文件(-i忽略大小写)
|
**`cat wav.scp | grep -i “hao”`** |
**`find . -name “*” -type f | xargs grep “hello” |
grep -v 抢劫 /data1/text.txt
|
从文本里查找【不包含】【抢劫】的行
|
**`find . -name “*.h” | xargs egrep “include” |
【高级查找和排序】 |
|
**`find . -name “*.a” | xargs -i cp {} lib`** |
**`find . -name “all_results” | xargs grep “precision” |
【批量删除】 |
|
**`find . -name “*.wav” | xargs rm -rf`** |
for x in *.wav; do rm $x; done
|
|
【批量移动】 |
|
**`find . -regextype “posix-egrep” -regex ".*0[0-9]{2}.wav | .*100.wav" |
【以什么开头查找】 |
|
grep -i "^Test" demo.log > demo.txt
|
查找以Test开头的所有数据
|
5.1 awk高级语法
可参考一些语音awk命令解释日志 Awk 命令学习总结、AWk命令系列学习(linux shell)
命令 | 含义 |
---|---|
BEGIN{} | BEGIN模块在awk处理任何输入文件行之前执行,用于修改变量 |
END{} | END模块动作是在整个文件处理完毕之后被执行 |
awk ‘/li/ { print $0 }’ demo.txt |
查找并输出含li的每一行$0表示整行 $1表示第1列 $2表示第2列 $NF表示最后一列值 NF表示总列数 print可以打印出换行,printf没有换行【printf("\n")=print ""】 awk中以#作为单行注释
|
awk ‘length($0) > 80’ demo.txt | 查找并输出长度大于80的每一行 |
awk ‘{ if (length($0) > max) max = length($0) }END { print max }’ demo.txt | 查找并输出长度最长的行 |
**`awk ‘{ if($0 ~ /京/) print $0; }’ a.txt | head`** |
awk /REG/{action}
|
/REG/为正则表达式,可以将$0中,满足条件记录 送入到:action进行处理. |
awk -F [ ,\t]
|
对于使用多个分隔符,先用空格分割,再用其他分割符分割 |
awk -f demo.awk data.txt
|
运行awk脚本,data.txt是处理对象
|
gsub( Eregex, Repl, [ Input ] )
|
正则替换直接更改Input值 如gsub(/[0-9]+/,“!”,info) 替换为!,[Input]不填默认$0截取字符串substr(info,4,10)
|
sub( Eregex, Repl, [ Input ] )
|
同上直接更改Input值
|
match( String, Eregex)
|
正则查找,找到返回位置(从1开始编号),未找到返回-1 RSTART 特殊变量设置为返回值 RLENGTH 特殊变量设置为匹配的字符串的长度 match("123456",/[0-9]+/)?"ok":"no found"
|
split( Input, Arr, [Eregex] )
|
将 Input用指定正则分割为数组 Arr (下标从1开始)Arr[1], Arr[2], . . ., Arr[n] 并返回 n 变量的值 若未给Eregex参数,用当前字段分隔符(FS特殊变量)来分割 即split(info,A," ")
|
【运算】 |
|
awk '{printf("%s,",$1);for(i=2;i<=NF;i++) printf("%s ", $i);print $NF}}'
|
awk 遍历 |
**`cat data | awk ‘BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print “Max=”, max}’`** |
**`cat data | awk '{sub(/1/,“”); sub(/[ ]$/,“”); print $0}`** |
【scp】 |
|
**`find folder -iname “*.wav” | egrep “[0-9]{10}” |
【vlookup】 |
|
# awk ' NR==FNR{seen[$1]=$2; next} { if ( !( $1 in seen)) print $1; } ' all.scp b.txt > no.txt
|
判断数据【b.txt】 是在 【all.scp】中存在, 将不存在的打印 |
->awk BEGIN 和 END
【调用方式】awk -f file.awk data.txt
#!/bin/ awk -f
#文件命为file.awk
#运行前【不会读文本行】
BEGIN {math = 0english = 0computer = 0printf "NAME NO . MATH ENGLISH COMPUTER TOTAL\n"printf "----------------------------------------------------\n"
}
#运行中【一行一行载入文本】
{math+=$3english+=$4computer+=$5printf "%-6s %-6s %4d %8d %8d %8dln", $1, $2, $3, $4,$5, $3+$4+$5
}
#运行后【不会读文本行】
END {printf "----------------------------------------------------\n"printf "TOTAL :%10d %8d %8d n", math,english, computerprintf "AVERAGE:%10.2f %8.2f %8.2fln", math/NR, english/NR, computer/NR
}
->按照第1列升序【sort-n按照数字,-r降序】并将第1列(指定列)后的空格换为csv的逗号【默认按照空格隔开】
cat demo.txt|sort -k 1 | \
awk '{printf("%s,",$1);for(i=2;i<=NF;i++) printf("%s ", $i);print $NF}}' > demo.txt
->实现excel中的vlookup【假设a.txt和b.txt都是逗号分隔符】
# a.txt以csv的逗号隔开
北京,0004
南京,0003
东京,0006
# b.txt以csv的逗号隔开
1,北京
2,东京
3,临汾
4,南京
5,天津
awk -v path=a.txt -F ',' '
BEGIN { while((getline<path) >0){seen[$1]=$2; # 修改key,value#print $1,seen[$1] # 这是为了调试
}}
{#这里开始遍历b.txtfor(i=1;i<=NF;i++) { printf("%s,",$i); }if($2 in seen) printf("%s", seen[$2]); # 修改key,valueelse printf("none");printf("\n");
}' b.txt | head -n 10# 【新写法】NF==FNR用来判断当前是读入第一个文件【执行第一个{}】还是第二个文件【执行第二个{}】
awk -F ',' '
NR==FNR{seen[$1]=$2;next}
{for(i=1;i<=NF;i++) { printf("%s,",$i); }if($2 in seen) printf("%s", seen[$2]); else printf("none");printf("\n");
}' a.txt b.txt | head -n 101,北京,0004
2,东京,0006
3,临汾,none
4,南京,0003
5,天津,none
->实现excel中的vlookup【假设a.txt和b.txt都是空格分隔符】
# a.txt以空格隔开
北京 0004
南京 0003
东京 0006
# b.txt以空格隔开
1 北京
2 东京
3 临汾
4 南京
5 天津
awk 'NR==FNR{seen[$1]=$2;next}
{ if($2 in seen) printf("%s %s", $0, seen[$2]);else printf("%s none", $0);printf("\n");
}' a.txt b.txt | head -n 10
->实现excel中的vlookup【假设a.txt和b.txt都是TAB分隔符】
# a.txt以TAB隔开
北京 0004
南京 0003
东京 0006
# b.txt以空格隔开
1 北京
2 东京
3 临汾
4 南京
5 天津
awk -F '\t' 'NR==FNR{seen[$1]=$2;next}
{ if($2 in seen) printf("%s %s", $0, seen[$2]);else printf("%s none", $0);printf("\n");
}' a.txt b.txt | head -n 10
5.2 批量输出绝对路径下的所有音频并更名
# find 后面紧跟绝对路径才会输出绝对路径
wav_paths=`find /data1/data16k/aishell1/wav/dev -name "*.wav" | grep -i "dev"`
#echo $wav_paths
for x in ${wav_paths};doecho "do something"#将绝对路径$x如/data1/data16k/aishell1/wav/dev/S0736/BAC009S0736W0411.wav#文件名前面加上目录名(说话人)S0736-BAC009S0736W0411.wav#$(dirname $x)为/data1/data16k/aishell1/wav/dev/S0736#$(basename $(dirname $x))为S0736#$(basename $x)为BAC009S0736W0411.wav#更改后的文件名S0736后面加上后缀testmkdir -p $(dirname $x)testcp $x $(dirname $x)test/$(basename $(dirname $x))test-$(basename $x)echo $x;
done
5.3 批量移动和改文件夹产生新数据集
wav_paths=`find /data1/speechResource/data16k/DEMO16k_train -name "*.wav"|grep -i "wav"`
for x in ${wav_paths};do#$(dirname $x)为/data1/speechResource/data16k/DEMO16k_train/wav/HAOdir_root=$(dirname $x)base_name=$(basename $x)#HAO-demo.wav会替换为HAOtest-demo.wavbase_name_new=`echo ${base_name//-/test-}`#DEMO16k_train/HAO会替换为DEMO16k_test/HAOtesttarget_root=`echo ${dir_root//train/test}test`mkdir -p ${target_root}cp $x ${target_root}/${base_name_new}
done
6 vim命令
命令 | 含义 |
---|---|
split -l 250000 /data1/wavs.scp -d -a 4 wavs_
|
将wavs.scp按每25000行为一个小文件切割(以wavs_为前缀名) |
:%s/vivian/sky/g
|
在vim中执行:替换所有行中的vivian为sky
|
sed -i 's/原字符串/替换字符串/g' filename
|
在命令行中执行:替换文件中的所有匹配项
|
:行号
|
跳转到指定行
|
:set nu 或 :set number
|
显示行号
|
【sed操作】 |
|
sed 's/原字符串/替换字符串/'
|
只替换每行的第一个
|
sed 's/原字符串/替换字符串/g'
|
替换全部(g参数)
|
sed -i 's/原字符串/替换字符串/g'
|
直接修改原始文件,结果不是输出到管道流
|
sed 's/\/data2\/demo/\/data1\/hand/g'
|
路径的/要加反斜杠\
|
【grep操作】(正则请用egrep,grep需要加\反转?{}) |
|
grep -i -n "a\{0,2\}" demo.txt
|
-i忽略大小写,-n输出行号,\用于正则反转,grep无法直接支持正则
|
sed 's/原字符串/替换字符串/g'
|
替换全部(g参数)
|
sed -i 's/原字符串/替换字符串/g'
|
直接修改原始文件,结果不是输出到管道流
|
sed 's/\/data2\/demo/\/data1\/hand/g'
|
路径的/要加反斜杠\
|
sed -i '1d' demo.txt sed -i 'nd' demo.txt sed -i '$d' demo.txt
|
删除第1行 删除第n行 删除最后一行 |
【切割文本文件】 |
|
sed -n ‘1,200000p’ demo.txt > demo_01.txt sed -n ‘200001,400000p’ demo.txt > demo_02.txt sed -n ‘400001,$p’ demo.txt > demo_03.txt |
手动切割
|
split -l 200000 demo.txt
|
按照每20w行自动切割(-b 10M按大小)
|
【egrep】 |
|
**` egrep "456 | 789" test.txt`** |
*:任意次 ?:匹配0或1次 +:匹配至少1次 {m}:匹配m次 {m,n}:匹配m~n次 {m,}:匹配至少m次 {0,n}:匹配至多n次 |
egrep的次数匹配 |
^:行首 $:行尾 <,\b:词首 >,\b:词尾 |
egrep的位置锚定 |
.:任意单个字符 [ ]:指定范围内的任意单个字符 [^]:指定范围外的任意单个字符 |
egrep的字符匹配 |
**`(?<=95 | 98 |
**`(?<!95 | 98 |
【vim提示visual模式不能鼠标复制粘贴】
vim ~/.vimrc
# 增加如下内容
if has('mouse')set mouse-=a
endif
7 解压缩命令
# linux下本身提供了zip和unzip程序
# ubuntu安装方法
sudo apt-get install p7zip-full unrar p7zip p7zip-rar rar unrar
# centos安装方法
yum install zip unzip p7zip p7zip-plugins
yum -y install rar unrar #需要配置源,自行搜索
【发现7z a压缩和解压命令太长了,可以用alias配置到~/.bashrc里,7zz(zip), 7zu(unzip)】
ubuntu(centos)环境变量设置
【配置以下快捷命令】
alias 7zz='7z a'
alias 7zx='7z x'
命令 | 含义 |
---|---|
【批量解压】 |
|
for x in *.tar.gz; do tar zxvf $x; done
|
|
unzip "*.zip" 或 unzip \*.zip
|
|
for x in *.zip; do unzip $x; done
|
|
【基本解压】 |
|
tar -zxvf ab.tar.gz
|
解压到当前目录 |
tar -zxvf -C /home/cc
|
解压到指定目录 |
unzip test.zip -d /root/test
|
将test.zip解压到/root/test目录 |
7z x data.7z
|
解压文件,需要安装p7zip-full p7zip
|
7z x data.7z -o./data
|
解压文件 7zx data.7z
|
rar x test.rar
|
解压文件,需要安装unrar库
|
tar -zcvf ab/tar.gz /home/aa
|
将文件夹aa打包 |
zip -r test.zip test
|
将test文件夹压缩为test.zip |
7z a test.7z /root/anjos/*
|
压缩文件 7zz test.7z /root/anjos/*
|
7z a Mytest.7z /root/anjos
|
压缩文件 7zz Mytest.7z /root/anjos
|
gzip -c ali.1> alig.1.gz
|
保留源文件式压缩,将alig.1文件压缩为alig.1.gz
|
gunzip -c ali.1.gz > ali.1
|
保留源文件式解压,将ali.1.gz解压为ali.1
|
【加密压缩】 |
|
7z a -p test.7z /data
|
会弹出让输加密密码, 7zx时会让输出解压密码 |
【快速压缩】 |
|
**`tar -cvf - folder | pigz -k -p 40 > folder.tar.gz`** |
tar --use-compress-program=pigz -cvpf XXX.tar.gz XXX
|
快速压缩(yum install pigz) pigz官网
|
【快速解压】 |
|
**`pigz -dc -k folder.tar.gz | pv |
tar --use-compress-program=pigz -xvpf folder.tar.gz
|
快速解压(yum install pigz)
|
time $cmd | 测速 |
8 传输文件命令
命令 | 含义 |
---|---|
scp -rvz --progerss /data/* admin@10.10.5.10:/data
|
从当前主机位置复制文件到远程主机指定目录下
|
scp -P 11111 data.zip admin@10.10.5.10:/data
|
【指定端口】从当前主机位置复制文件到远程主机指定目录下
|
rsync -avz --progress hzl kaldi@10.10.5.10:/data1
|
将当前主机的hzl复制到远程主机指定目录下
|
rsync -avz --progress -e 'ssh -p 2288' hzl kaldi@10.10.5.10:/data1
|
【指定端口】将当前主机的hzl复制到远程主机指定目录下
|
9 docker命令
【切记】安装好docker和nvidia-docker后要重启哦,不然启动的容器会报无法找到special GPU
Docker Hub
nvidia/cuda:10.2-cudnn7-devel-centos7 镜像地址
# 创建一个镜像
sudo docker run --gpus all --name anjos -d -it -p 5000:22 \
-v /data1:/data1 -v /data:/data \
nvidia/cuda:10.2-cudnn7-devel-centos7 /bin/bash
# 启动
sudo docker start anjos
# 进入(用id也可以)
sudo docker exec -it anjos bash
# 删除镜像
sudo docker rmi imageid
# 删除容器
sudo docker rm containerid
# 查看所有容器
sudo docker ps -a
# 查看所有已经成功启动的容器
sudo docker ps
10 时间相关
10.1 统计时间差(秒级)
start_time=`date +%s`
end_time=`date +%s`
cost_time=$[ end_time - start_time ]
echo "耗时 = $cost_time senconds"
10.2 日期遍历
#!bin/bash
beg='2020-01-01'
end='2020-06-30'
begTime=`date -d "$beg" +%s`
endTime=`date -d "$end" +%s`
echo "[beg end]=[$beg $end]=[${begTime} ${endTime}]"
while [[ $begTime -le $endTime ]]
doecho " current beg=${beg} end=${end}"cmd="doing something"#T+1更新到begbeg=`date -d "${beg} 1 day" +%Y-%m-%d`begTime=`date -d "${beg}" +%s`
done
11 tmux命令
可以很好的解决当ssh断开的时候程序死掉的问题
yum -y install tmux
请见2.5 ubuntu(centos)环境变量设置,设置了快捷命令方式
命令 | 简写 | 含义 |
---|---|---|
control+b
|
唤醒tmux命令前缀
|
|
tmux ls
|
tl
|
列出所有会话 |
tmux new -s 1
|
t 1
|
创建名称为1的会话 |
tmux detach
|
td 1
|
断开会话(后台运行),control+b,然后按d也可以 |
tmux a -t 1
|
ta 1
|
进入会话 |
tmux kill-session -t 1
|
tk 1
|
杀死会话,或者control+d直接杀死 |
control+b,再按s,进行会话切换
|
会话切换 | |
nohup p -u demo.py > nohup.txt 2>& 1 &
|
后台运行 |
12 git命令
命令 | 含义 |
---|---|
git remote set-url origin https://10.10.40.244/whaozl.git
|
仓库重新定义新链接
|
git config credential.helper store
|
记住密码
|
git config [--global] user.name "[name]"
|
设置提交的用户信息 |
git config [--global] user.email "[email address]"
|
设置提交的用户信息 |
git config --list
|
显示当前git配置 |
【提交】 |
|
git clone [url]
|
下载项目
|
git add [dir]或多个[file]
|
添加文件或目录到缓存区,也可以添加.当前目录
|
git rm [dir]或多个[file]
|
删除文件或目录到缓存区,也可以添加.当前目录
|
git commit -m [message]
|
提交缓存区到仓库
|
【远程】 |
|
git pull [remote] [branch]
|
取回远程仓库的变化,并与本地分支合并
|
git push [remote] [branch]
|
上传本地指定分支到远程仓库
|
git remote -v
|
显示所有远程仓库 |
git push [remote] --all
|
推送所有分支到远程仓库 |
【重置】【谨慎操作,先备份】 |
|
git reset --hard
|
重置到最近的commit |
git clean -df
|
清除没有被track的文件 |
【分支】 |
|
git branch -a
|
列出所有分支(本地,远程,-r是远程,不加后缀是本地) |
git branch [branch-name]
|
新建分支 |
git checkout -b [branch]
|
切换到指定分支 |
git push origin --delete [branch-name]
|
删除远程分支 |
git branch [branch-name]
|
新建分支 |
【标签】 |
|
git tag
|
列出所有tag |
git tag [tag-name] [commit]
|
新建tag到当前commit或指定commit |
git tag-d [tag]
|
删除本地tag |
git push origin :refs/tags/[tagName]
|
删除远程tag |
git push origin --tags
|
提交所有tag到远程 |
git push origin [tag]
|
提交指定tag到远程 |
【忽略】 |
|
!/node_modules/layer/
|
在已忽略文件夹中不忽略其某个子文件夹 |
/node_modules/* |
忽略文件夹后面一定要加*,不然失效
|
!/node_modules/layer/layer.js | 在已忽略文件夹中不忽略其某个文件 |
【添加密钥】 |
|
ssh-agent bash
|
解决Could not open a connection to your authentication agent |
ssh-add /d/paper/.ssh/hihaozl_rsa
|
添加密钥,在C:\Program Files\Git\etc\profile配置快速启动命令,这样不用每次都启动 |
【任何提交要先git add .后方可git commit -m 然后再git push】
git config --global user.name "anjos"
git config --global user.email whaozl@163.com
# 记住密码
git config credential.helper store# 这里修改了Makefile这个文件
git add word/Makefile
git commit -m "修改Makefile"
git push
12.1 远程分支重新命名,更改远程分支head指针
1 【查看所有分支】
git branch -a2【重新命名】本地分支(没有推送到远程的)a:【重命名本地分支名】(远程分支对应的本地分支名)
git branch -m oldName newNameb: 【删除远程分支】
git push --delete origin oldNamec:上传新命名的本地分支
git push origin newNamed:把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
13 A机器和B机器ssh免密设置
- Step1: A机器操作——产生公钥和私钥
一直敲回车即可(切记无需设置什么-t rsa -C ‘abc@qq.com’),然后在~/.ssh下生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)文件
ssh-keygen
- Step2: A机器操作——复制公钥到B机器
# 也可以将10.10.10.5配置到/etc/hosts中起一个别名
ssh-copy-id kaldi@10.10.10.5
# 指定端口指定公钥方式
ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 22222 kaldi@10.10.10.5'
- Step3:A机器操作——免密登录B机器
# 指定端口方式(如果默认无需加-p)
ssh zhangming@10.10.10.5 -p 22222
- 【警告】A机器免密登录B机器——仍需密码
#查B机器日志原因:Authentication refused:bad ownership or modes for file
tail /var/log/secure -n 20
#【原因】ssh禁止home目录和~/.ssh目录对组有写权限
chmod -R g-w /home/kaldi
chmod -R 700 /home/kaldi/.ssh
chmod -R 600 /home/kaldi/.ssh/authorized_keys
14 gcc相关
- 【gcc编译链接模板命令】这部分可参考LINUX下C语言编程调用函数、链接头文件以及库文件 undefined reference to
# 编译、链接两步
g++ -I./haolib -std=c++11 -g -c hao-test.cc -o hao-test.o
g++ hao-test.o -L./haolib -lhao -lpthread -o hao-test# 编译、链接一步
g++ -std=c++11 -g -o hao-test hao-test.cc -L./haolib -lhao -lpthread
20 java
(1) java8 steam Map值转化
Map<String, Integer> result = map.entrySet().stream().collect( Collectors.toMap(Map.Entry::getKey,entry -> entry.getValue().size())));
21 python
Reference
linux使用awk实现excel中的vlookup行数匹配效果
AWK高级编程 转载
Linux Shell 高级编程技巧1----深入讨论(awk、<<)
shell 强大的awk
Linux Shell常用技巧(五) awk编程
awk之NR==FNR问题
↩︎
linux各种命令手册相关推荐
- Linux简易命令手册
linux基本知识: 1.linux中的库是以.so后缀结尾的. 2.用户接口. GUI接口:图形化接口 CentOS:KDE CLI接口:命令行接口 sh bash ksh 3. ~表示家目录 $: ...
- Linux常用命令手册(完整版)
关机/重启/注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h + ...
- linux 常用命令手册
1.startx 从文本界面进入图形界面 2.ls -lhar 显示目录与文件 ls -lrt ...
- Linux常用命令手册
核心: cat定位,sed时间搜索,grep关键字查询,tail行数,|管道结合 最前N行 这个主要看文件最开始是什么时候记录了什么 #head -1 XXX.log 最后N行 #cat XXX.lo ...
- linux编译lnx文件命令_(完整word版)Linux常用命令手册大全,推荐文档
NO 分类 PS 1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以 . 头的隐含文件 文件管理 # ls ls -l 或 ll 列出当前 ...
- linux常用命令速查手册PDF下载
Linux常用命令速查手册 需要该PDF文档的朋友扫码关注下方二维码[入门小站],后台回复 「1001」 自取 点击下面标题即可获取对应资料 LeetCode刷题开源手册 LeetCode题解[jav ...
- linux常用命令速查手册
Linux常用命令速查手册 需要该PDF文档的朋友扫码关注下方二维码[入门小站],后台回复 「1001」 自取 点击下面标题即可获取对应资料 LeetCode刷题开源手册 LeetCode题解[jav ...
- Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用。
Linux Manual Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用. 截止目前,含有 65+ 命令. 注:这里只列出常用命令, 如果想要更系统的可能需要翻阅官方手册. 目 ...
- 离线调用linux命令,GitHub - rinetd/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
Linux Command 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他们家的数据linuxde.ne ...
- 实验楼linux命令,GitHub - encorechow/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
Linux Command 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他们家的数据linuxde.ne ...
最新文章
- 单招计算机考试知识点,单招考试数学必背知识点(11页)-原创力文档
- java如何让线程等待_如何使Java线程等待另一个线程的输出?
- 5.18 上午 外教专业课 linux 听力
- 做问答系统是对题目修改的bug
- linux下用mail发送邮件
- arcpy.mapping常用四大件-StyleItem
- PHP之webservice调用接口
- journalctl -xe
- matlab画经纬度点图,Matlab绘制汉经纬度的散点图 1
- 华硕win10键盘失灵_win10笔记本键盘失灵
- 随笔——物质与思想(或称意识)
- html怎么设置左偏移量,CSS中margin属性的偏移量详解(代码示例)
- 会员权益体系内容设计维度
- springboot设置运行内存_spring boot应用优化,6s内启动,内存减半
- 三行代码爬取京东数据
- 金庸小说人物知识图谱构建——获取共现关系
- Python 抓取 快代理、西刺代理 、西拉代理等等 构建免费代理池
- 1主2从基于GKE搭建k8s集群-无需科学上网
- NVIDIA编码器和解码器
- 对java后端的一些学习建议
热门文章
- 腾讯浏览器支持html5视频播放器,JS第8款:html5media.js跨浏览器兼容的HTML5视频音频播放器...
- 区块链是什么,如何简单易懂地介绍区块链?
- idea创建Springboot项目时,出现Error:java: 读取C:\Users\HP\.m2\repository\com\vaadin\external\google\android-js
- 【linux学习笔记】began,每次玩这个都特别着迷
- 你开奖了吗?细数大厂春节红包背后的技术支撑
- python输出一棵树_如何用Python画一棵树
- 中英对照:30句经典英语广告词欣赏
- 工控自动化通讯测试工具总结之--串口
- 基于Android的医院预下单叫号排队系统
- No instances available for provider