Permalänk
Medlem

ctrl + s = "låser" prompten
ctrl + q = kommatillbaka till en låst prompt

ctrl + a + d = komma ur en screen

vet inte om dom har varit uppe men men

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av sami
ctrl + s = "låser" prompten
ctrl + q = kommatillbaka till en låst prompt

ctrl + a + d = komma ur en screen

vet inte om dom har varit uppe men men

Weird... ctrl + s slår på scroll lock för mig. Och sen undrar jag vad du menar med "komma ur en screen"?

Visa signatur

Stationär: Intel-baserad, Arch + KDE
Bärbar: Dell XPS 13, Arch + KDE

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Talavis
Weird... ctrl + s slår på scroll lock för mig. Och sen undrar jag vad du menar med "komma ur en screen"?

konstigt.. ctrl + s har alltid funkar för mig.. bash och zsh. aja
om du har en startad screen (kommandot screen dvs) där du kan köra vad ska man säga bakgrunds processer.. trycker du då ctrl + a + d kommer du så kallad detacha en screen så du kommer tillbaka till ditt grund skal. vet inte om det va en flummig förklaring hehe bästa jag kunde komma på just nu.

Permalänk

För att ändra tangentbordslayout i X till svensk:

setxkbmap sv

Visa signatur

There is no future in timetravel.
site: undef.io - foto: bildad.se, flickr
Det enda vettiga är att sitta i en låda och dricka öl ur en hatt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av björnfan
För att ändra tangentbordslayout i X till svensk:

setxkbmap sv

Det är väl 'se' istället för 'sv' ?
Det har jag ivarje fall.

Visa signatur
Permalänk
Medlem

fi (finsk) fungerar bra också.

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Citat:

Ursprungligen inskrivet av granden
Det är väl 'se' istället för 'sv' ?
Det har jag ivarje fall.

Jo, satt nog å tänkte på loadkeys sv-latin1 :/

Om den nu ens var så

Visa signatur

There is no future in timetravel.
site: undef.io - foto: bildad.se, flickr
Det enda vettiga är att sitta i en låda och dricka öl ur en hatt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av björnfan
Jo, satt nog å tänkte på loadkeys sv-latin1 :/

Om den nu ens var så

Jo sv-latin1 tror jag stämmer däremot.

Visa signatur
Permalänk
Medlem

Nu har jag inte läst igenom hela tråden utan endast främsta sidan, men jag tycker att 'vmstat' saknas.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av crull
Nu har jag inte läst igenom hela tråden utan endast främsta sidan, men jag tycker att 'vmstat' saknas.

Ooh den har jag inte sett tidigare. Mycket fin
*lägger till*

(kul med lite mer kommandon i tråden. Den har ju varit lite smådöd.)

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Medlem

Hehe, använder den här främst för att påminna mig om vad de olika kommandona hette

Kommer också med ett nytt kommando då:
wc - används för att räkna antal byte, rader eller ord i en fil (eller output)

ex: wc -l foo.txt -> skriver ut antalet rader i filen foo.txt

Använder det själv främst i skript, exempel från ett sådant som jag skrev för "länge" sedan:

[...] Y=`wc -l < $FILE` while [ "$X" -lt "$Y" ] do let X=X+1 head -n $X $FILE | tail -n 1 > $TMPFILE read -d ' ' GREPWORD < $TMPFILE if [ `grep -l $GREPWORD -R $AMSN/* | wc -l` -eq 0 ] then echo $GREPWORD >> $OUTPUT fi done [...]

Visa signatur

Stationär: Intel-baserad, Arch + KDE
Bärbar: Dell XPS 13, Arch + KDE

Permalänk
Inaktiv

Jag har tre som jag använder som eventuellt inte kommit med (kollade bara sammanställningen).

nfsstat - undersök statistik hos nfsserver och klient
systat - undersök alla möjliga parametrar hos systemet i realtid
ktruss (alternativt truss/par) - studera systemanrop från processer, perfekt att använda vid chrootning för att ta reda på vad som behövs flyttas in

Permalänk
Medlem

Orkar inte läsa genom hela tråden.. men "top"... fungerar som windows aktivitetshanterare.. Så man ser hur mycket CPU, minne osv de olika processerna använder

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem

ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ]]
object= link|address|neighbour|route|rule|tunnel|maddress|mroute command=show|add|delete|change|replace|flush
tcp/ip konfigureringsverktyg Se: http://www.policyrouting.org/iproute2.doc.html

lshw listar hårdvaran
lsmod listar laddade moduler
lspci listar vad som finns på PCI-bussen
lsusb listar USB-enheter

