Linux基础

在不断填坑中前进。。

Posted by 三十一 on December 8, 2017

Linux基础

shell 命令

  • IFS=$'\n' 修改默认的分割方式
  • ls 显示当前路径下的文件
  • cd 进入某级目录
  • clear 清屏
  • touch 创建文件
  • mkdir 创建文件夹
  • pwd 显示当前路径
  • cat 查看文本内容
  • history 之前执行的命令
  • rm 删除
  • ls >1.txt 显示的文件存储到1.txt 文件
  • cat 1.txt >2.txt 查看 1.txt 内容 并存储到 2.txt 并覆盖原内容 ,如果2.txt 文件不存在,先创建文件,再存储内容。
  • cat 1.txt >>2.txt 两个 » 代表在原内容的基础上追加内容
  • wc -w yunis.txt 统计 yunis.txt 的文字数
  • more 分页查看大文件 按键 q 退出
  • ls; ls -a 可以用 ; 执行两条命令
  • | 管道:一个命令的输出可以通过管道做为另一个命令的输入。
  • cd - 回到上次用户所处在的路径
  • cd ~ 回到根目录
  • mv 1.txt 11.txt 重命名 1.txt 为 11.txt
  • mv 1.txt ../11.txt 移动1.txt 到上层目录并重命名为11.txt
  • cp 2.txt ../ copy 2.txt 一份到上层目录
  • ln -s 11.txt 100.txt 为 11.txt 创建 100.txt 的快捷方式
  • ln 11.txt 100.txt 相当于复制了一份相同的内容
  • grep -n '^a' 1.txt 搜寻以a开头的行
  • grep -n 'a$' 1.txt 搜寻以a结尾的行
  • find ./ -name "^SY*.m" 查找当前目录下名字为 SY 开头的 .m 结尾的文件。
  • find ./ -name test.sh 查找当前目录下所有名为test.sh的文件
  • find ./ -name '*.sh' 查找当前目录下所有后缀为.sh的文件
  • find ./ -name "[A-Z]*" 查找当前目录下所有以大写字母开头的文件
  • find /tmp -size 2M 查找在/tmp 目录下等于2M的文件
  • find /tmp -size +2M 查找在/tmp 目录下大于2M的文件
  • find /tmp -size -2M 查找在/tmp 目录下小于2M的文件
  • find ./ -size +4k -size -5M 查找当前目录下大于4k,小于5M的文件
  • find ./ -perm 0777 查找当前目录下权限为 777 的文件或目录
  • cat file | tr -d "\n"  把文件内容变成 一行
  • printf "%50s\n"|tr ' ' - 打印50个-
  • ls | wc -l 统计文件夹下所有的文件数
  • find . -iname '*.jpg' | sed 's/.*/<img src="&">/' > gallery.html 生成html 相册
  • find . -size 0 -print0 | xargs -0 rm 清理空文件
  • find . -type f -size -80k -print0|xargs -0 rm 查找并删除小于指定大小的文件
  • find . -type d -name .svn -delete 递归删除.svn文件夹
  • find ~/Music/iTunes/ -name *.mp3 -exec cp {} ~/Desktop/Music/ \; 将所有mp3都复制到一个目录 mac也可以用
  • scp root@1.2.3.4:/root/shadowsocks_go_qr.png /Users/Yunis/Desktop 远程拷贝文件到本地
  • mkdir 0{5..9}{0..9}; 创建名称为 050 - 099 的文件夹。
rm -rf `find . -type f -name *.htm` 递归删除所有的htm文件

ssh UserName@192.168.XX.XX 远程连接 UserName:用户名 192.168.XX.XX ip地址。

tail -f file1 (file2 .. fileN) 将文件的内容拼接在一起显示。 du -sh * | sort -nr 统计文件夹大小并排序显示。 find ./ -name '*.p12' -delete 清理路径下 .p12 类型的文件

查找目录下特定名称的文件夹,并将文件夹下的文件移动到响应名称的文件夹下。

