Linux 学习笔记

系统

# 查看系统启动时间
uptime

文件管理

# 文件的压缩
zip -r xxx.zip ./ytx-trade 

文件的读写权限查看,命令

ll -a

输出结果示例:

total 2404136
drwxr-xr-x  27 chenlushun  staff   864B 12  2 14:17 .
drwxr-xr-x+ 77 chenlushun  staff   2.4K  2 21 13:27 ..
-rw-r--r--@  1 chenlushun  staff   6.0K 11 13 23:58 .DS_Store
-rwxrwxrwx@  1 chenlushun  staff    65M  8 30 17:53 evernote_6.0.8.1427683684.dmg
-rwxrwxrwx@  1 chenlushun  staff    61M  9 22 07:07 googlechrome_mac_60.0.3112.101.dmg
-rwxrwxrwx   1 chenlushun  staff    43M 11 13 23:08 gradle-2.14.1-bin.zip
drwxr-xr-x  12 chenlushun  staff   384B 11  8 09:04 gradle-4.3.1
-rwxrwxrwx@  1 chenlushun  staff    92M 11 13 22:05 gradle-4.3.1-all.zip
drwxr-xr-x@ 14 chenlushun  staff   448B  7 30  2017 jenkins
  • 第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道
  • 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行。
  • 第5-7位表示和这个文件属主所在同一个组的用户所具有的权限。
  • 第8-10位表示其他用户所具有的权限。如:drwxr-xr-x user1 group1 filename

改变文件权限: chmod

每个文件都定义了文件的拥有者、拥有组、其他人,我们分别用u、g、o来代表。增加权限用+号、删除权限用-号,详细使用权限用=号。

# 改变一个文件目录的权限
sudo chmod u=rwx,g=rw,o=rw /home
#查看本系统中的shell:
cat /etc/shells
# 把 zsh 设置成默认的 shell:
chsh -s /bin/zsh
# 让配置文件生效:
source .bash_profile

改变文件的拥有者:chown

chown alex xxx.sh

查找文件 find

假如在系统中查找名称为my.conf的文件

find /  -name my.conf

数据库查找 locate

一般在执行此命令的时候,会先执行下,updatedb

updatedb
locate my.conf

查找可执行文件 which/whereis

which用于从系统的PATH变量所定义的目录中查找可执行文件的绝对路径
whereis 不但能找到二进制的可执行文件,还能找到man操作文档

which mvn   # 返回/usr/local/bin/mvn
whereis passwd # 返回/usr/bin/passwd

sed

# 默认不修改原文件,如果想要保存下来,一般通过重定向。
# this 替换为o
sed -e 's/this/o/g' sed.txt
sed -e 's/this/o/g' -e 's/is/IS/g' sed.txt
sed -e 's/this/o/g' ; 's/is/IS/g' sed.txt

delete one line
sed 1d sed.txt
# 如果想直接修改原文件使用 -i
sed -i 1d sed.txt
sed 1,3d sed.txt
# 清空了文件
sed 1,$d sed.txt

远程拷贝

scp -r sh  chenlushun@192.168.10.71:/Users/chenlushun/ok

-r是可选参数

参数说明:

-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

bash shell的安装

# 命令基本都在这里
echo $PATH
echo $SHELL
# 查看bash版本
bash --version
# 修改shell,chage,默认修改的是root的,可以制定用户,例如chsh chenlushun
chsh shell
# 
type scp

网络管理

DNS设置

DNS是全互联网主机及其IP地址对应关系的数据库。其文件保存在/etc/resolv.conf

cat /etc/resolv.conf

网络检测工具

  • ping
  • host 用来查询DNS记录的,例如
host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 111.13.100.91
www.a.shifen.com has address 111.13.100.92
  • traceroute

进程

进程表示是一次执行过程,它是应用程序的运行实例,是一个动态的过程。或者说进程是操作系统当前的程序。
进程有三种状态,运行态、就绪态、阻塞态