Visa signatur

Fagerja

Permalänk
Medlem

kan någon beskriva kommandot ln och katalogen /etc vad står för osv?

Permalänk
Citat:

Ursprungligen inskrivet av Mostarac
kan någon beskriva kommandot ln och katalogen /etc vad står för osv?

man ln
http://www.pathname.com/fhs/

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"

Permalänk
Medlem

Jag brukar köra en cleanare variant av find.

find / -name foo -print0 2> /dev/null

pipar ut skit till null, vill inte se "permission denied" som det blir en hel del av om du som vanlig user kör en find som utgår ifrån /.

Mer användbart skräp är exempelvis följande.

for i in `ls *.foo`; do something-to foo; done

Visa signatur

Cisco - Linux - VMWare
-- Citera mig om ni vill få återkoppling --

Permalänk
Medlem

Ville bara ge en liten "bump" till denna excilenta tråd finns mycket nyttigt att hämta

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av deegan
...
Mer användbart skräp är exempelvis följande.

for i in `ls *.foo`; do something-to foo; done

Onödigt:

for i in *.foo; do something; done

I slutändan beror ändå båda syntaxerna på om shellet stödjer globbing (ls *.foo ser till att shellet skickar alla filer som slutar på .foo som argument till ls).

Vill även ta tillbaka en sak som jag tidigare sagt om Bash, det har faktiskt Vi-mode.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Mostarac
kan någon beskriva kommandot ln och katalogen /etc vad står för osv?

ln = link man skapar länkar

/etc är där konfigurations filer finns.

Visa signatur

PSN: todddan Adda gärna

Permalänk
Hedersmedlem

Jag brukar ofta slänga på flaggan `-v` till `rm`, `mv` och `cp` så ser man vad som händer medans programmet körs; åtminstone om jag ska ta bort/flytta/kopiera många filer på en gång (särskilt över långsamma medier).

En sak som jag inte sett nämnas än är att enbart `cd` också tar en tillbaka till hemkatalogen, snabbare än `cd ~`.

För att få saker case insensitive så är det ofta något i stil med `-i` som behövs. `grep -i linux` hittar exempelvis både "Linux", "LINUX" och "linux". `find . -iname '*linux*'` gör samma sak, fast för `find` då.

`clear` — rensar terminalen (testa själva). Man kan fortfarande scrolla tillbaka för att se vad som gjorts innan. Använder jag vanligen när en terminalemulator flippar vid storleksändring. `reset` gör lite mer: återställer terminalen helt om man råkat få binär output så att allt blivit skräp. Ännu enklare alias är att trycka Ctrl+L.

Flaggan `-s` använder jag ofta till `du`: visar inte alla underkataloger utan bara en sammanfattning för de argument man kallar kommandot med.

`df -h` — Kanske stod med någonstans ovan som jag missade, men tål att köras igen. Visar vilka monteringspunkter som är aktiva samt hur mycket utrymme de har, hur mycket som är använt och ledigt, osv. `-h` gör att de visas i "human readable"-enheter.

`du -m | sort -n` — Visar storleken på alla underkataloger samt aktuell katalog man står i och ordnar i storleksordning. Som vanligt, kolla manualer för `du` och `sort` för att skräddarsy. `sort` kanske ska stå som ett eget kommandotips, då det är användbart i flera olika sammanhang.

I Bash och vissa andra skal finns möjligheten att använda "shell expansions", utöver bara `*`, t ex:

mv .xinitrc{,.bak}

expanderas till

mv .xinitrc .xinitrc.bak

Testa några `echo`-satser med `{}` för att se hur det fungerar. Väldigt användbart om man är lat, vilket man ska vara i vissa sammanhang .

`#` används för att beteckna början på en kommentar vilket är oumbärligt i skript, men även kan vara användbart vid vanlig användning av terminalen. Säg att man skrivit in ett monstruöst kommando och ska trycka Enter, men komer på att man ska kolla en annan sak igen. Ctrl+U, skriva in det andra kommandot och skriva om det långa är ju inte så kul — då är det roligare att slänga in ett `#` framför kommandot, trycka Enter för att spara det i historiken, köra det andra kommandot, sen med hjälp av ↑ återkalla det långa kommandot, ta bort # och köra. Det finns andra metoder som på sätt och vis är mer rättfram, men ovanstående är den som jag oftast kör i praktiken.

