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.txtmv 1.txt ../11.txt
移动1.txt 到上层目录并重命名为11.txtcp 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 下命令:
末行模式里输入!,后面跟命令