分類
Linux

linux commands

记一些常用命令和用法,入门级的。

使用管理员身份来执行命令:

sudo 要执行的命令

切换为root用户:

sudo su

返回普通权限:

exit

显示当前用户信息:

id

修改当前用户密码:

passwd

在后台执行程序,只需在命令后加&,例如在后台打开火狐:

firefox &

查看后台程序:

jobs

继续运行后台编号为数字的程序:

bg 数字

把后台编号为数字的程序提到前台:

fg 数字

Ctrl+Z暂停程序,Ctrl+C结束程序。

Tab键可补全或查询命令和文件(夹)名,如输入unam按Tab,会自动不全uname,而输入una按Tab则会列出una开头的所有命令。因为unam开头的只有uname,而una开头的有uname和unalias两个命令。

清屏:

clear

上下键可查询执行过的命令。显示所有执行过的命令,可使用:

history
#刪除第 204 條歷史命令
history -d 204
#刪除所有歷史記錄
history -c

查询之前使用过的命令,比较实用的是Ctrl+R,随便输入之前命令中的字符即可复用。想复用上一个命令的参数的话,输入命令后,按一下Esc,再按一下.就可以了。

编写脚本时常用到!来调用之前用过的命令。

#重复前一个命令
!!
#重复前一个以字符开始的命令
!字符
#重复之前命令中包含字符的命令
!?字符
#重复历史记录中序号为数字的命令
!数字
#重复倒数第数字个的那个命令
!-数字

正則表達式非常厲害,有空時應該多寫一點。

#任意长度字符串
*
#单个字符
?
#一定范围内数字,如0-9
[0-9]
#一定范围内字符,如acd
[acd]
#一定范围之外的字符,如除了acd
[^acd]
#在當前目錄中,將所有文件中的 old_string 
#替換為 new_string
grep -rl "old_string" . | xargs sed -i 's/old_string/new_string/g'

#    grep -rl: search recursively, and only print the files that contain “old_string”
#    xargs: take the output of the grep command and make it the input of the next command (ie, the sed command)
#    sed -i ‘s/old_string/new_string/g’: search and replace, within each file, old_string by new_string


文件類常用命令

#查看当前所在目录 print work directory
pwd
#创建空文件或更新文件的修改时间
touch FILE
#创建目录,-p 可同時創建子目錄
mkdir DIR
#刪除文件
rm -f File
#遞歸刪除目錄以及其中文件
rm -rf FolderWithFoldersAndFiles
#列出文件信息
ls -a 顯示所有文件,-l 顯示詳細信息,-R 遞歸顯示子目錄 FILEorDIR
#查看文件類型
file FILE
#cp 複製 source 目錄下的所有文件到 dest 目錄下
cp -a /source/. /dest/
#cp 複製 source 目錄到 dest 目錄下
cp -a /source /dest/
#ssh 遠程登錄
ssh -p 22 [email protected]
#scp 复制本地文件到远程
scp -P 22 /tmp/localFile [email protected]:~/

mv 重命名

mv myfile mynewfilename     #renames 'myfile' to 'mynewfilename'.
mv myfile ~/myfile          #moves 'myfile' from the current directory to user's home directory.
mv myfile subdir/myfile     #moves 'myfile' to 'subdir/myfile' relative to the current directory.
mv myfile subdir            #same as the previous command, filename is implied to be the same.
mv myfile subdir/myfile2    #moves 'myfile' to 'subdir' named  'myfile2'.
mv be.03 /mnt/bkup/bes      #copies 'be.03' to the mounted volume 'bkup' the 'bes' directory, 
                            #then 'be.03' is removed.
mv afile another /home/yourdir/yourfile mydir 
                            #moves multiple files to directory 'mydir'.