进程的观察 ps、top

ps 参数

参数说明:

参数说明
aux显示所有包含其他使用者的进程
➜  bin ps aux  | head -n 2
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
chenlushun         937   4.8  1.2  6033556  99292   ??  S    三07上午  17:19.52 /Users/chenlushun/Applications/iTerm.app/Contents/MacOS/iTerm2

参数说明
USER 进程拥有者
PID pid
%CPU 占用cpu的使用率
%MEM 占用内存的使用率
VSZ 占用虚拟内存的大小
RSS 占用内存的大小
TT
STAT 进程状态,D不可中断、R运行中、S休眠、T暂停、Z僵尸进程、W没有足够的内存可以分配、< 高优先级的行程、N低优先级的行程
STARTED 进程开始时间
TIME 累计使用CPU的时间
COMMAND 执行的命令

lsof -i:8080 查看端口号
touch run.sh//
top:提供了实时的系统状态监控、可以根据CPU使用、内存使用、执行时间等指标对进程进行排序

进程的终止 kill 、killall

kill [信号代码] 进程ID

vi和vim编辑器

vim分为以下三种模式,分别是命令模式、输入模式、底线命令模式
更多命令可参考:

man vim

三个模式之间切换方式:

  • i 切换到输入模式,以输入字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

命令模式

快捷键描述
double D删除一行

输入模式

底线命令模式

命令示例描述
set number 或者 set nu:set number显示行号
set nonumber 或者 set nonu:set nonumber关闭行号
:w [filename]:w ok.sh将编辑的数据储存成另一个档案(类似另存新档)

mac环境下一些快捷键

快捷键描述
control+f向下移动一屏
control+d向下移动半屏
control+b向上移动半屏
control+u向上移动半屏
$光标移动到末尾(shift+4)
0光标移动到开始
gg光标移动到文档开始位置
G大写G,移动到文档结尾

control+v 复制多行,d 删除,y复制,p粘贴

正则表达式

# . *不包含换行的字符
grep 'r..t' /etc/passwd
grep 'r.*t' /etc/passwd

# 只能匹配包含2个o的
rep 'ro\{2\}t' /etc/passwd 
# 至少两次以上
grep 'ro\{2,\}t' /etc/passwd 
# 匹配o  n-m次
grep 'ro\{n,m\}t' /etc/passwd 
# 匹配_k开头的行
grep '^_k' /etc/passwd 
# 匹配false结尾的行
grep 'false$' /etc/passwd
# 匹配一个电话号码
grep '^1[38][0-9]\{9\}'   mobile.txt  
grep '[0-9]\{4\}[ -][0-9]\{8\}'   mobile.txt #0571-88888888   0571 88888888
# 边界匹配
echo 'hello' |grep '\<hello\>' 
# mac与linux有所却别
echo '123' |grep -P '\d' 
# 精确匹配单词hello
echo 'hello, world !' |grep '\bhello\b' 
echo 'helloworld !' |grep 'hello\B'

# \w 匹配字母、数字、下划线 equals [A-Za-Z0-9]
# \W 匹配非字母、非数字、非下划线 equals [^A-Za-Z0-9]

echo 'root' |egrep 'ro+t' 
echo 'rot' |egrep 'ro?t' 只能匹配0次或者1次

ll -l {deploy_shoppingcart,deploy_web}.sh
ll -l [0-9].sh
# 通配符 * ?{}
# ^、!    [^A]、[!A]取反操作
grep -i This english.txt
#统计不含This的行数,不区分大小写
grep -ivc This english.txt 

小提示:正则表达式通常用在文件内容的匹配上,通配符主要用在文件名的匹配上

Linux中的一些小技巧

  • Linux输入命令时,自动匹配历史命令, windows下快捷键是:ctrl+R,mac快捷键:control + R
  • B主机免密登陆A主机,B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里
ssh localhost
# If you cannot ssh to localhost without a passphrase, execute the following commands:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值