博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 笔记
阅读量:5010 次
发布时间:2019-06-12

本文共 8671 字,大约阅读时间需要 28 分钟。

删除

x 小写的x表示向后删除一个字符,也就是删除光标所在字符

nx n表示数字,表示向后删除每个字符,例如:10x表示删除包括光标在内的后面10个字符

X 大写的X表示删除光标前的一个字符,不包括光标所在字符

nX n表示数字,表示向前删除每个字符,例如:10X表示删除光标前的10个字符,不包括光标所在字符

dd 删除光标所在的行,其实也是剪切

ndd n表示数字,删除光标所在的向下n行

d1G 删除光标所在行到第一行数据

dG 删除光标所在行到最后一行数据

d0 删除光标所在到该行第一个字符

d$ 删除光标所在到该行最后一个字符

yy 复制光标所在的行

nyy n表示数字,复制光标所在的向下n行

y1G 复制光标所在行到第一行数据

yG 复制光标所在行到最后一行数据

y0 复制光标所在到该行第一个字符

y$ 复制光标所在到该行最后一个字符

p 小p表示将已复制的数据粘贴在光标的下一行

P 大P表示将已复制的数据粘贴在光标的上一行

J 将光标所在的行与下一行的数据合并为一行

u 小u表示撤销上一步操作(特别重要,类似于里面的word里面的crtl+y)

ctrl+r 与u相反,表示重做前一步操作(特别重要,类似于windows里面的word里面的crtl+y)

. 点,表示重复前一个操作,例:想多次复制,一直按这个就行了

注:以上删除、复制和粘贴均是在非编辑模式下的操作

 

语法规则:命令 -选项 参数(命令操作的目录){之间要有空格}

2个特殊的目录:.和..分别代表当前目录和当前目录的父目录

alt+F#从字符界面到其他    ctrl+Alt+F#从图形界面到其他

shutdown -h now(立即关闭)

shutdown -h +5(5分钟后关闭)        系统会播报

shutdown -P +5(5分钟后关闭)       P是大写 。小写无效

shutdown -r +5"the system will be power off in 5minutes" (5分钟后关闭,并推送信息到每个用户)

                                                                                      ↑所有组

   -普通的二进制文件                                            ↑所有者    ↑          ↑ 4096个文件

d    rwx             rwx                 rwx          4       root        root     4096

↑     --              --                   --             ↑4个硬链接文件

↑     ↑               ↑                     ↑rwx统称其他o

↑     ↑               ↑rwx统称所有组g

↑     ↑ 

↑     ↑  r:读操作,w 写操作,x执行操作 .  rwx 统称为所有者u

↑ d代表目录   f二进制文件

 

以上都可以通过shutdown -c取消

 

pwd 查看当前工作目录

 命令ls    命令所在路径/bin/ls

ls 选项[-ald][文件或目录]

-a显示所有文件,包括隐藏文件

-l详细信息显示

-d查看目录属性

 

语法规则:cd [目录]

cd .. 返回上级   

cd /返回根目录  

cd /etc 到etc 目录下

cd 若不指定则切换到$HOME下

 

touch[文件名]   创建文件    

touch a                               -->删除的话直接用 rm a    ,然后y既可

touch -a -t 201610210941 myfile 修改文件的存取时间

touch -m -t 201610210941 myfile 修改文件的修改时间

 

mkdir [目录名]  创建一个目录。

mkdir dir1                          -->删除的话直接用 rm -r dir1    ,然后y既可,若用上面的会无法删除,且xx是一个目录

 

rm  -r[文件或目录]       rm即remove

rm a 然后输入y既可删除当前的a文件-->用ls 查看既可发现

rm -r a 也可以      -r是删除目录

rm -rf etc既可强制删除

 

cp -R[源文件或目录][目的目录]  复制目录  

cp file1 file2 dir1    -->将file1 file2复制到dir1目录中

cp /etc/services ./services 复制到当前目录

cp services ser 可以边复制边改名

cp -R /etc ./所有的文件复制到当前目录

 

mv[源文件或目录][目的目录]  移动

mv ./etc/inittab ./ 把当前目录下的Inittab移动到当前目录下

mv file1 file2     将当前文件名字改为file2  

mv file1 newdir    将当前file1移动newdir目录中

touch a    mkdir newdir     mv ./a ./newdir    ls      cd ..    rm -r newdir

 