mv /var/log/*z ~/logs       #takes longer than expected if '/var' is on a different file system, 
                            #as it frequently is, since files will be copied & deleted.

用優盤製作Kali啓動盤:

sudo dd bs=512k if=/data/kali-linux-light-2.0-i386.iso of=/dev/sdc && sync

#curl通過socks5代理斷點續傳下載
curl -o '逃.mp4' -L -C - 'http://ft.shaman.eu.org/mp4/tv/2019/1_h.mp4' --socks5 127.0.0.1:8080
#如果想用遠端文件名,可將"-o '逃.mp4'"替換為"-O",這樣保存的就是1_h.mp4

#wget通過socks5代理斷點續傳下載
wget -c 'http://ft.shaman.eu.org/mp4/tv/2019/1_h.mp4' -O '1_h.mp4' 
#可以增加 -t 50 來指定最多重試 50 次

#wget爬取靜態網站
wget -r -p https://ft.shaman.eu.org
#加入請求頭以及限速
wget -r -p -U Mozilla --wait=10 --limit-rate=128K https://ft.shaman.eu.org

#curl測試網站速度
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://ft.shaman.eu.org
#Verify checksums
md5sum filename
sha1sum filename
sha256sum filename

本文更新於 2022/07/08。

在〈linux commands〉中有 13 則留言

cat 查看文件内容
more 分屏查看文件内容,查看时空格键下翻页,回车键下一行,q退出
head -n 7 a.txt 显示文件的前7行内容
tail -n 7 a.txt 显示文件的最后7行内容
tail -n 7 -f a.txt 动态显示文件的最后7行内容(当文件发生变动自动更新显示,默认是10行)
ln -s old new 创建软链接,不加-s可创建硬链接(两个文件同步内容,但删掉一个另一个还在)

chmod 可以用来修改文件和文件夹的权限
chmod -R 755 directory
r 4 查看文件内容/列出目录内容
w 2 修改文件内容/在目录中增加、删除文件
x 1 执行文件/进入目录
chown 可以用来修改文件和文件夹的所有者
chown owner file
chgrp 可以用来修改文件和文件夹的所有者
chown group file
umask 查看新文件默认权限,其值为777的掩码,如得到0002,后三位那777减,得到775,即默认权限。修改时也是用掩码,如
umask 0022
注意一点是新建的文件都是没有执行权限的,即使umask设置了。
useradd username 添加用户

查找命令所在位置可以用which(同时显示别名)和whereis(同时显示帮助信息位置)
查找文件用find,格式为find [搜索路径] [关键词]如
find /etc -name abc* 查找etc目录下文件名开头为abc的文件,?可代替单个字符。
find /etc -size +100 查找etc目录中文件大小大于100×块block大小的文件。如块大小为4k,那么就是查找400K以上的文件。
find /home -user lisa 查找home中lisa为所有者的文件。
ctime, atime,mtime,cmin,amin,mmin 这六个find的选项是时间过滤,time单位是天,min单位是分钟。c是change,表示文件属性(权限,所有者等)被修改过,a是access,表示被读取过,m是modify,表示文件内容被修改过。
find /home -mmin -120 查找home中1小时内内容被修改过的文件。
find /home -mmin -120 -a -type f 查找home中1小时内内容被修改过的文件(只找文件,不找d文件夹和l软链接)。-a是and,-o是or。
find /etc -name init* -a -type f -exec ls -l {} ; 后面前面find找到的条目会储存在{}里,然或exec后的命令依此以{}里的条目为参数执行。格式即-exec 命令 {} ;。还有一个和-exec类似的选项是-ok,它会询问每一个条目是否执行。
find . -inum 42 -exec rm {} ; 找到i节点为42的文件并将其删除。
find . -name ‘*.js’ -exec grep -i ‘string to search for’ {} \; -print 在當前文件夾及其子文件夾中,搜索包含string to search for字符串的js文件。
locate filename 从文件数据库中查找文件速度快能耗小,但是新文件由于数据库未及时可能找不到,updatedb可更新文件数据库。

grep 查找文件中匹配的行,如
grep tftp /etc/services
遞歸查找當前文件夾下包含 Freedom 的文件
grep -iRl “Freedom” ./
-i – 忽略大小寫
-R – 遞歸查找子文件夾
-l – 顯示文件名而不是查找到的文件內容
合併多個文本文件到一個文件
cat 2017* >> a.log
查看log中同一字段出現的次數,其中$3是定位到的計數字段
grep “IP:” a.log | awk ‘{print $3}’ | sort | uniq -c | sort -nr | more
man 查看命令帮助,显示方式和more类似,info也可以查看帮助
man cp 查看cp命令的帮助
man 5 passwd 查看passwd命令的配置文件帮助
获取索引的简短帮助信息可以用whatis和apropos(和man -k类似),makewhatis可以更新帮助信息数据库
help 获取shall内置命令的帮助信息

file filename file命令可以判断文件类型。
gzip filename 用gzip压缩文件。gzip只能压缩文件不能压缩文件夹。gzip压缩或解压后会删除原文件。解压gz文件可以用gunzip fileneme.gzgzip -d fileneme.gz
tar -zcvf dirname.tar.gz dirname 用tar来打包并压缩文件夹為gz包。
tar xjf file.tar.bz2 用tar来解壓bz2包。
tar -zcvf video.tar.gz --exclude=video/42.mp4 --exclude=video/Death_Silence.mp4 video 打包并压缩video文件夹,且排除两个指定的mp4文件。
tar -zxvf dirname.tar.gz 用tar来解压并解包压缩文件夹,tar gz xz都可以。默认解压到压缩路径,网上下载的包解压到当前目录。z压缩或解压,c打包,x解包,v显示进度,f指定压缩包名。
tar zxvf dirname.tar.gz -C /home/destination 解压到指定文件夹
zip filename.zip filename 用zip既可压缩文件也可压缩文件夹(压缩文件夹加-r选项),并且不会删除原文件。
zip -P password filename.zip file 生成帶密碼的zip文件。
zip -r -s 50m zip_filename.zip files_to_zip_1 files_to_zip_2 把文件壓縮成多個小文件。解壓的時候會自動讀取其他文件。
unzip filename.zip 用unzip解压zip压缩包。加-d /home/destination解压到指定文件夹。
如果解壓的中文文件名亂碼可以嘗試 unzip -O cp936 filename.zip
如果要覆蓋目標文件夾而不要詢問,加參數 -o
bzip2 -k filename 用bzip2压缩文件,只能压缩文件但压缩比很高,加上-k选项可保留原文件。
bunzip2 -k filename.bz2 用bunzip2解压文件并保留压缩包。

ifconfig 查看网络配置信息,IP、MAC等。
ifconfig eth0 192.168.1.7 临时修改IP地址,重启失效。

一些bash技巧
Ctrl+l 清屏。
Ctrl+u 删除所在行光标前面的字符。
history 列出之前使用过的命令。!num !加history列表中的序号可执行那条命令。上下方向看最近命令更方便。
Tab键可补全命令或文件名。

alias 显示已定义的命令别名
alias copy=cp 定义一个copy的别名。
alias drm=”rm -rf” 定一个直接删除目录的别名,带选项时要加引号。
unalias copy 删除copy这个别名。
>和>> 输出重定向,< 输入重定向。 ls -l /tmp > tmp 将/tmp文件夹下的文件列表输出至tmp文件中,若tmp不存在则创建,若有内容则覆盖。
date >> tmp 将date信息追加到tmp文件尾部。
wall < tmp 广播tmp中的内容。 cp -R /usr /backup/usr.bak 2> /bak.err 对/usr目录备份,如发生错误则将错误信息输出至bak.err。
ls -l /etc | grep init | wc -l 首先查看/etc下文件的详情,然后将结果传给grep过滤出包含init的行,最后用wc -l数一下有多少行。
command1 ; command2 ; command3 三条命令依此执行。
command1 && command2 1执行成功2才会执行,否则2不执行。
command1 || command2 1执行成功2不会执行,否则2执行。
ls -l `which touch` 列出touch的详细信息,其中命令替换符`位于1左边,并不是单引号。

删除旧内核基本上一个200M的样子
dpkg –get-selections|grep linux 查看安装的内核
uname -a 查看当前内核
sudo apt-get remove linux-image-3.5.0-48-generic 删除不要的内核
sudo apt-get remove linux-headers-3.5.0-48 删除不要内核的头
sudo update-grub (选做)更新下grub

查找并杀死进程
ps -e | grep python
sudo kill 1234

查看端口是否被佔用
netstat -apn | grep 端口號
查看pid為2813的程序信息
ps -aux | grep 2813
查看iptables狀態
service iptables status
編輯iptables配置文件
nano /etc/sysconfig/iptables
打開8081端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8081 -j ACCEPT
重啟iptables
service iptables restart
查看本地48000-49000间的开放端口
nmap -p 48000-49000 127.0.0.1

screen 可以在後台執行任務,即使終端被關閉。

安裝:
dnf install screen

新建 screen:
screen -S mytask

screen

現在可以執行需要在後台跑的長時任務。

保留 screen 並退回到原來的終端(detach):
先按一次 ctrl+a,再按一次 d

列出所有後臺的 screen:
screen -ls
會顯示如:
There are screens on:
188140.mytask (Detached)
187614.pts-5.fred (Detached)

恢復(resume)一個 screen:
screen -r mytask

screen -r 187614

退出一個 screen:
ctrl+d
或執行
exit

恢復(Detach)一個 Attached 狀態的 screen(screen 意外中段時使用):
screen -D 187614

強制關閉一個 screen(首先回到 attached 狀態):
screen -X -S session_name quit

screen -X -S session_id quit

查看滾動過去的輸出(向上滾動)
先按一次 ctrl+a進入命令模式,再按一次 [(即左方括號)進入複製模式。
在複製模式里,可以使用方向鍵、翻頁鍵以及ctrl+b移動光標。
結束複製模式按q

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *