Shell基本命令
目录命令
pwd 查看当前目录
ls 查看目录上的内容
目录结构
创建目录
make directory > mk dir > mkdir
-------------------------------
mkdir /oldboy
-------------------------------
cd /
mkdir oldboy
创建文件或者修改文件时间戳(文件属性)
#触摸
touch xxx.py
编辑文件
#方法,命令
vi
vim
使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
按下esc键,回到命令模式
输入 :wq! 强制保存退出
w write 写入
q quit 退出
! 强制
或者 :x 保存退出
------
:q 不保存退出
:q! 不保存强制退出
打包压缩
查看文件内容
#猫,查看文件
cat xxx.py
#追加文字到文件
cat a.txt >> /tmp/oldboy.txt
#一次性加载全部内容,但分页显示
more + 文件名
# 一次性只加载一页,缓存一页,分页显示
less + 文件名
head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
#查看前两行
head -2 /tmp/oldboy.txt
#查看后两行
tail -2 /tmp/oldboy.txt
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21
显示输入内容到终端
#默认把内容显示到终端上
echo "hello world"
#把内容写到文件
echo "hello world" > /tmp/chaoge.txt
特殊符号
重定向符号
1.>> 追加重定向,把文字追加到文件的结尾
2.> 重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
echo "oldboy-python666" > /tmp/oldboy.txt
echo "chaoge666" >> /tmp/oldboy.txt
------------------------------------
我想把命令执行的结果信息,写入到文件中
ip addr > /tmp/network.txt #标准输出重定向 把命令执行结果信息,放入到文件中
复制(拷贝)命令
复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变
cp -a 相当于-pdr
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
移动命令
移动(搬家)命令 > move > mv
cd /home
#把老男孩从沙河这破地方,搬到朝阳去
mv /home/shahe/oldboy /tmp/chaoyang
删除命令
删除 > remove > rm
cd /tmp
rm hello.py
#默认有提示删除,需要输入y
rm -f hello.py #不需要提示,强制删除
#rm默认无法删除目录,需要跟上参数-r
rm -rf /opt/hello/
查找命令
#Linux里如何找到需要的文件 例如 hello.py
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
find /tmp/ -type f -name "hello.py"
#找出所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
管道命令
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动
ps -ef|grep "svn"
find /tmp/ -type f -name "hello.txt"|xargs ls -l
grep
语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
--color = auto : 给关键词部分添加颜色
grep "hello world" /opt/hello.txt
#排除 -v,排除我要找的东西
grep -v "我要找什么 /opt/hello.txt
awk
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
语法:
awk [option] 'script' var = value filename
awk [options] -f scriptfile var=value filename
常用命令选项:
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
实例:
#NR > 行号
awk 'NR==20,NR==30' /tmp/oldboy.txt
which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
参数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
示例:
which pwd
which ls
seq命令
语法
seq [选项]... 尾数
seq [选项]... 首数 尾数
seq [选项]... 首数 增量 尾数
参数
-f, --format=格式 使用printf 样式的浮点格式
-s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n)
-w, --equal-width 在列前添加0 使得宽度相同
示例
#显示1-50整数
seq 50
#以0000方式显示9-11区间整数
seq -f "%04g" 9 11
#以000方式显示1-100区间整数
seq -f "%03g" 1 100
scp命令
Linux scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
实例
#传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py root@192.168.1.155:/home/
scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py
scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy
#复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/
修改文件权限
修改文件所有权
统计文件或文件夹的大小
时间日期命令
cal : 显示日历
-1 显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-s 显示星期天为一个星期的第一天,默认的格式
-m 显示星期一为一个星期的第一天
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历的所有年月份
date : 设定 和 显示日期
date MMDDhhmm[cc]YY.ss
date[+FORMAT]
%Y:四位年份
%y:两位年份
%m:月
%M:分钟
%d:日
%h:英文简写的月
%H:时
%S:秒
%s:现在距离1970年1月1号0点0分(unix元年)的秒数,timestamp(时间戳)
%D:月/日/年
%F:年-月-日
%T:时:分:秒
hwclock
-s:以硬件时钟为准 --hctosys
-w以软件时钟为准 --systohc
Linux有两个时钟
硬件时钟:
软件时钟:开机时读取硬件时钟