cat[文件名]    显示文件信息

如 cat /etc/issue   显示版本信息

cat -n 按行号显示信息

 

move[文件名] 分页显示文件内容

 

tail -num[文件名]  查看文件的后几行

tail -10 /etc/services 

tail -f /etc/services   动态变化

 

head -num[文件名]  查看文件的前几行

head -20 /etc/services              

如在根目录下:  mkdir newdir     cd newdir      touch a     vi a    "sdgjhajkltelkwajtkl这里是文本信息"   保存退出

head  -1 /newdir/a      -->sdgjhajkltelkwajtkl这里是文本信息

 

ln -s[源文件][目标文件]     产生连接文件  ln  link 的缩写

ln -s /etc/issue    软连接文件-->指向源文件    源文件删除的话,软文件也会没有

ln /etc/issue    硬链接文件       为防止源文件被删除,  一般需要被封硬链接文件

 

(1)chmod[{ugo}{+-=}{rwx}][文件或目录]   改变文件或目录权限  (2){mode=421}[文件或目录]

+是增加权限   -删除权限  =直接赋予权限    

 

如:chmod  ugo+rwx file1 赋予文件file1 所有人所属组其他人 读写执行能力

 通过ls -l 查看   当前目录里文件的权限

chmod 777 file1  设定file1为所有用户具有全部权限   7 既4+2+1  4是读   2是写 1 是执行

 

chown [用户][文件或目录]  改变文件或目录的所有者

chown nobody file1     ls -l      chown root file1   ls -l

 

chgrp [用户][文件或目录] 改变文件或目录的所有组

chgrp nobody file1      ls -l  

 

whoami   显示当前的登入用户 

 

 umask [选项] []  

umask [-S]        s要大写,显示设置文件的缺省权限    权限掩码 022   

umask 022  

umask 027 //更加安全

 

022表示默认创建文件权限为755,也就是rwx r-x r-x 。 

027表示默认创建文件权限为750,也就是rwx r-x --- 。   

ls -ld newdir  看目录的权限

 

which[命令名称]  文件搜素命令

which ls                 ls  --color 有颜色区分

which rm               rm -i询问   

 

find[搜索路径][搜素关键字] 查找文件或目录

find /etc -name init 在目录/etc中查找init文件

find /etc -name init*在目录/etc中查找所有带有init的文件

find /etc -name init???在目录/etc中查找所有带有init的7位文件

   通配符  *:0个或多个字符   ?:代表单个字符

find /etc -size +204800  在etc目录下查找大于100m的文件

find /etc -size +163840 -a size -204800  在etc目录下查找大于80m小于100m的文件       

-a 是逻辑与 相当于and  -o 是逻辑或,相当于或

find /etc -type f  在etc目录下查找二进制类型的文件

find /etc size +163840 -a -type f 在etc 目录下查找大于80m并且是二进制类型的文件

mkdir newdir   chown xxx newdir   ls -l     find  / -user xxx     在根目录下查找所有者为xxx的文件

find  /etc  -ctime -1 在根目录下查找24小时内被修改过的文件

c是change改变文件的属性 如:所有者,所有组,权限。。。

m是modify改变的是文件的内容

a是access访问

以天为单位 ctime,atime,mtime 

以分钟为单位 cmin, amin,mmin

find /bin -type f -exec ls -l {} \;

在bin目录下查找二进制文件并显示其内容, 最后是有分号的。

 

locate [搜素关键字]搜素与关键字相关的所有文件

locate file 列出所有跟file有关的文件  ,若是a ,就列出所有带有a的文件

updatedb更新数据库,与上面是配对的。  

 

grep[指定字串][源文件] 在文件中搜素字串匹配的行并输出

grep ftp /etc/services 列出目录下所有ftp的行

 

man[命令或配置文件] 获得帮助信息

man ls 查看ls命令的帮助信息

man cd 不能查看,它是内置信息  只能 help cd

 date                 #以默认方式显示当前日期和时间

date -u     #传统unix风格选项

 

 

通过IO重定向生成文件myf:

ls -l /usr > myf     ;  ls >> myf

分屏显示文件内容(more/less)

more myf   或  ls -l /myf | less    

>或>>输出重定向

<或<输入重定向

> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空

 >>是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。

输入输出重定向可以参考: http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html

 

管道:

将一个命令的输出传送给另外一个命令,作为另外一个命令的输入;