Annan sak som funkar i Bash (med standard Emacs-bindings):
`Alt+.` — Skriver ut det senaste argumentet. Används väldigt ofta av mig; den som vet vad motsvarigheten är för vi-bindings får gärna säga det, då detta är en av de största anledningarna till att jag aldrig bytt trots att Vim är min standardeditor.
`Ctrl+r` — "reverse incremental search". En smart historiefunktion. Väldigt användbart kan jag säga. Med hjälp av detta så finns det vissa kommandon jag inte skrivit i sin helhet på månader, utan nöjt mig med Ctrl+r och några karakteristiska tecken. Genom att trycka Ctrl+r igen så stegar man genom alternativen. Värt att experimentera med.

Som någon tipsade om innan så är det smidigare att använda syntaxen `grep sökord filnamn` till `grep` än att pipe:a från `cat`. Detta gäller fler kommandon som hanterar text, t ex `sort` och `wc`.

`echo *` för att lista innehållet i en katalog utan att ha `ls` tillgängligt har man faktiskt haft nytta av ibland . Partitioner som inte vill monteras och annat så sitter man helt plötsligt utan "småsaker" som `ls`.

while [ $# -ge 0 ]; do något shift done

är en användbar konstruktion i skript som gör att man kan ta många argument utan att veta hur många som förväntas, så att säga. Men det kanske inte var det denna tråden var till för…

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av phz
Massa användbara tips

Oj oj oj Jag trodde verkligen att denna tråden var stendöd.
Vet inte om det är något nytt egentligen att lägga till i första inlägget. Mycket är ju varianten och kombinationer utav kommandon som redan är med.

Man får helt enkelt läsa i tråden. Hoppas du inte tar illa vid för att jag inte lägger till det.

Tråden kanske borde få bli klistrad. Vet att inga trådar klistras i *nix-forumet. Har aldrig förstått varför dock :/

//Flogiston

Visa signatur

DELL 20" 30" 20" PLP | Svorak.a5 | Kinesis Advantage Contoured <3 | Ergodox

Permalänk
Hedersmedlem

Slängde in en länk till tråden i samlingstråden. Se till att hålla kvalitén på tråden uppe nu.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Hedersmedlem

Lite fler småsaker som har hänt att man haft användning för:

tac är kul att använda nästan mer än vad det är praktiskt, men ändå Vad kommandot gör? Läs namnet baklänges...

comm jämför filer och skriver ut (beroende på växlar) unika rader för fil 1, unika rader för fil 2 eller gemensamma rader (eller alla tre på en gång, fint uppspaltade). Har använt det i skript någon gång, men det ska väl erkännas att det inte har varit speciellt oumbärligt för mig.

Om jag vill visa innehållet i några små textfiler lite snabbt så funkar ju cat och så lista filnamnen efter varandra, men det är inte jättetydligt då man inte snabbt ser var den ena filen slutar osv. Jag brukar i stället köra grep . fil1 fil2. Detta gör att filnamnet skrivs ut framför varje rad av filens innehåll och alla tomma rader skippas så det blir än mer komprimerat. Det är lite svårt att förklara varför det är bra, men sätt GREP_OPTIONS="--color=auto" så blir det ganska snyggt (eller gör ett alias eller nåt).

Jag har satt

export PAGER="sh -c \"col -b | /usr/share/vim/vim71/macros/less.sh -c 'set ft=man nomod nolist titlestring=MANPAGE' -\""

(copy-pasteat från nåt forum) vilket gör att jag ser man-sidorna med min lilla favoriteditor Vim. Trevlig färgkodning och bättre sökningsfunktion tycker jag.

zless och zcat är två varianter av less och cat som kan läsa innehållet i GZip:ade textfiler direkt. I Debian används de ofta då de flesta filerna i /usr/share/doc är just komprimerade textfiler. Med paketet xpdf kommer också zxpdf som gör vad man tror det ska göra. Inte haft användning för det dock, så med tanke på trådnamnet skulle jag kanske inte nämnt det öht

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk

Nåt jag hade användning av för för någon vecka sedan var find . | xargs grep "nånting"

Detta söker efter ordet "nånting" i alla kataloger och filer ovanför vart du står nånstans. Mycket användbart tycker jag.

Visa signatur

Gigabyte-P35-DS4 | Intel Core 2 Quad Q6600 [3 GHz] | 2x1GB Corsair XMS-6400@800Mhz | Nvidia Geforce 460 GTX [975/2000 MHz] | Intel 320 Series 80 GB SSD | | SETI@Home Team: Sweclockers.com

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Googlah
Nåt jag hade användning av för för någon vecka sedan var find . | xargs grep "nånting"

Detta söker efter ordet "nånting" i alla kataloger och filer ovanför vart du står nånstans. Mycket användbart tycker jag.

grep -r nånting .

Visa signatur

Vill du ha svar? Citera mig gärna.

Permalänk
Hedersmedlem

while true; do lpq; sleep 5; clear; done

är något jag använt ibland för att hålla löpande koll på mina utskriftsjobb i skrivaren (främst på t ex skolan om det är många jobb i kö så man vet när man behöver gå till skrivaren och hämta sina grejer). "while true"-konstruktionen är rätt användbar.

while true; do date; sleep 1; clear; done

ger dig en fulhackklocka

Ifall man har en katalog med massa underkataloger som innehåller splittade RAR-filer döpta enligt .rar, .r01, .r02 t ex så kan man packa upp många av de samtidigt med något liknande

for i in /sökväg/till/huvudkatalog/*/*rar; do unrar e ${i}; done

Ifall filerna är döpta enligt part01.rar osv kan man byta ut *rar mot *part01.rar. Ifall man har många kataloger som är döpta efter ett konsekvent mönster kan man lätt bygga ut detta till ett skript som t ex tar bort den förra uppackade filen, packar upp en ny, kanske spelar upp den nya med mplayer om det är en videofil, eventuellt loopar om.

Att jag just skrivit skripten på en och samma rad är för att det är oftast så jag använder dem: som oneliners i en terminal.

ls -R har jag börjat använda för att rekursivt lista allt i underkataloger. Även -d är en växel till ls som jag haft nytta av ofta sen jag upptäckte den.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Bra lärobok den här tråden.

Kanske nån ambitiös Linuxare kan/vill sammanställa i en .pdf alternativt publicera en länk till ett dok som sammanfattar de viktigaste kommandonen.

Jag kan inledningsvis bidraga med följande:

alias Create an alias
awk Find and Replace text, database sort/validate/index
break Exit from a loop
builtin Run a shell builtin
cal Display a calendar
case Conditionally perform a command
cat Display the contents of a file
cd Change Directory
cfdisk Partition table manipulator for Linux
chgrp Change group ownership
chmod Change access permissions
chown Change file owner and group
chroot Run a command with a different root directory
cksum Print CRC checksum and byte counts
clear Clear terminal screen
cmp Compare two files
comm Compare two sorted files line by line
command Run a command - ignoring shell functions
continue Resume the next iteration of a loop
cp Copy one or more files to another location
cron Daemon to execute scheduled commands
crontab Schedule a command to run at a later time
csplit Split a file into context-determined pieces
cut Divide a file into several parts
date Display or change the date & time
dc Desk Calculator
dd Data Dump - Convert and copy a file
declare Declare variables and give them attributes
df Display free disk space
diff Display the differences between two files
diff3 Show differences among three files
dir Briefly list directory contents
dircolors Colour setup for `ls'
dirname Convert a full pathname to just a path
dirs Display list of remembered directories
du Estimate file space usage

echo Display message on screen
ed A line-oriented text editor (edlin)
egrep Search file(s) for lines that match an extended expression
eject Eject CD-ROM
enable Enable and disable builtin shell commands
env Display, set, or remove environment variables
eval Evaluate several commands/arguments
exec Execute a command
exit Exit the shell
expand Convert tabs to spaces
export Set an environment variable
expr Evaluate expressions
factor Print prime factors
fdformat Low-level format a floppy disk
fdisk Partition table manipulator for Linux
fgrep Search file(s) for lines that match a fixed string
find Search for files that meet a desired criteria
fmt Reformat paragraph text
fold Wrap text to fit a specified width.
for Expand words, and execute commands
format Format disks or tapes
free Display memory usage
fsck File system consistency check and repair
function Define Function Macros
gawk Find and Replace text within file(s)
getopts Parse positional parameters
grep Search file(s) for lines that match a given pattern
groups Print group names a user is in
gzip Compress or decompress named file(s)
hash Remember the full pathname of a name argument
head Output the first part of file(s)
history Command History
hostname Print or set system name
id Print user and group id's
if Conditionally perform a command
import Capture an X server screen and save the image to file
info Help info
install Copy files and set attributes
join Join lines on a common field
kill Stop a process from running
less Display output one screen at a time
let Perform arithmetic on shell variables
ln Make links between files
local Create variables
locate Find files
logname Print current login name
logout Exit a login shell
look Display lines beginning with a given string
lpc Line printer control program
lpr Off line print
lprint Print a file
lprintd Abort a print job
lprintq List the print queue
lprm Remove jobs from the print queue
ls List information about file(s)
m4 Macro processor
man Help manual
mkdir Create new folder(s)
mkfifo Make FIFOs (named pipes)
mknod Make block or character special files
more Display output one screen at a time
mount Mount a file system
mtools Manipulate MS-DOS files
mv Move or rename files or directories
nice Set the priority of a command or job
nl Number lines and write files
nohup Run a command immune to hangups
passwd Modify a user password
paste Merge lines of files
pathchk Check file name portability
ping Test a network connection
popd Restore the previous value of the current directory
pr Prepare files for printing
printcap Printer capability database
printenv Print environment variables
printf Format and print data
ps Process status
pushd Save and then change the current directory
pwd Print Working Directory
quota Display disk usage and limits
quotachec k Scan a file system for disk usage
quotactl Set disk quotas
ram ram disk device
rcp Copy files between two machines.
read read a line from standard input
readonly Mark variables/functions as readonly
remsync Synchronize remote files via email
return Exit a shell function
rm Remove files
rmdir Remove folder(s)
rpm Remote Package Manager
rsync Remote file copy (Synchronize file trees)
screen Terminal window manager
sdiff Merge two files interactively
sed Stream Editor
select Accept keyboard input
seq Print numeric sequences
set Manipulate shell variables and functions
shift Shift positional parameters
shopt Shell Options
shutdown Shutdown or restart linux
sleep Delay for a specified time
sort Sort text files
source Run commands from a file `.'
split Split a file into fixed-size pieces
su Substitute user identity
sum Print a checksum for a file
symlink Make a new name for a file
sync Synchronize data on disk with memory
tac Concatenate and write files in reverse
tail Output the last part of files
tar Tape ARchiver
tee Redirect output to multiple files
test Evaluate a conditional expression
time Measure Program running time
times User and system times
touch Change file timestamps
top List processes running on the system
tracerout e Trace Route to Host
trap Run a command when a signal is set(bourne)
tr Translate, squeeze, and/or delete characters
tsort Topological sort
tty Print filename of terminal on stdin
type Describe a command
ulimit Limit user resources
umask Users file creation mask
umount Unmount a device
unalias Remove an alias
uname Print system information
unexpand Convert spaces to tabs
uniq Uniquify files
units Convert units from one scale to another
unset Remove variable or function names
unshar Unpack shell archive scripts
until Execute commands (until error)
useradd Create new user account
usermod Modify user account
users List users currently logged in
uuencode Encode a binary file
uudecode Decode a file created by uuencode
v Verbosely list directory contents (`ls -l -b')
vdir Verbosely list directory contents (`ls -l -b')
vi Text Editor
watch Execute/display a program periodically
wc Print byte, word, and line counts
whereis Report all known instances of a command
which Locate a program file in the user's path.
while Execute commands
who Print all usernames currently logged in
whoami Print the current user id and name (`id -un')
xargs Execute utility, passing constructed argument list(s)
yes Print a string until interrupted
.period Run commands from a file

Ursäkta bristande indentering...

De flesta av dessa har ju -arg och /arg som beskriva av man-kommandot

Permalänk
Medlem

Hej!

Det fanns en tråd på 4chan om bra alias. Där flera postade väldigt bra alias de använder dagligen.

Bland det postade en snubbe ett bra script som jag tog ner, men jag undrar hur jag ska lägga in detta i min debian server. Trodde först det var ett bash script så jag sparade det som en .sh och tog chmod u+x filnamnet och la även till PATH dit. Men nu tror jag inte det är bash script, kan någon hjälpa mig identifiera detta och säga vad jag ska göra för att få detta att funka enkelt? Han sa att det var ett script.

# x - archive extractor # usage: extract <file> extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *.xz) unxz $1 ;; *) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi }

Permalänk
Medlem
Skrivet av vondran:

Hej!

Det fanns en tråd på 4chan om bra alias. Där flera postade väldigt bra alias de använder dagligen.

Bland det postade en snubbe ett bra script som jag tog ner, men jag undrar hur jag ska lägga in detta i min debian server. Trodde först det var ett bash script så jag sparade det som en .sh och tog chmod u+x filnamnet och la även till PATH dit. Men nu tror jag inte det är bash script, kan någon hjälpa mig identifiera detta och säga vad jag ska göra för att få detta att funka enkelt? Han sa att det var ett script.

# x - archive extractor # usage: extract <file> extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *.xz) unxz $1 ;; *) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi }

Det är en funktion. Testa att lägga till

extract $1

i slutet av filen. Anropa sedan scriptet med namnet på filen som du vill extrahera som argument.