#! /bin/zsh
# 在当前目录下查找名称为 Images 的文件夹
# 读作变量 f
find . -type d  -name Images | while read f; do
    # 取出上一个文件夹的名称
    resFile=`echo $f | awk -F "/" '{print $4}'`
    echo $resFile
    # 创建相应的文件夹
    mkdir -p ./123/$resFile
    #拷贝 f 文件夹下的所有文件 到新创建的文件夹
    cp  $f/* ./123/$resFile/
done

当前文件夹下的文件统一加入前缀 head_

for File in `ls`; do mv -f  $File  `echo "head_"$File`; done

当前文件夹下的文件统一把后五位字符修改为 lllll

for File in `ls`; do mv -f $File `echo $File | sed 's/.....$/lllll/'`; done

当前文件夹下的文件统一把前五位字符修改为 abc

for File in `ls`; do mv -f $File `echo $File | sed 's/^...../abc/'`; done

当前文件夹下的文件所有的小写字母变大写字母

for File in `ls`; do mv -f $File `echo $File | tr a-z A-Z`; done

当前文件夹下的文件所有的大写字母变小写字母

for File in `ls`; do mv -f $File `echo $File | tr A-Z a-z `; done

当前文件夹下的文件进行删除操作

for File in `ls`; do rm -rf  $File ; done

Linux 文件权限

  • r :可读
  • w :可写
  • x :可执行
    更改文件权限
  • u 文件的拥有者
  • g 文件的用户组
  • o 其他

  • ` chmod u=rwx 1.txt` 修改用户的权限

  • chmod g=rw- 1.txt 修改用户用户组的权限

  • chmod o=rw- 1.txt 修改其他用户的权限

  • 同时修改 用户、用户组、其他用户的权限:
    • chmod o=r,g=r,o=r 1.txt 用户、用户组、其他用户的权限均为可读的权限
    • chmod o=,g=,o= 1.txt 用户、用户组、其他用户的权限均没有任何权限

使用数字法修改权限:

r --------- 4
w --------- 2
x --------- 1

所以

* 数字 1,代表可执行
* 数字 2,带包可写
* 数字 4,代表可读
* 数字 5,代表可读、可执行
* 数字 6,代表可读、可写
* 数字 7,代表可读、可写、可执行

chmod 777 1.txt 的意思就是把 1.txt 这个文件修改为

  • 拥有文件的用户 可读可写可执行
  • 文件所属的组 可读可写可执行
  • 其他用户 可读可写可执行

同理 chmod 644 1.txt的意思是把 1.txt 这个文件修改为

  • 拥有文件的用户 可读可写
  • 文件所属的组 可读
  • 其他用户 可读

vim 命令

进入插入模式:

i: 插入光标前一个字符 

I: 插入行首 

a: 插入光标后一个字符 

A: 插入行未 

o: 向下新开一行,插入行首 

O: 向上新开一行,插入行首

进入命令模式:

ESC:从插入模式或末行模式进入命令模式
移动光标:
h: 左移 

j: 下移 

k: 上移 

l: 右移

M: 光标移动到中间行 

L: 光标移动到屏幕最后一行行首 

G: 移动到指定行,行号 -G

w: 向后一次移动一个字 

b: 向前一次移动一个字

{: 按段移动,上移 

}: 按段移动,下移

Ctr-d: 向下翻半屏 

Ctr-u: 向上翻半屏

Ctr-f: 向下翻一屏 

Ctr-b: 向上翻一屏

gg: 光标移动文件开头 

G: 光标移动到文件末尾
删除命令:
x: 删除光标后一个字符,相当于 Del 

X: 删除光标前一个字符,相当于 Backspace

dd: 删除光标所在行,n dd 删除指定的行数 D: 删除光标后本行所有内容,包含光标所在字符 

d0: 删除光标前本行所有内容,不包含光标所在字符

dw: 删除光标开始位置的字,包含光标所在字符
撤销命令:
u: 一步一步撤销 


Ctr-r: 反撤销
重复命令:
.: 重复上一次操作的命令
文本行移动:
>>: 文本行右移 

<<: 文本行左移
复制粘贴:
yy: 复制当前行,n yy 复制 n 行 

p: 在光标所在位置向下新开辟一行,粘贴
可视模式:
v: 按字符移动,选中文本 

V: 按行移动,选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除,复制,左右移动
替换操作:
r: 替换当前字符 

R: 替换当前行光标后的字符
查找命令:
/: str查找
n: 下一个
N:上一个
替换命令:

把abc全部替换成123

末行模式下,将光标所在行的abc替换成123
:%s/abc/123/g

末行模式下,将第一行至第10行之间的abc替换成123
:1, 10s/abc/123/g
vim里执行 shell 下命令:
末行模式里输入!,后面跟命令