例如:ls -l /etc | more 

命令连接符

;间隔的命令按顺序依次执行

&&前后命令存在逻辑与关系,只有前面的关系被执行了,后面的关系才能被执行

||前后命令存在逻辑或关系,只有前面的关系执行失败了,后面的关系才能被执行

 

命令替换符

将以个命令的输出作为另外一个命令的参数

命令1 `命令2`  此处为反引号

ls -l `which touch`

 

 

  

gzip选项[文件]   压缩文件  gzip a 

gunzip [文件] 解压文件   gunzip a.gz

 

 

 

 

tar 选项[cvf][目录]   -c产生.tar打包文件 -v显示详细信息  -f指定压缩后的文件名 -z打包同事压缩

mkdir a

打包同时压缩tar -zcvf b.tar.gz a 

解包同时解压tar -zxvf b.tar.gz    2者原文件都还在

 

打包tar -cvf b.tar a 

解包tar -xvf b.tar

zip选项[-r][压缩后文件名称][文件或目录]

-r压缩目录

zip services.zip /etc/services 压缩文件

zip -r test.zip/test压缩目录

unzip解压缩

 

 write 

write <用户名>

向另外一个用户发送信息  ,ctrl+d作为结束

$write feng 

 

wall

wall [message] [文件名]

向所有用户广播信息

$wall happy new year

 

ping

ping 选项IP地址

ping 211.67.116.9

 

Shell变量

变量:是shell传递数据的一种方法,用来代表每个取值的符号名。 

Shell有两类变量:临时变量和永久变量。 

临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。

永久变量是环境变量,其值不随shell脚本的执行结束而消失。

 

1、用户自定义变量

用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,区分大小写。变量名长度没有限制。在使用变量值时,要在变量名前加上前缀“$”。 

 

2、设置和使用变量

设置变量:习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。 

变量赋值:“=”两边没有空格。 

定义时赋值,如NUM=1 

将一个命令的执行结果赋给变量,如:TIME=`date`;TIME=$(date +%F)   //注意date 后面有一个空格

将一个变量的值赋给另一个变量,如:B=120 ; A =$B 

使用echo命令查看变量值。例如:echo $A 

 

 

单引号会原封不动的把变量输出。双引号则输出内容。 

 

 

删除变量:unset [变量名]

unset time 

 

7. 特殊变量

$@  相当于数组

$* 这个程序的所有参数

$# 这个程序的参数个数

$$ 这个程序的PID

$! 执行上一个后台命令的PID

$? 执行上一个命令的返回值

 

#!/bin/shif [ $# -le 0 ]then echo "not enough "exit 0fiwhile [ $# -gt 0 ]do echo "$@"echo "$*"echo "$#"echo "$$"echo "$!"echo "$?"breakdone

sh b.sh 1 2 3 4 5

输出结果为:1 2 3 4 5

1 2 3 4 5

5

3295

0

 

 

9. read 命令

read 的例子:

#! /bin/sh

read first second third

echo "the first parameter is $first"

echo "the second parameter is $second”

echo "the third parameter is $third"

 

 expr命令:对整数型变量进行算术运算

语法: expr  表达式    #注意 运算符之间要有空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@hpc 
test
]
# expr 3 + 5
8
[root@hpc 
test
]
# var1=8
[root@hpc 
test
]
# var2=2
[root@hpc 
test
]
# exp
expand       
exportfs     expresskeys  
export       
expr         
[root@hpc 
test
]
# expr $var1 - 5  //expr 后面要有空格 操作符之间也要有空格
3
[root@hpc 
test
]
# expr $var1 / $var2
4
[root@hpc 
test
]
# expr $var1 * $var2
expr
: syntax error
[root@hpc 
test
]
# expr $var1 \* $var2   //2 个数相乘,需要要转译符\*
16

2 expr 程序的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@hpc 
test
]
# cat expr.sh  
#! /bin/sh  
 
a=10
 
b=20
 
c=30
 
value1=`
expr 
$a + $b + $c`
 
echo 
"The value of value1 is $value1"
 
value2=`
expr 
$c / $b`
 
echo 
"The value of value2 is $value2"
 
value3=`
expr 
$c \* $b`    
#整除
 
echo 
"The value of value3 is $value3"
 
value4=`
expr 
$a + $c / $b`
 
