Linux常用命令/ 常见面试题
ls和echo
‘ls’命令可以用‘echo’命令来替代。‘ls’命令列出目录内容,从替换上述命令的角度讲,我们可以使用‘echo *’,两个命令的输出完全一样。
Shell
创建第一个shell脚本
- #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。毕竟Linux的Shell也是有很多种的,比如
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
…… -
执行shell脚本
作为可执行程序执行
- 注意,一定要写成 ./hello.sh,而不是 hello.sh,运行其它二进制的程序也一样,直接写 hello.sh,linux 系统会去 PATH 里寻找有没有叫 hello.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 hello.sh 是会找不到命令的,要用 ./hello.sh 告诉系统说,就在当前目录找。
-
作为解释器参数执行脚本
变量
定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要)
如your_name=”runoob.com”
除了显式地直接赋值,还可以用语句给变量赋值,如:for file in
ls /etc
以上语句将 /etc 下目录的文件名循环出来。使用变量
your_name="qinjx" echo $your_name echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界(推荐),
只读变量
readonly myUrl
只读变量不能被修改删除变量
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。变量类型
变量类型
运行shell时,会同时存在三种变量:1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行查看文件内容
cat
-n 或 –number:由 1 开始对所有输出的行数编号。vim
Leetcode例题实操1
Write a bash script to calculate the frequency of each word in a text file words.txt.
For simplicity sake, you may assume:
words.txt contains only lowercase characters and space ’ ’ characters.
Each word must consist of lowercase characters only.
Words are separated by one or more whitespace characters.
For example, assume that words.txt has the following content:the day is sunny the the
the sunny is is
Your script should output the following, sorted by descending frequency:
the 4
is 3
sunny 2
day 1
答案:cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{ print $2, $1 }'
cat 命令用于连接文件并打印到标准输出设备上。(属于文件管理命令)
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。(属于文档编辑命令)
Linux sort命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序。(属于文档编辑命令)
-r 以相反的顺序来排序。
uniq可检查文本文件中重复出现的行列。(属于文档编辑命令)
-c或–count 在每列旁边显示该行重复出现的次数。
count命令前面这列代表每个单词出现了几次Leetcode例题实操2 截取文件的某一行
sed(属于文档编辑命令)
inux sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。、
参数说明:
-n或–quiet或–silent 仅显示script处理后的结果。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g如何查看某一行的长度
如何截取某些行
[root@ml-J33A3K testdemo]# sed -n ‘5,8p’ file.txt
Line5 very
Line6 Happy
Line7 due
Line8 to如何截取列方向上固定位置的内容
Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除如何截取某些列
-d是指以“ “空格为分隔符,相当于python中的.split(” “),-f是指显示以空格分隔后的第1个域(没有第0个域,从1开始计数)