echo 
"The value of value4 is $value4"

测试:

1
2
3
4
5
[root@hpc 
test
]
# ./expr.sh 
The value of value1 is 60
The value of value2 is 1
The value of value3 is 600
The value of value4 is 11

3 复杂的运算

1
2
3
[root@hpc 
test
]
# var4=8
[root@hpc 
test
]
# expr `expr 5 + 11` / $var4
2

【例】

1
2
3
4
5
[root@hpc 
test
]
# var1=8
[root@hpc 
test
]
# var2=2
[root@hpc 
test
]
# var4=`expr $var1 / $var2`
[root@hpc 
test
]
# echo $var4
4

 

 

 

//注意反引号

 

 

......................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#!/bin/shif [ $a1 -eq $a2 ]; then   //要有空格   [ $a1 -eq $a2 ]折是test $a1 -eq $a2的简化echo "$a1 equals $a2"elif [ $a1 -lt $a2 ]; thenecho "$a1 littler than $a2"elif [ $a1 -gt $2 ]; thenecho "$a1 greater than $a2"fi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

 

 

 

 

#!/bin/shecho "what day is it taday"read daycase $day in"monday") echo "monday";;   //可以用|"tuesday") echo "tuesday";;"wednesday") echo "wednesday";;*) echo "other day";;esac

 

 

//上面的while后面少条件的,有错误

格式一

while 条件;

do

    语句

done

格式二 死循环

while true

do

    语句

done

格式三 死循环

while :

do

    语句

done

格式四 死循环

while [ 1 ]

do

    语句

done

格式五 死循环

while [ 0 ]

do

    语句

done

#!/bin/shfor day in monday tuesday wednesday thursday friday saturday sundaydoecho "what day is it taday"read daycase $day in"monday"|"tuesday"|"wednesday"|"thursday"|"friday"|"saturday"|"sunday") echo "$day";;*) echo "error  day"break;;esacdone

 

shift 指令

#!/bin/shif [ $# -le 0 ]then echo "not enough "exit 0fisun=0while [ $# -gt 0 ]doecho "$@" shiftdone

参数左移,每执行一次,参数序列顺

次左移一个位置,$#的值减1,

用于分别处理每个参数,移出去的参数不再可用

 

until   命令

#!/bin/basha=0until [ ! $a -lt 10 ] //不小于10的时候跳出循环do   echo $a   a=`expr $a + 1`done

结果:0 1 2 3 4 5 6 7 8 9

 

16. Shell 脚本调试

sh -x script

这将执行该脚本并显示所有变量的值。

sh -n script

不执行脚本只是检查语法的模式,将返回

所有语法错误。

 

select变量

select 变量in 关键字

do

n command 1

ü... ...

n command n

done

#!/bin/shecho "a is 5,b is 3.Please select your method"a=5b=3select var in "a+b" "a-b" "a*b" "a/b"do        breakdonecase $var in        "a+b") echo 'a+b='`expr $a + $b`;;        "a-b") echo 'a-b='`expr $a "-" $b`;;        "a*b") echo 'a*b='`expr $a "*" $b`;;        "a/b") echo 'a/b='`expr $a "/" $b`;;        *) echo "input error..."esac

显示的的a+b是select上的。

 

转载于:https://www.cnblogs.com/yi-mi-yangguang/p/5895010.html

你可能感兴趣的文章
Linux lsof命令 umount U盘
查看>>
自定义Font
查看>>
linux svn 服务端搭建
查看>>
maven用途、核心概念、用法、常用参数和命令、扩展
查看>>
linux时间同步ntp服务的安装与配置
查看>>
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法...
查看>>
网络编程-socket并发-粘包问题
查看>>
JSP 技术(二)--详解
查看>>
python 中安装pandas
查看>>
Hibernate 的<generator class="native"></generator>的不同属性含义
查看>>
linux修改root账户的用户名所得的教训
查看>>
【LeetCode】Flatten Binary Tree to Linked List
查看>>
读后感-浮生六纪
查看>>
执行指定路径的程序文件
查看>>
Leetcode-950 Reveal Cards In Increasing Order(按递增顺序显示卡牌)
查看>>
[Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
查看>>
14款下载有用脚本的超酷网站
查看>>
LXC-Linux Containers介绍
查看>>
7.31实习培训日志-docker sql
查看>>
c#中使用servicestackredis操作redis
查看>>